From 6da4d1c1240cc6102fa093abe601e005497d38a2 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Tue, 23 May 2023 13:54:32 -0700 Subject: [PATCH 01/35] IRC is now handled with optimize.Optimizer() --- .../hcn_hnc_irc/psi4/command.sh | 1 + .../hcn_hnc_irc/psi4/hcn.psi4in | 9 + .../hcn_hnc_irc/psi4/hcn_irc.vdata_first | 69 +++ .../hcn_hnc_irc/psi4/hcn_irc.xyz | 475 +++++++++++++++++ .../hcn_hnc_irc/qchem/command.sh | 1 + .../hcn_hnc_irc/qchem/hcn.qcin | 12 + .../hcn_hnc_irc/qchem/hcn_irc.vdata_first | 69 +++ .../hcn_hnc_irc/qchem/hcn_irc.xyz | 465 +++++++++++++++++ .../hcn_hnc_irc/terachem/command.sh | 1 + .../hcn_hnc_irc/terachem/input.xyz | 5 + .../hcn_hnc_irc/terachem/tera.in | 19 + .../hcn_hnc_irc/terachem/tera_irc.vdata_first | 69 +++ .../hcn_hnc_irc/terachem/tera_irc.xyz | 480 ++++++++++++++++++ geometric/errors.py | 3 + geometric/internal.py | 26 +- geometric/nifty.py | 9 + geometric/optimize.py | 178 ++++++- geometric/params.py | 16 +- geometric/step.py | 4 +- 19 files changed, 1884 insertions(+), 27 deletions(-) create mode 100644 examples/1-simple-examples/hcn_hnc_irc/psi4/command.sh create mode 100644 examples/1-simple-examples/hcn_hnc_irc/psi4/hcn.psi4in create mode 100644 examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first create mode 100644 examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz create mode 100644 examples/1-simple-examples/hcn_hnc_irc/qchem/command.sh create mode 100644 examples/1-simple-examples/hcn_hnc_irc/qchem/hcn.qcin create mode 100644 examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.vdata_first create mode 100644 examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz create mode 100644 examples/1-simple-examples/hcn_hnc_irc/terachem/command.sh create mode 100644 examples/1-simple-examples/hcn_hnc_irc/terachem/input.xyz create mode 100644 examples/1-simple-examples/hcn_hnc_irc/terachem/tera.in create mode 100644 examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.vdata_first create mode 100644 examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz diff --git a/examples/1-simple-examples/hcn_hnc_irc/psi4/command.sh b/examples/1-simple-examples/hcn_hnc_irc/psi4/command.sh new file mode 100644 index 00000000..838167a5 --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/psi4/command.sh @@ -0,0 +1 @@ +geometric-optimize --irc yes --engine psi4 hcn.psi4in diff --git a/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn.psi4in b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn.psi4in new file mode 100644 index 00000000..639b3bad --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn.psi4in @@ -0,0 +1,9 @@ +molecule { +0 1 +C -0.1088783634 -0.6365101639 0.0043221742 +N -0.6393457902 0.4205365638 0.0052498438 +H 0.7532976101 0.2173493463 -0.0090384631 +} + +set basis 3-21g +gradient('hf') diff --git a/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first new file mode 100644 index 00000000..4eebe68b --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first @@ -0,0 +1,69 @@ + #==========================================# + #| File containing vibrational modes |# + #| generated by geomeTRIC and |# + #| readable by ForceBalance |# + #| |# + #| Octothorpes are comments |# + #| This file should be formatted like so: |# + #| (Full XYZ file for the molecule) |# + #| Number of atoms |# + #| Comment line |# + #| a1 x1 y1 z1 (xyz for atom 1) |# + #| a2 x2 y2 z2 (xyz for atom 2) |# + #| |# + #| These coords will be actually used |# + #| |# + #| (Followed by vibrational modes) |# + #| Do not use mass-weighted coordinates |# + #| ... |# + #| v (Eigenvalue in wavenumbers) |# + #| dx1 dy1 dz1 (Eigenvector for atom 1) |# + #| dx2 dy2 dz2 (Eigenvector for atom 2) |# + #| ... |# + #| (Empty line is optional) |# + #| v (Eigenvalue) |# + #| dx1 dy1 dz1 (Eigenvector for atom 1) |# + #| dx2 dy2 dz2 (Eigenvector for atom 2) |# + #| ... |# + #| and so on |# + #| |# + #| Please list freqs in increasing order |# + #==========================================# + +# +# == Summary of harmonic free energy analysis == +# Note: Rotational symmetry is set to 1 regardless of true symmetry +# 1 Imaginary Frequencies (cm^-1): 1215.806i +# Note: Free energy does not include contribution from imaginary mode(s) +# +# Free energy contributions calculated at @ 300.00 K: +# Zero-point vibrational energy: 6.5449 kcal/mol +# H (Trans + Rot + Vib = Tot): 1.4904 + 0.8942 + 0.0003 = 2.3849 kcal/mol +# S (Trans + Rot + Vib = Tot): 35.8748 + 16.3847 + 0.0010 = 52.2605 cal/mol/K +# TS (Trans + Rot + Vib = Tot): 10.7624 + 4.9154 + 0.0003 = 15.6782 kcal/mol +# +# Ground State Electronic Energy : E0 = -92.24601961 au ( -57885.2512 kcal/mol) +# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075414 au ( -6.7483 kcal/mol) +# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25677374 au ( -57891.9996 kcal/mol) +# + +3 +Iteration 0 Energy -92.24601961 + C -0.1088783634 -0.6365101639 0.0043221742 + N -0.6393457902 0.4205365638 0.0052498438 + H 0.7532976101 0.2173493463 -0.0090384631 + +-1215.805689 +-0.043211 -0.081875 0.000850 + 0.075171 0.009779 -0.000867 +-0.529695 0.839703 0.001921 + + 2125.902258 +-0.335229 0.646533 0.000685 + 0.302552 -0.563604 -0.000710 +-0.209832 0.128050 0.001704 + + 2452.329664 + 0.057422 0.023596 -0.000736 + 0.012880 0.015784 -0.000214 +-0.863194 -0.500488 0.011743 diff --git a/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz new file mode 100644 index 00000000..b5e59e1a --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz @@ -0,0 +1,475 @@ +3 +Iteration 47 Energy -92.33793710 +C -0.6422210474 -0.9099781906 0.0114131190 +N 0.0031958371 0.0561405404 -0.0000952152 +H 0.6440986667 0.8552133964 -0.0107843489 +3 +Iteration 46 Energy -92.33933336 +C -0.6314788114 -0.8965952723 0.0112340054 +N 0.0127359242 0.0708112890 -0.0002671217 +H 0.6238163437 0.8271597295 -0.0104333288 +3 +Iteration 45 Energy -92.33917743 +C -0.6292436473 -0.9046610207 0.0112467420 +N -0.0018602825 0.0758023364 -0.0001305542 +H 0.6361773863 0.8302344305 -0.0105826329 +3 +Iteration 44 Energy -92.33743134 +C -0.6331588251 -0.9168322159 0.0113456361 +N -0.0167026001 0.0719085068 0.0000496508 +H 0.6549348817 0.8462994553 -0.0108617321 +3 +Iteration 43 Energy -92.33879126 +C -0.6215460985 -0.9052539738 0.0111653232 +N -0.0102971428 0.0876622701 -0.0000929784 +H 0.6369166978 0.8189674500 -0.0105387899 +3 +Iteration 42 Energy -92.33829321 +C -0.6205773182 -0.9135975545 0.0111931847 +N -0.0248591763 0.0902078010 0.0000544860 +H 0.6505099510 0.8247654997 -0.0107141157 +3 +Iteration 41 Energy -92.33787061 +C -0.6100053665 -0.9098346700 0.0110602678 +N -0.0298951460 0.1046989161 0.0000427563 +H 0.6449739690 0.8065115001 -0.0105694692 +3 +Iteration 40 Energy -92.33730163 +C -0.6072045629 -0.9176563083 0.0110656957 +N -0.0469330080 0.1088093817 0.0002100748 +H 0.6592110275 0.8102226727 -0.0107422156 +3 +Iteration 39 Energy -92.33657304 +C -0.5968542673 -0.9169639269 0.0109493528 +N -0.0571385667 0.1227236716 0.0002575188 +H 0.6590662905 0.7956160015 -0.0106733167 +3 +Iteration 38 Energy -92.33561151 +C -0.5888333668 -0.9202581393 0.0108768481 +N -0.0729845328 0.1328259364 0.0003841932 +H 0.6668913561 0.7888079490 -0.0107274865 +3 +Iteration 37 Energy -92.33451800 +C -0.5792657822 -0.9213881539 0.0107774607 +N -0.0868184697 0.1445949872 0.0004811901 +H 0.6711577084 0.7781689128 -0.0107250960 +3 +Iteration 36 Energy -92.33329935 +C -0.5696584777 -0.9225226576 0.0106776598 +N -0.1014387425 0.1558052390 0.0005893587 +H 0.6761706767 0.7680931648 -0.0107334636 +3 +Iteration 35 Energy -92.33196390 +C -0.5594830895 -0.9228481625 0.0105679201 +N -0.1157156163 0.1672220653 0.0006928211 +H 0.6802721623 0.7570018434 -0.0107271864 +3 +Iteration 34 Energy -92.33051072 +C -0.5489648112 -0.9226807750 0.0104521603 +N -0.1300989310 0.1785150641 0.0007980179 +H 0.6841371987 0.7455414572 -0.0107166233 +3 +Iteration 33 Energy -92.32894042 +C -0.5380108356 -0.9218731638 0.0103286867 +N -0.1443661623 0.1898105404 0.0009019342 +H 0.6874504545 0.7334383696 -0.0106970660 +3 +Iteration 32 Energy -92.32725110 +C -0.5266810968 -0.9204943327 0.0101984727 +N -0.1586167289 0.2010219905 0.0010060555 +H 0.6903712822 0.7208480885 -0.0106709734 +3 +Iteration 31 Energy -92.32544059 +C -0.5149589822 -0.9185062773 0.0100611615 +N -0.1727803427 0.2121707182 0.0011095153 +H 0.6928127813 0.7077113053 -0.0106371219 +3 +Iteration 30 Energy -92.32350554 +C -0.5028765987 -0.9159356946 0.0099172271 +N -0.1868874796 0.2232147553 0.0012128402 +H 0.6948375348 0.6940966855 -0.0105965124 +3 +Iteration 29 Energy -92.32144232 +C -0.4904381451 -0.9127726765 0.0097666697 +N -0.2009060411 0.2341505449 0.0013156956 +H 0.6964176427 0.6799978777 -0.0105488104 +3 +Iteration 28 Energy -92.31924706 +C -0.4776696209 -0.9090346715 0.0096098540 +N -0.2148447832 0.2449504369 0.0014183048 +H 0.6975878606 0.6654599808 -0.0104946038 +3 +Iteration 27 Energy -92.31691634 +C -0.4645865466 -0.9047266285 0.0094469724 +N -0.2286907210 0.2556008444 0.0015205882 +H 0.6983507241 0.6505015303 -0.0104340057 +3 +Iteration 26 Energy -92.31444759 +C -0.4512115494 -0.8998626627 0.0092783375 +N -0.2424429039 0.2660827889 0.0016226231 +H 0.6987279098 0.6351556200 -0.0103674057 +3 +Iteration 25 Energy -92.31183975 +C -0.4375666939 -0.8944568287 0.0091042551 +N -0.2561005680 0.2763792075 0.0017244798 +H 0.6987407185 0.6194533675 -0.0102951800 +3 +Iteration 24 Energy -92.30909383 +C -0.4236733104 -0.8885231488 0.0089250231 +N -0.2696626589 0.2864752775 0.0018262149 +H 0.6984094258 0.6034236175 -0.0102176831 +3 +Iteration 23 Energy -92.30621348 +C -0.4095539478 -0.8820775372 0.0087409614 +N -0.2831327434 0.2963558789 0.0019279372 +H 0.6977601477 0.5870974045 -0.0101353436 +3 +Iteration 22 Energy -92.30320551 +C -0.3952293303 -0.8751344080 0.0085523628 +N -0.2965131384 0.3060084463 0.0020297299 +H 0.6968159252 0.5705017079 -0.0100485378 +3 +Iteration 21 Energy -92.30008022 +C -0.3807214710 -0.8677094511 0.0083595405 +N -0.3098112780 0.3154195364 0.0021317363 +H 0.6956062055 0.5536656609 -0.0099577219 +3 +Iteration 20 Energy -92.29685163 +C -0.3660503302 -0.8598159851 0.0081627740 +N -0.3230330424 0.3245777471 0.0022340731 +H 0.6941568292 0.5366139843 -0.0098632922 +3 +Iteration 19 Energy -92.29353743 +C -0.3512339889 -0.8514654380 0.0079623136 +N -0.3361821644 0.3334738004 0.0023368240 +H 0.6924896098 0.5193673838 -0.0097655826 +3 +Iteration 18 Energy -92.29015889 +C -0.3363011318 -0.8426796615 0.0077585736 +N -0.3492861927 0.3420914728 0.0024403648 +H 0.6906607810 0.5019639349 -0.0096653835 +3 +Iteration 17 Energy -92.28674007 +C -0.3212643734 -0.8334597114 0.0075516967 +N -0.3623392927 0.3504225092 0.0025446699 +H 0.6886771227 0.4844129484 -0.0095628117 +3 +Iteration 16 Energy -92.28330735 +C -0.3061515256 -0.8238230104 0.0073420674 +N -0.3753679340 0.3584514182 0.0026501000 +H 0.6865929161 0.4667473383 -0.0094586125 +3 +Iteration 15 Energy -92.27988837 +C -0.2909933762 -0.8137855681 0.0071300960 +N -0.3884034770 0.3661597930 0.0027570828 +H 0.6844703098 0.4490015213 -0.0093536239 +3 +Iteration 14 Energy -92.27651098 +C -0.2758287183 -0.8033659232 0.0069162920 +N -0.4014907734 0.3735239853 0.0028662175 +H 0.6823929482 0.4312176841 -0.0092489546 +3 +Iteration 13 Energy -92.27320205 +C -0.2607102837 -0.7925877447 0.0067013410 +N -0.4146968699 0.3805118058 0.0029783856 +H 0.6804806100 0.4134516852 -0.0091461717 +3 +Iteration 12 Energy -92.26998633 +C -0.2457118565 -0.7814820421 0.0064861925 +N -0.4281188413 0.3870790262 0.0030948520 +H 0.6789041543 0.3957787621 -0.0090474896 +3 +Iteration 11 Energy -92.26688539 +C -0.2309362811 -0.7700894595 0.0062721581 +N -0.4418887702 0.3931665153 0.0032173333 +H 0.6778985077 0.3782986904 -0.0089559366 +3 +Iteration 10 Energy -92.26391710 +C -0.2165309136 -0.7584663570 0.0060611086 +N -0.4561828858 0.3986941118 0.0033481255 +H 0.6777872559 0.3611479914 -0.0088756792 +3 +Iteration 9 Energy -92.26109556 +C -0.2026836251 -0.7466824013 0.0058554188 +N -0.4711907468 0.4035682394 0.0034897321 +H 0.6789478283 0.3444899081 -0.0088115960 +3 +Iteration 8 Energy -92.25843236 +C -0.1896024346 -0.7348148567 0.0056577190 +N -0.4870640904 0.4076983819 0.0036442291 +H 0.6817399815 0.3284922210 -0.0087683932 +3 +Iteration 7 Energy -92.25593985 +C -0.1774596434 -0.7229295458 0.0054701961 +N -0.5038428891 0.4110281079 0.0038123136 +H 0.6863759890 0.3132771841 -0.0087489548 +3 +Iteration 6 Energy -92.25363676 +C -0.1663461163 -0.7110658439 0.0052940249 +N -0.5214299666 0.4135525635 0.0039929456 +H 0.6928495395 0.2988890266 -0.0087534156 +3 +Iteration 5 Energy -92.25155326 +C -0.1562530791 -0.6992308070 0.0051291421 +N -0.5396053517 0.4153170643 0.0041835115 +H 0.7009318873 0.2852894890 -0.0087790987 +3 +Iteration 4 Energy -92.24973205 +C -0.1470986332 -0.6874141202 0.0049746048 +N -0.5580549541 0.4163957797 0.0043802357 +H 0.7102270438 0.2723940867 -0.0088212856 +3 +Iteration 3 Energy -92.24822476 +C -0.1386591128 -0.6755857144 0.0048278292 +N -0.5763287775 0.4169280624 0.0045775565 +H 0.7200613468 0.2600333983 -0.0088718308 +3 +Iteration 2 Energy -92.24705917 +C -0.1328370074 -0.6647572121 0.0047142760 +N -0.5944288325 0.4162440317 0.0047785832 +H 0.7323392965 0.2498889265 -0.0089593043 +3 +Iteration 1 Energy -92.24628553 +C -0.1172921969 -0.6502104511 0.0044772958 +N -0.6023553686 0.4184361704 0.0048551353 +H 0.7247210220 0.2331500269 -0.0087988762 +3 +Iteration 1 Energy -92.24576646 +C -0.1087699616 -0.6355062979 0.0043163627 +N -0.6585850029 0.4228618226 0.0054494554 +H 0.7724284211 0.2140202215 -0.0092322631 +3 +Iteration 2 Energy -92.24607189 +C -0.0930406509 -0.6220904030 0.0040825772 +N -0.6606071815 0.4243164505 0.0054648585 +H 0.7587212889 0.1991496987 -0.0090138808 +3 +Iteration 3 Energy -92.24627954 +C -0.0909855008 -0.6172410252 0.0040377608 +N -0.6650568538 0.4232336238 0.0055184937 +H 0.7611158111 0.1953831476 -0.0090226996 +3 +Iteration 4 Energy -92.24647148 +C -0.1057985380 -0.6189730296 0.0042076827 +N -0.6830411005 0.4187645042 0.0057356984 +H 0.7939130950 0.2015842716 -0.0094098263 +3 +Iteration 5 Energy -92.24762516 +C -0.0921606091 -0.6046318732 0.0039924965 +N -0.6919713163 0.4190087907 0.0058321999 +H 0.7892053819 0.1869988287 -0.0092911416 +3 +Iteration 6 Energy -92.24850390 +C -0.0955502039 -0.5977405867 0.0039977931 +N -0.7106273913 0.4161324326 0.0060494088 +H 0.8112510517 0.1829839002 -0.0095136470 +3 +Iteration 7 Energy -92.25036876 +C -0.0857711376 -0.5833705805 0.0038246600 +N -0.7244253728 0.4147700576 0.0062065304 +H 0.8152699669 0.1699762691 -0.0094976355 +3 +Iteration 8 Energy -92.25251961 +C -0.0817212875 -0.5706032494 0.0037215462 +N -0.7424967905 0.4122129415 0.0064158764 +H 0.8292915346 0.1597660541 -0.0096038676 +3 +Iteration 9 Energy -92.25517518 +C -0.0726576389 -0.5554310219 0.0035525371 +N -0.7574148250 0.4100290972 0.0065890285 +H 0.8351459204 0.1467776709 -0.0096080107 +3 +Iteration 10 Energy -92.25790422 +C -0.0733424476 -0.5443186415 0.0035088108 +N -0.7769504470 0.4066788087 0.0068180370 +H 0.8553663511 0.1390155789 -0.0097932928 +3 +Iteration 11 Energy -92.26105429 +C -0.0700415967 -0.5310997096 0.0034118040 +N -0.7943034680 0.4034409204 0.0070226667 +H 0.8694185212 0.1290345354 -0.0099009157 +3 +Iteration 12 Energy -92.26465789 +C -0.0606153347 -0.5152834580 0.0032358626 +N -0.8074959314 0.4004217021 0.0071808044 +H 0.8731847225 0.1162375020 -0.0098831121 +3 +Iteration 13 Energy -92.26686611 +C -0.0668574691 -0.5087261876 0.0032738832 +N -0.8244312920 0.3973931558 0.0073799033 +H 0.8963622177 0.1127087779 -0.0101202316 +3 +Iteration 14 Energy -92.27093019 +C -0.0577303736 -0.4928124176 0.0031007629 +N -0.8369557948 0.3938726023 0.0075330492 +H 0.8997596248 0.1003155615 -0.0101002572 +3 +Iteration 15 Energy -92.27321164 +C -0.0625325113 -0.4852913710 0.0031185994 +N -0.8526503648 0.3908324141 0.0077186372 +H 0.9202563326 0.0958347030 -0.0103036816 +3 +Iteration 16 Energy -92.27756727 +C -0.0523274295 -0.4690267849 0.0029320776 +N -0.8632646375 0.3869440096 0.0078525952 +H 0.9206655234 0.0834585215 -0.0102511179 +3 +Iteration 17 Energy -92.28188702 +C -0.0452855555 -0.4528962124 0.0027807543 +N -0.8762815790 0.3825485734 0.0080151565 +H 0.9266405910 0.0717233852 -0.0102623559 +3 +Iteration 18 Energy -92.28623560 +C -0.0400750207 -0.4369268979 0.0026501949 +N -0.8902317987 0.3778608482 0.0081892677 +H 0.9353802759 0.0604417959 -0.0103059077 +3 +Iteration 19 Energy -92.29059406 +C -0.0357235296 -0.4209604287 0.0025290399 +N -0.9043038302 0.3729566884 0.0083657081 +H 0.9451008164 0.0493794865 -0.0103611930 +3 +Iteration 20 Energy -92.29493202 +C -0.0319241807 -0.4049328746 0.0024136395 +N -0.9182173429 0.3678492782 0.0085413521 +H 0.9552149801 0.0384593426 -0.0104214367 +3 +Iteration 21 Energy -92.29921996 +C -0.0284845639 -0.3888026203 0.0023016985 +N -0.9318301901 0.3625484607 0.0087146006 +H 0.9653882104 0.0276299058 -0.0104827442 +3 +Iteration 22 Energy -92.30343206 +C -0.0252832203 -0.3725446780 0.0021917739 +N -0.9450541957 0.3570593282 0.0088844660 +H 0.9754108725 0.0168610960 -0.0105426850 +3 +Iteration 23 Energy -92.30754658 +C -0.0222441171 -0.3561470603 0.0020829792 +N -0.9578315953 0.3513853806 0.0090503008 +H 0.9851491689 0.0061374259 -0.0105997251 +3 +Iteration 24 Energy -92.31154540 +C -0.0193158867 -0.3396060194 0.0019747356 +N -0.9701199762 0.3455297111 0.0092116270 +H 0.9945093194 -0.0045479455 -0.0106528077 +3 +Iteration 25 Energy -92.31541357 +C -0.0164634954 -0.3229234851 0.0018666690 +N -0.9818873842 0.3394955533 0.0093680803 +H 1.0034243361 -0.0151963219 -0.0107011945 +3 +Iteration 26 Energy -92.31913901 +C -0.0136691048 -0.3061061686 0.0017586154 +N -0.9931141735 0.3332869128 0.0095194277 +H 1.0118567348 -0.0258049981 -0.0107444881 +3 +Iteration 27 Energy -92.32271154 +C -0.0109152566 -0.2891622569 0.0016504215 +N -1.0037795436 0.3269076185 0.0096654239 +H 1.0197682566 -0.0363696154 -0.0107822905 +3 +Iteration 28 Energy -92.32612289 +C -0.0081933291 -0.2721020843 0.0015420408 +N -1.0138699579 0.3203621894 0.0098059002 +H 1.0271367435 -0.0468843588 -0.0108143861 +3 +Iteration 29 Energy -92.32936605 +C -0.0054970653 -0.2549370889 0.0014334576 +N -1.0233734283 0.3136553981 0.0099407035 +H 1.0339439502 -0.0573425630 -0.0108406062 +3 +Iteration 30 Energy -92.33243507 +C -0.0028233331 -0.2376796381 0.0013246946 +N -1.0322802923 0.3067923769 0.0100697047 +H 1.0401770819 -0.0677369926 -0.0108608444 +3 +Iteration 31 Energy -92.33532457 +C -0.0001649921 -0.2203424655 0.0012157325 +N -1.0405774045 0.2997779698 0.0101927375 +H 1.0458158531 -0.0780597581 -0.0108749150 +3 +Iteration 32 Energy -92.33802970 +C 0.0024790245 -0.2029393892 0.0011066232 +N -1.0482570902 0.2926178817 0.0103096919 +H 1.0508515222 -0.0883027463 -0.0108827601 +3 +Iteration 33 Energy -92.34054570 +C 0.0051101865 -0.1854852275 0.0009974190 +N -1.0553104665 0.2853180359 0.0104204434 +H 1.0552737366 -0.0984570621 -0.0108843075 +3 +Iteration 34 Energy -92.34286767 +C 0.0077287751 -0.1679959916 0.0008881906 +N -1.0617291599 0.2778848900 0.0105248707 +H 1.0590738413 -0.1085131521 -0.0108795064 +3 +Iteration 35 Energy -92.34499035 +C 0.0103344523 -0.1504895567 0.0007790242 +N -1.0675038429 0.2703255614 0.0106228390 +H 1.0622428471 -0.1184602585 -0.0108683083 +3 +Iteration 36 Energy -92.34690787 +C 0.0129228817 -0.1329862527 0.0006700607 +N -1.0726270828 0.2626486064 0.0107142277 +H 1.0647776576 -0.1282866075 -0.0108507335 +3 +Iteration 37 Energy -92.34861363 +C 0.0154927488 -0.1155111238 0.0005614299 +N -1.0770844714 0.2548636581 0.0107988349 +H 1.0666651791 -0.1379767881 -0.0108267100 +3 +Iteration 38 Energy -92.35010032 +C 0.0180366199 -0.0980954596 0.0004533575 +N -1.0808631475 0.2469836451 0.0108764603 +H 1.0678999841 -0.1475124393 -0.0107962629 +3 +Iteration 39 Energy -92.35136021 +C 0.0205392789 -0.0807826109 0.0003462094 +N -1.0839475412 0.2390271240 0.0109468483 +H 1.0684817188 -0.1568687669 -0.0107595028 +3 +Iteration 40 Energy -92.35238560 +C 0.0229775439 -0.0636376565 0.0002405390 +N -1.0863141638 0.2310222378 0.0110096123 +H 1.0684100763 -0.1660088351 -0.0107165964 +3 +Iteration 41 Energy -92.35316957 +C 0.0253116668 -0.0467705375 0.0001372876 +N -1.0879259523 0.2230174527 0.0110641238 +H 1.0676877420 -0.1748711689 -0.0106678565 +3 +Iteration 42 Energy -92.35370720 +C 0.0274783791 -0.0303992677 0.0000381515 +N -1.0887083510 0.2151083555 0.0111091273 +H 1.0663034285 -0.1833333416 -0.0106137239 +3 +Iteration 43 Energy -92.35393896 +C 0.0303582075 -0.0188991813 -0.0000463310 +N -1.0858284108 0.2088107203 0.0111066665 +H 1.0605436598 -0.1885357928 -0.0105267806 +3 +Iteration 44 Energy -92.35399226 +C 0.0296668944 -0.0134655448 -0.0000638150 +N -1.0896656412 0.2069398996 0.0111572379 +H 1.0650722034 -0.1920986086 -0.0105598680 +3 +Iteration 45 Energy -92.35328515 +C 0.0402178426 -0.0085098721 -0.0002019994 +N -1.0793419675 0.2017287755 0.0110683931 +H 1.0441975814 -0.1918431572 -0.0103328388 +3 +Iteration 46 Energy -92.35405567 +C 0.0302900416 -0.0048425619 -0.0001103675 +N -1.0867128763 0.2022072014 0.0111467688 +H 1.0614962911 -0.1959888932 -0.0105028464 +3 +Iteration 47 Energy -92.35404660 +C 0.0297051106 -0.0043429087 -0.0005895657 +N -1.0898664674 0.2026016557 0.0114142610 +H 1.0652348133 -0.1968830008 -0.0102911404 +3 +Iteration 48 Energy -92.35191500 +C 0.0464428000 -0.0078165992 -0.0002980380 +N -1.0724235891 0.1995423668 0.0110227806 +H 1.0310542456 -0.1903500214 -0.0101911878 diff --git a/examples/1-simple-examples/hcn_hnc_irc/qchem/command.sh b/examples/1-simple-examples/hcn_hnc_irc/qchem/command.sh new file mode 100644 index 00000000..d85c4147 --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/qchem/command.sh @@ -0,0 +1 @@ +geometric-optimize --irc yes --engine qchem hcn.qcin diff --git a/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn.qcin b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn.qcin new file mode 100644 index 00000000..5476e2a5 --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn.qcin @@ -0,0 +1,12 @@ +$molecule +0 1 +C -0.1088783634 -0.6365101639 0.0043221742 +N -0.6393457902 0.4205365638 0.0052498438 +H 0.7532976101 0.2173493463 -0.0090384631 +$end + +$rem +jobtype force +exchange hf +basis 3-21g +$end diff --git a/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.vdata_first b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.vdata_first new file mode 100644 index 00000000..2dac3c1e --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.vdata_first @@ -0,0 +1,69 @@ + #==========================================# + #| File containing vibrational modes |# + #| generated by geomeTRIC and |# + #| readable by ForceBalance |# + #| |# + #| Octothorpes are comments |# + #| This file should be formatted like so: |# + #| (Full XYZ file for the molecule) |# + #| Number of atoms |# + #| Comment line |# + #| a1 x1 y1 z1 (xyz for atom 1) |# + #| a2 x2 y2 z2 (xyz for atom 2) |# + #| |# + #| These coords will be actually used |# + #| |# + #| (Followed by vibrational modes) |# + #| Do not use mass-weighted coordinates |# + #| ... |# + #| v (Eigenvalue in wavenumbers) |# + #| dx1 dy1 dz1 (Eigenvector for atom 1) |# + #| dx2 dy2 dz2 (Eigenvector for atom 2) |# + #| ... |# + #| (Empty line is optional) |# + #| v (Eigenvalue) |# + #| dx1 dy1 dz1 (Eigenvector for atom 1) |# + #| dx2 dy2 dz2 (Eigenvector for atom 2) |# + #| ... |# + #| and so on |# + #| |# + #| Please list freqs in increasing order |# + #==========================================# + +# +# == Summary of harmonic free energy analysis == +# Note: Rotational symmetry is set to 1 regardless of true symmetry +# 1 Imaginary Frequencies (cm^-1): 1215.913i +# Note: Free energy does not include contribution from imaginary mode(s) +# +# Free energy contributions calculated at @ 300.00 K: +# Zero-point vibrational energy: 6.5453 kcal/mol +# H (Trans + Rot + Vib = Tot): 1.4904 + 0.8942 + 0.0003 = 2.3849 kcal/mol +# S (Trans + Rot + Vib = Tot): 35.8748 + 16.3847 + 0.0010 = 52.2605 cal/mol/K +# TS (Trans + Rot + Vib = Tot): 10.7624 + 4.9154 + 0.0003 = 15.6782 kcal/mol +# +# Ground State Electronic Energy : E0 = -92.24604268 au ( -57885.2657 kcal/mol) +# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075345 au ( -6.7479 kcal/mol) +# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25679613 au ( -57892.0136 kcal/mol) +# + +3 +Iteration 0 Energy -92.24604268 + C -0.1088783634 -0.6365101639 0.0043221742 + N -0.6393457902 0.4205365638 0.0052498438 + H 0.7532976101 0.2173493463 -0.0090384631 + +-1215.913129 +-0.043292 -0.081608 0.000849 + 0.075287 0.009578 -0.000867 +-0.530338 0.839311 0.001930 + + 2126.645765 +-0.335092 0.647229 0.000680 + 0.302442 -0.563886 -0.000708 +-0.209932 0.123671 0.001725 + + 2451.888293 + 0.057521 0.023516 -0.000737 + 0.012770 0.015894 -0.000213 +-0.862850 -0.501073 0.011742 diff --git a/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz new file mode 100644 index 00000000..f758f40c --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz @@ -0,0 +1,465 @@ +3 +Iteration 45 Energy -92.33763690 +C -0.6223373544 -0.8926187813 0.0111157426 +N 0.0102136486 0.0850054426 -0.0003049631 +H 0.6171971622 0.8089890849 -0.0102772246 +3 +Iteration 44 Energy -92.33907645 +C -0.6314947494 -0.9068665445 0.0112815160 +N -0.0026229438 0.0730516525 -0.0001095398 +H 0.6391911497 0.8351906382 -0.0106384214 +3 +Iteration 43 Energy -92.33884474 +C -0.6221703818 -0.9041520035 0.0111670695 +N -0.0078287508 0.0866180286 -0.0001151509 +H 0.6350725891 0.8189097211 -0.0105183636 +3 +Iteration 42 Energy -92.33837289 +C -0.6218963402 -0.9133039923 0.0112062516 +N -0.0229695006 0.0881976866 0.0000430914 +H 0.6499392973 0.8264820519 -0.0107157882 +3 +Iteration 41 Energy -92.33800692 +C -0.6114226507 -0.9095091755 0.0110742618 +N -0.0276582267 0.1028076656 0.0000270178 +H 0.6441543339 0.8080772562 -0.0105677247 +3 +Iteration 40 Energy -92.33743436 +C -0.6065549103 -0.9161800756 0.0110517901 +N -0.0450763320 0.1095351300 0.0001864325 +H 0.6567046988 0.8080206919 -0.0107046677 +3 +Iteration 39 Energy -92.33661392 +C -0.5973103535 -0.9175233035 0.0109569168 +N -0.0577559736 0.1220566706 0.0002673424 +H 0.6601397836 0.7968423792 -0.0106907043 +3 +Iteration 38 Energy -92.33563842 +C -0.5887016938 -0.9200428080 0.0108744163 +N -0.0726865095 0.1330183136 0.0003800486 +H 0.6664616598 0.7884002406 -0.0107209099 +3 +Iteration 37 Energy -92.33454126 +C -0.5793200696 -0.9214661566 0.0107784137 +N -0.0869233188 0.1445142920 0.0004827082 +H 0.6713168449 0.7783276108 -0.0107275671 +3 +Iteration 36 Energy -92.33332326 +C -0.5696381312 -0.9224918622 0.0106772955 +N -0.1013924667 0.1558328412 0.0005887256 +H 0.6761040544 0.7680347672 -0.0107324662 +3 +Iteration 35 Energy -92.33198785 +C -0.5594937157 -0.9228629008 0.0105681042 +N -0.1157354386 0.1672054316 0.0006931145 +H 0.6803026108 0.7570332154 -0.0107276638 +3 +Iteration 34 Energy -92.33053517 +C -0.5489606544 -0.9226745554 0.0104520862 +N -0.1300869796 0.1785193981 0.0007978673 +H 0.6841210905 0.7455309035 -0.0107163985 +3 +Iteration 33 Energy -92.32896514 +C -0.5380144760 -0.9218778709 0.0103287482 +N -0.1443710865 0.1898041216 0.0009020176 +H 0.6874590190 0.7334494955 -0.0106972109 +3 +Iteration 32 Energy -92.32727618 +C -0.5266801417 -0.9204928794 0.0101984556 +N -0.1586114792 0.2010219289 0.0010059984 +H 0.6903650774 0.7208466966 -0.0106708991 +3 +Iteration 31 Energy -92.32546592 +C -0.5149610553 -0.9185088460 0.0100611960 +N -0.1727815718 0.2121667083 0.0011095472 +H 0.6928160836 0.7077178839 -0.0106371884 +3 +Iteration 30 Energy -92.32353111 +C -0.5028765621 -0.9159356428 0.0099172264 +N -0.1868841530 0.2232134840 0.0012128097 +H 0.6948341716 0.6940979050 -0.0105964812 +3 +Iteration 29 Energy -92.32146805 +C -0.4904396308 -0.9127745402 0.0097666945 +N -0.2009059321 0.2341473979 0.0013157089 +H 0.6964190195 0.6800028885 -0.0105488485 +3 +Iteration 28 Energy -92.31927293 +C -0.4776698097 -0.9090350429 0.0096098577 +N -0.2148419390 0.2449488623 0.0014182809 +H 0.6975852053 0.6654619268 -0.0104945837 +3 +Iteration 27 Energy -92.31694228 +C -0.4645878886 -0.9047283972 0.0094469952 +N -0.2286897284 0.2555982197 0.0015205895 +H 0.6983510735 0.6505059236 -0.0104340298 +3 +Iteration 26 Energy -92.31447357 +C -0.4512131088 -0.8998646996 0.0092783639 +N -0.2424423026 0.2660799294 0.0016226297 +H 0.6987288679 0.6351605165 -0.0103674387 +3 +Iteration 25 Energy -92.31186572 +C -0.4375682887 -0.8944589280 0.0091042822 +N -0.2560999789 0.2763763107 0.0017244867 +H 0.6987417241 0.6194583635 -0.0102952140 +3 +Iteration 24 Energy -92.30911977 +C -0.4236751657 -0.8885255565 0.0089250545 +N -0.2696625126 0.2864721297 0.0018262278 +H 0.6984111349 0.6034291730 -0.0102177274 +3 +Iteration 23 Energy -92.30623936 +C -0.4095560024 -0.8820801544 0.0087409959 +N -0.2831329548 0.2963524907 0.0019279551 +H 0.6977624137 0.5871034100 -0.0101353961 +3 +Iteration 22 Energy -92.30323132 +C -0.3952313611 -0.8751370117 0.0085523970 +N -0.2965132401 0.3060050425 0.0020297467 +H 0.6968180577 0.5705077154 -0.0100485888 +3 +Iteration 21 Energy -92.30010597 +C -0.3807236826 -0.8677122523 0.0083595776 +N -0.3098116747 0.3154159477 0.0021317571 +H 0.6956088138 0.5536720508 -0.0099577798 +3 +Iteration 20 Energy -92.29687731 +C -0.3660525374 -0.8598188022 0.0081628111 +N -0.3230333557 0.3245741341 0.0022340932 +H 0.6941593496 0.5366204143 -0.0098633494 +3 +Iteration 19 Energy -92.29356307 +C -0.3512362879 -0.8514683674 0.0079623522 +N -0.3361825903 0.3334700947 0.0023368457 +H 0.6924923347 0.5193740189 -0.0097656430 +3 +Iteration 18 Energy -92.29018450 +C -0.3363034037 -0.8426825855 0.0077586119 +N -0.3492864826 0.3420877610 0.0024403851 +H 0.6906633428 0.5019705708 -0.0096654421 +3 +Iteration 17 Energy -92.28676567 +C -0.3212665972 -0.8334626286 0.0075517345 +N -0.3623394160 0.3504188280 0.0025446882 +H 0.6886794697 0.4844195468 -0.0095628678 +3 +Iteration 16 Energy -92.28333294 +C -0.3061537717 -0.8238259787 0.0073421057 +N -0.3753680438 0.3584477211 0.0026501182 +H 0.6865952719 0.4667540038 -0.0094586690 +3 +Iteration 15 Energy -92.27991396 +C -0.2909955153 -0.8137884812 0.0071301328 +N -0.3884033139 0.3661561703 0.0027570977 +H 0.6844722858 0.4490080571 -0.0093536756 +3 +Iteration 14 Energy -92.27653656 +C -0.2758307773 -0.8033688096 0.0069163278 +N -0.4014904177 0.3735204319 0.0028662300 +H 0.6823946515 0.4312241239 -0.0092490029 +3 +Iteration 13 Energy -92.27322762 +C -0.2607121945 -0.7925905634 0.0067013749 +N -0.4146962168 0.3805083753 0.0029783942 +H 0.6804818678 0.4134579343 -0.0091462142 +3 +Iteration 12 Energy -92.27001184 +C -0.2457134762 -0.7814847183 0.0064862225 +N -0.4281176730 0.3870758233 0.0030948540 +H 0.6789046057 0.3957846412 -0.0090475216 +3 +Iteration 11 Energy -92.26691082 +C -0.2309374141 -0.7700919033 0.0062721818 +N -0.4418868133 0.3931636761 0.0032173250 +H 0.6778976838 0.3783039734 -0.0089559519 +3 +Iteration 10 Energy -92.26394242 +C -0.2165311168 -0.7584683582 0.0060611200 +N -0.4561795238 0.3986919070 0.0033480989 +H 0.6777840971 0.3611521974 -0.0088756641 +3 +Iteration 9 Energy -92.26112073 +C -0.2026825043 -0.7466838079 0.0058554130 +N -0.4711856006 0.4035669113 0.0034896820 +H 0.6789415615 0.3444926428 -0.0088115401 +3 +Iteration 8 Energy -92.25845736 +C -0.1895996288 -0.7348155171 0.0056576913 +N -0.4870569326 0.4076981186 0.0036441521 +H 0.6817300179 0.3284931448 -0.0087682885 +3 +Iteration 7 Energy -92.25596465 +C -0.1774553696 -0.7229295717 0.0054701495 +N -0.5038342853 0.4110287975 0.0038122164 +H 0.6863631113 0.3132765204 -0.0087488110 +3 +Iteration 6 Energy -92.25366133 +C -0.1663409038 -0.7110654423 0.0052939661 +N -0.5214207329 0.4135539249 0.0039928384 +H 0.6928350932 0.2988872637 -0.0087532496 +3 +Iteration 5 Energy -92.25157756 +C -0.1562481009 -0.6992304992 0.0051290863 +N -0.5395968663 0.4153185945 0.0041834117 +H 0.7009184237 0.2852876509 -0.0087789430 +3 +Iteration 4 Energy -92.24975604 +C -0.1470950239 -0.6874143778 0.0049745665 +N -0.5580482270 0.4163970012 0.0043801565 +H 0.7102167074 0.2723931227 -0.0088211681 +3 +Iteration 3 Energy -92.24824845 +C -0.1386574480 -0.6755869132 0.0048278165 +N -0.5763239158 0.4169288274 0.0045774999 +H 0.7200548203 0.2600338320 -0.0088717615 +3 +Iteration 2 Energy -92.24708267 +C -0.1328338396 -0.6647578634 0.0047142444 +N -0.5944239631 0.4162456032 0.0047785228 +H 0.7323312592 0.2498880063 -0.0089592122 +3 +Iteration 1 Energy -92.24630891 +C -0.1172894009 -0.6502105440 0.0044772656 +N -0.6023541529 0.4184377599 0.0048551147 +H 0.7247170103 0.2331485303 -0.0087988254 +3 +Iteration 1 Energy -92.24578956 +C -0.1087717134 -0.6355055337 0.0043163783 +N -0.6585846836 0.4228602543 0.0054494591 +H 0.7724298535 0.2140210255 -0.0092322825 +3 +Iteration 2 Energy -92.24554709 +C -0.0908697213 -0.6272247323 0.0040825062 +N -0.6472519643 0.4266604088 0.0053080535 +H 0.7431951421 0.2019400696 -0.0088570049 +3 +Iteration 3 Energy -92.24620732 +C -0.1006009905 -0.6255426664 0.0041811389 +N -0.6636911476 0.4224001594 0.0055074046 +H 0.7693655946 0.2045182532 -0.0091549886 +3 +Iteration 4 Energy -92.24694766 +C -0.0949149965 -0.6126558008 0.0040595874 +N -0.6803129780 0.4204383105 0.0056981600 +H 0.7803014310 0.1935932364 -0.0092241925 +3 +Iteration 5 Energy -92.24815325 +C -0.0900727893 -0.5998083068 0.0039474420 +N -0.6992481506 0.4183731191 0.0059146816 +H 0.7943943964 0.1828109339 -0.0093285687 +3 +Iteration 6 Energy -92.24983452 +C -0.0844997167 -0.5863647771 0.0038245596 +N -0.7175092664 0.4162315686 0.0061241863 +H 0.8070824396 0.1715089547 -0.0094151910 +3 +Iteration 7 Energy -92.25197311 +C -0.0792731646 -0.5727490933 0.0037046721 +N -0.7356980715 0.4137979355 0.0063342465 +H 0.8200446926 0.1603269040 -0.0095053636 +3 +Iteration 8 Energy -92.25454028 +C -0.0742300126 -0.5589027942 0.0035857267 +N -0.7536373447 0.4110994427 0.0065427993 +H 0.8329408138 0.1491790977 -0.0095949712 +3 +Iteration 9 Energy -92.25749827 +C -0.0693936818 -0.5448396494 0.0034680430 +N -0.7713058101 0.4081368066 0.0067496090 +H 0.8457729484 0.1380785890 -0.0096840971 +3 +Iteration 10 Energy -92.26080286 +C -0.0647696862 -0.5305670100 0.0033517151 +N -0.7886830317 0.4049152174 0.0069544282 +H 0.8585261743 0.1270275388 -0.0097725884 +3 +Iteration 11 Energy -92.26440546 +C -0.0603478461 -0.5160870358 0.0032366417 +N -0.8057450809 0.4014421821 0.0071569606 +H 0.8711663835 0.1160205998 -0.0098600475 +3 +Iteration 12 Energy -92.26825531 +C -0.0561171929 -0.5014020397 0.0031227136 +N -0.8224712113 0.3977251624 0.0073569451 +H 0.8836618607 0.1050526236 -0.0099461038 +3 +Iteration 13 Energy -92.27230139 +C -0.0520632355 -0.4865137987 0.0030097804 +N -0.8388400970 0.3937715724 0.0075541144 +H 0.8959767891 0.0941179725 -0.0100303399 +3 +Iteration 14 Energy -92.27649413 +C -0.0481736810 -0.4714253922 0.0028977220 +N -0.8548329534 0.3895883176 0.0077482313 +H 0.9080800909 0.0832128208 -0.0101123985 +3 +Iteration 15 Energy -92.28078668 +C -0.0444332417 -0.4561396691 0.0027863845 +N -0.8704293723 0.3851820423 0.0079390421 +H 0.9199360705 0.0723333730 -0.0101918717 +3 +Iteration 16 Energy -92.28513593 +C -0.0408291534 -0.4406608318 0.0026756476 +N -0.8856109980 0.3805589102 0.0081263176 +H 0.9315136079 0.0614776678 -0.0102684103 +3 +Iteration 17 Energy -92.28950307 +C -0.0373502825 -0.4249940573 0.0025654134 +N -0.9003590245 0.3757244067 0.0083098271 +H 0.9427827634 0.0506453969 -0.0103416856 +3 +Iteration 18 Energy -92.29385379 +C -0.0339819498 -0.4091443504 0.0024555446 +N -0.9146547851 0.3706842519 0.0084893400 +H 0.9537101914 0.0398358447 -0.0104113298 +3 +Iteration 19 Energy -92.29815844 +C -0.0307200709 -0.3931199094 0.0023460344 +N -0.9284892863 0.3654444218 0.0086647306 +H 0.9642828136 0.0290512338 -0.0104772101 +3 +Iteration 20 Energy -92.30239141 +C -0.0275537043 -0.3769274963 0.0022367941 +N -0.9418464601 0.3600101334 0.0088357991 +H 0.9744736209 0.0182931091 -0.0105390383 +3 +Iteration 21 Energy -92.30653105 +C -0.0244718942 -0.3605742288 0.0021277370 +N -0.9547104298 0.3543863416 0.0090023491 +H 0.9842557805 0.0075636334 -0.0105965312 +3 +Iteration 22 Energy -92.31055916 +C -0.0214640306 -0.3440677579 0.0020187821 +N -0.9670657119 0.3485778207 0.0091641894 +H 0.9936031989 -0.0031343166 -0.0106494166 +3 +Iteration 23 Energy -92.31446050 +C -0.0185179313 -0.3274159483 0.0019098327 +N -0.9788955542 0.3425890523 0.0093211161 +H 1.0024869420 -0.0137973578 -0.0106973940 +3 +Iteration 24 Energy -92.31822248 +C -0.0156263080 -0.3106280494 0.0018008517 +N -0.9901871493 0.3364247161 0.0094729678 +H 1.0108869139 -0.0244209205 -0.0107402645 +3 +Iteration 25 Energy -92.32183461 +C -0.0127831153 -0.2937138949 0.0016918182 +N -1.0009289396 0.3300895559 0.0096195960 +H 1.0187855114 -0.0349999147 -0.0107778593 +3 +Iteration 26 Energy -92.32528808 +C -0.0099788110 -0.2766832639 0.0015826731 +N -1.0111064745 0.3235879466 0.0097608228 +H 1.0261587420 -0.0455289364 -0.0108099410 +3 +Iteration 27 Energy -92.32857549 +C -0.0072044297 -0.2595466985 0.0014733669 +N -1.0207054831 0.3169242504 0.0098964720 +H 1.0329833693 -0.0560018057 -0.0108362840 +3 +Iteration 28 Energy -92.33169056 +C -0.0044590570 -0.2423161799 0.0013639448 +N -1.0297185894 0.3101037151 0.0100264388 +H 1.0392511029 -0.0664117890 -0.0108568287 +3 +Iteration 29 Energy -92.33462770 +C -0.0017341881 -0.2250034877 0.0012543682 +N -1.0381319146 0.3031308410 0.0101505507 +H 1.0449395592 -0.0767516071 -0.0108713640 +3 +Iteration 30 Energy -92.33738191 +C 0.0009693137 -0.2076219147 0.0011447077 +N -1.0459393510 0.2960113592 0.0102687145 +H 1.0500434938 -0.0870136982 -0.0108798673 +3 +Iteration 31 Energy -92.33994828 +C 0.0036585245 -0.1901850296 0.0010349485 +N -1.0531275941 0.2887502269 0.0103807620 +H 1.0545425262 -0.0971894511 -0.0108821556 +3 +Iteration 32 Energy -92.34232194 +C 0.0063314592 -0.1727081589 0.0009251830 +N -1.0596903570 0.2813539136 0.0104865945 +H 1.0584323543 -0.1072700085 -0.0108782227 +3 +Iteration 33 Energy -92.34449768 +C 0.0089891654 -0.1552078593 0.0008154760 +N -1.0656178449 0.2738289491 0.0105860750 +H 1.0617021360 -0.1172453436 -0.0108679962 +3 +Iteration 34 Energy -92.34646974 +C 0.0116283147 -0.1377031919 0.0007059518 +N -1.0709020687 0.2661832719 0.0106790795 +H 1.0643472105 -0.1271043338 -0.0108514764 +3 +Iteration 35 Energy -92.34823162 +C 0.0142503321 -0.1202172464 0.0005967011 +N -1.0755272909 0.2584254023 0.0107653967 +H 1.0663504153 -0.1368324097 -0.0108285429 +3 +Iteration 36 Energy -92.34977615 +C 0.0168408101 -0.1027794331 0.0004880170 +N -1.0794864539 0.2505685714 0.0108448884 +H 1.0677191003 -0.1464133920 -0.0107993505 +3 +Iteration 37 Energy -92.35109554 +C 0.0193948512 -0.0854303489 0.0003801402 +N -1.0827551885 0.2426283875 0.0109172163 +H 1.0684337938 -0.1558222924 -0.0107638017 +3 +Iteration 38 Energy -92.35218178 +C 0.0218841925 -0.0682340512 0.0002736749 +N -1.0853113797 0.2346330303 0.0109820088 +H 1.0685006437 -0.1650232329 -0.0107221288 +3 +Iteration 39 Energy -92.35302727 +C 0.0242676003 -0.0513053494 0.0001696008 +N -1.0871094805 0.2266321975 0.0110385390 +H 1.0679153368 -0.1739511019 -0.0106745849 +3 +Iteration 40 Energy -92.35362536 +C 0.0264510139 -0.0349190986 0.0000702132 +N -1.0880524688 0.2187473983 0.0110851860 +H 1.0666749114 -0.1824525534 -0.0106218443 +3 +Iteration 41 Energy -92.35397055 +C 0.0281935150 -0.0199879846 -0.0000176482 +N -1.0878859926 0.2113908698 0.0111172695 +H 1.0647659340 -0.1900271390 -0.0105660664 +3 +Iteration 42 Energy -92.35405194 +C 0.0280776781 -0.0129738643 -0.0000487073 +N -1.0862233530 0.2077198116 0.0111160117 +H 1.0632191314 -0.1933702011 -0.0105337495 +3 +Iteration 43 Energy -92.35406603 +C 0.0315050651 -0.0051099825 -0.0001224180 +N -1.0885880971 0.2040981166 0.0111585547 +H 1.0621564885 -0.1976123880 -0.0105025818 +3 +Iteration 44 Energy -92.35408279 +C 0.0305455113 -0.0049309397 -0.0001127530 +N -1.0870903928 0.2038251420 0.0111434394 +H 1.0616183380 -0.1975184560 -0.0104971315 +3 +Iteration 45 Energy -92.35281029 +C 0.0159926349 -0.0022126553 0.0000338150 +N -1.0991598068 0.2060758796 0.0112650124 +H 1.0882406284 -0.2024874781 -0.0107652726 +3 +Iteration 46 Energy -92.35391359 +C 0.0255278067 -0.0040671233 -0.0000618793 +N -1.0927197619 0.2049085750 0.0111999879 +H 1.0722654117 -0.1994657055 -0.0106045538 +3 +Iteration 47 Energy -92.35404801 +C 0.0312170390 -0.0050563086 -0.0001195166 +N -1.0843991809 0.2033202101 0.0111163455 +H 1.0582555984 -0.1968881553 -0.0104632740 +3 +Iteration 48 Energy -92.35241670 +C 0.0141123135 -0.0019141429 0.0000529954 +N -1.1016835621 0.2065741904 0.0112903062 +H 1.0926447050 -0.2032843014 -0.0108097468 diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/command.sh b/examples/1-simple-examples/hcn_hnc_irc/terachem/command.sh new file mode 100644 index 00000000..ee46b1ce --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/terachem/command.sh @@ -0,0 +1 @@ +geometric-optimize --irc yes --engine tera tera.in diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/input.xyz b/examples/1-simple-examples/hcn_hnc_irc/terachem/input.xyz new file mode 100644 index 00000000..09523a4c --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/terachem/input.xyz @@ -0,0 +1,5 @@ +3 + +C -0.1088783634 -0.6365101639 0.0043221742 +N -0.6393457902 0.4205365638 0.0052498438 +H 0.7532976101 0.2173493463 -0.0090384631 diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera.in b/examples/1-simple-examples/hcn_hnc_irc/terachem/tera.in new file mode 100644 index 00000000..d96db37c --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/terachem/tera.in @@ -0,0 +1,19 @@ +coordinates input.xyz +charge 0 +spinmult 1 +run gradient +method hf +basis 3-21g + +# SCF options +purify no +convthre 1e-6 +maxit 50 +scf diis + +# Thresholds and precision +#threall 1e-14 +precision mixed +threspdp 1e-4 +dftgrid 3 +end diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.vdata_first b/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.vdata_first new file mode 100644 index 00000000..43868e48 --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.vdata_first @@ -0,0 +1,69 @@ + #==========================================# + #| File containing vibrational modes |# + #| generated by geomeTRIC and |# + #| readable by ForceBalance |# + #| |# + #| Octothorpes are comments |# + #| This file should be formatted like so: |# + #| (Full XYZ file for the molecule) |# + #| Number of atoms |# + #| Comment line |# + #| a1 x1 y1 z1 (xyz for atom 1) |# + #| a2 x2 y2 z2 (xyz for atom 2) |# + #| |# + #| These coords will be actually used |# + #| |# + #| (Followed by vibrational modes) |# + #| Do not use mass-weighted coordinates |# + #| ... |# + #| v (Eigenvalue in wavenumbers) |# + #| dx1 dy1 dz1 (Eigenvector for atom 1) |# + #| dx2 dy2 dz2 (Eigenvector for atom 2) |# + #| ... |# + #| (Empty line is optional) |# + #| v (Eigenvalue) |# + #| dx1 dy1 dz1 (Eigenvector for atom 1) |# + #| dx2 dy2 dz2 (Eigenvector for atom 2) |# + #| ... |# + #| and so on |# + #| |# + #| Please list freqs in increasing order |# + #==========================================# + +# +# == Summary of harmonic free energy analysis == +# Note: Rotational symmetry is set to 1 regardless of true symmetry +# 1 Imaginary Frequencies (cm^-1): 1216.114i +# Note: Free energy does not include contribution from imaginary mode(s) +# +# Free energy contributions calculated at @ 300.00 K: +# Zero-point vibrational energy: 6.5456 kcal/mol +# H (Trans + Rot + Vib = Tot): 1.4904 + 0.8942 + 0.0003 = 2.3849 kcal/mol +# S (Trans + Rot + Vib = Tot): 35.8748 + 16.3847 + 0.0010 = 52.2605 cal/mol/K +# TS (Trans + Rot + Vib = Tot): 10.7624 + 4.9154 + 0.0003 = 15.6782 kcal/mol +# +# Ground State Electronic Energy : E0 = -92.24604268 au ( -57885.2657 kcal/mol) +# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075304 au ( -6.7476 kcal/mol) +# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25679571 au ( -57892.0134 kcal/mol) +# + +3 +Iteration 0 Energy -92.24604268 + C -0.1088783634 -0.6365101639 0.0043221742 + N -0.6393457902 0.4205365638 0.0052498438 + H 0.7532976101 0.2173493463 -0.0090384631 + +-1216.114288 +-0.043268 -0.081665 0.000849 + 0.075262 0.009624 -0.000867 +-0.530281 0.839344 0.001929 + + 2126.646376 +-0.334949 0.646986 0.000680 + 0.302429 -0.563679 -0.000708 +-0.211457 0.123703 0.001742 + + 2452.069262 + 0.057558 0.023438 -0.000737 + 0.012740 0.015959 -0.000213 +-0.862862 -0.501050 0.011742 diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz b/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz new file mode 100644 index 00000000..5502ca66 --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz @@ -0,0 +1,480 @@ +3 +Iteration 49 Energy -92.33720861 +C -0.6320188782 -0.8810958654 0.0111684786 +N 0.0364737305 0.0678300376 -0.0005128898 +H 0.6006186042 0.8146415740 -0.0101220339 +3 +Iteration 48 Energy -92.33964638 +C -0.6410998519 -0.8956874812 0.0113350013 +N 0.0238216346 0.0556233728 -0.0003183180 +H 0.6223516739 0.8414398546 -0.0104831284 +3 +Iteration 47 Energy -92.33948677 +C -0.6396865524 -0.8996350268 0.0113377435 +N 0.0164966480 0.0586142880 -0.0002520235 +H 0.6282633609 0.8423964850 -0.0105521651 +3 +Iteration 46 Energy -92.33920555 +C -0.6306764618 -0.8953440907 0.0112194677 +N 0.0141089138 0.0721142534 -0.0002881364 +H 0.6216410045 0.8246055835 -0.0103977763 +3 +Iteration 45 Energy -92.33919428 +C -0.6293384422 -0.9048309126 0.0112485613 +N -0.0018331339 0.0758725588 -0.0001311747 +H 0.6362450326 0.8303341001 -0.0105838317 +3 +Iteration 44 Energy -92.33744884 +C -0.6330267006 -0.9169329936 0.0113446562 +N -0.0169498166 0.0721422114 0.0000512764 +H 0.6550499736 0.8461665284 -0.0108623777 +3 +Iteration 43 Energy -92.33881040 +C -0.6215646892 -0.9050684242 0.0111646713 +N -0.0099280121 0.0876494860 -0.0000969549 +H 0.6365661578 0.8187946843 -0.0105341615 +3 +Iteration 42 Energy -92.33832352 +C -0.6206740121 -0.9135583502 0.0111940611 +N -0.0246578812 0.0900826011 0.0000528624 +H 0.6504053498 0.8248514953 -0.0107133685 +3 +Iteration 41 Energy -92.33789829 +C -0.6101139804 -0.9097393509 0.0110610159 +N -0.0295809832 0.1045650999 0.0000399385 +H 0.6447684201 0.8065499972 -0.0105673995 +3 +Iteration 40 Energy -92.33733994 +C -0.6071595278 -0.9174957481 0.0110644634 +N -0.0467153103 0.1088385961 0.0002075603 +H 0.6589482947 0.8100328982 -0.0107384688 +3 +Iteration 39 Energy -92.33659971 +C -0.5969296364 -0.9170468688 0.0109505590 +N -0.0572167653 0.1226160092 0.0002588698 +H 0.6592198583 0.7958066058 -0.0106758739 +3 +Iteration 38 Energy -92.33563529 +C -0.5888144652 -0.9202252214 0.0108764898 +N -0.0729355630 0.1328526000 0.0003835350 +H 0.6668234847 0.7887483675 -0.0107264699 +3 +Iteration 37 Energy -92.33454131 +C -0.5792763380 -0.9214025412 0.0107776425 +N -0.0868347520 0.1445785139 0.0004814440 +H 0.6711845465 0.7781997735 -0.0107255316 +3 +Iteration 36 Energy -92.33332306 +C -0.5696568299 -0.9225192133 0.0106776259 +N -0.1014296763 0.1558068621 0.0005892521 +H 0.6761599627 0.7680880974 -0.0107333231 +3 +Iteration 35 Energy -92.33198794 +C -0.5594868642 -0.9228526876 0.0105679822 +N -0.1157179121 0.1672160485 0.0006928740 +H 0.6802782329 0.7570123852 -0.0107273013 +3 +Iteration 34 Energy -92.33053517 +C -0.5489660963 -0.9226817056 0.0104521786 +N -0.1300953556 0.1785128106 0.0007979892 +H 0.6841349083 0.7455446412 -0.0107166129 +3 +Iteration 33 Energy -92.32896523 +C -0.5380136621 -0.9218762545 0.0103287319 +N -0.1443657463 0.1898062427 0.0009019494 +H 0.6874528649 0.7334457580 -0.0106971264 +3 +Iteration 32 Energy -92.32727625 +C -0.5266830730 -0.9204962728 0.0101985033 +N -0.1586141289 0.2010190142 0.0010060408 +H 0.6903706583 0.7208530048 -0.0106709892 +3 +Iteration 31 Energy -92.32546604 +C -0.5149617182 -0.9185092260 0.0100612050 +N -0.1727791255 0.2121668712 0.0011095198 +H 0.6928143002 0.7077181010 -0.0106371699 +3 +Iteration 30 Energy -92.32353123 +C -0.5028789790 -0.9159382211 0.0099172647 +N -0.1868854164 0.2232114107 0.0012128331 +H 0.6948378520 0.6941025566 -0.0105965429 +3 +Iteration 29 Energy -92.32146821 +C -0.4904408717 -0.9127756568 0.0097667132 +N -0.2009045161 0.2341468774 0.0013156959 +H 0.6964188443 0.6800045256 -0.0105488542 +3 +Iteration 28 Energy -92.31927310 +C -0.4776723064 -0.9090376279 0.0096098969 +N -0.2148431515 0.2449468225 0.0014183036 +H 0.6975889144 0.6654665516 -0.0104946456 +3 +Iteration 27 Energy -92.31694248 +C -0.4645893119 -0.9047297135 0.0094470169 +N -0.2286891227 0.2555972097 0.0015205875 +H 0.6983518912 0.6505082499 -0.0104340495 +3 +Iteration 26 Energy -92.31447378 +C -0.4512145402 -0.8998660314 0.0092783857 +N -0.2424416799 0.2660789407 0.0016226275 +H 0.6987296766 0.6351628368 -0.0103674583 +3 +Iteration 25 Energy -92.31186596 +C -0.4375697211 -0.8944602707 0.0091043040 +N -0.2560993290 0.2763753515 0.0017244840 +H 0.6987425066 0.6194606655 -0.0102952331 +3 +Iteration 24 Energy -92.30912002 +C -0.4236765916 -0.8885269056 0.0089250763 +N -0.2696618226 0.2864712086 0.0018262245 +H 0.6984118706 0.6034314432 -0.0102177459 +3 +Iteration 23 Energy -92.30623964 +C -0.4095574158 -0.8820815070 0.0087410176 +N -0.2831322148 0.2963516144 0.0019279511 +H 0.6977630871 0.5871056389 -0.0101354137 +3 +Iteration 22 Energy -92.30323161 +C -0.3952327469 -0.8751383572 0.0085524184 +N -0.2965124198 0.3060042282 0.0020297415 +H 0.6968186232 0.5705098752 -0.0100486050 +3 +Iteration 21 Energy -92.30010627 +C -0.3807250458 -0.8677135993 0.0083595987 +N -0.3098107849 0.3154151920 0.0021317509 +H 0.6956092872 0.5536741534 -0.0099577947 +3 +Iteration 20 Energy -92.29687763 +C -0.3660538536 -0.8598201336 0.0081628316 +N -0.3230323481 0.3245734622 0.0022340853 +H 0.6941596582 0.5366224176 -0.0098633620 +3 +Iteration 19 Energy -92.29356340 +C -0.3512375662 -0.8514696940 0.0079623723 +N -0.3361814864 0.3334694978 0.0023368364 +H 0.6924925092 0.5193759425 -0.0097656538 +3 +Iteration 18 Energy -92.29018484 +C -0.3363045697 -0.8426838502 0.0077586304 +N -0.3492851360 0.3420873039 0.0024403725 +H 0.6906631623 0.5019722925 -0.0096654480 +3 +Iteration 17 Energy -92.28676601 +C -0.3212676332 -0.8334638263 0.0075517513 +N -0.3623377936 0.3504185289 0.0025446719 +H 0.6886788833 0.4844210436 -0.0095628683 +3 +Iteration 16 Energy -92.28333329 +C -0.3061546360 -0.8238270883 0.0073421202 +N -0.3753660687 0.3584476167 0.0026500971 +H 0.6865941611 0.4667552178 -0.0094586625 +3 +Iteration 15 Energy -92.27991430 +C -0.2909961634 -0.8137894841 0.0071301445 +N -0.3884009081 0.3661562987 0.0027570708 +H 0.6844705280 0.4490089315 -0.0093536604 +3 +Iteration 14 Energy -92.27653690 +C -0.2758311762 -0.8033696987 0.0069163363 +N -0.4014875319 0.3735208221 0.0028661967 +H 0.6823921646 0.4312246228 -0.0092489780 +3 +Iteration 13 Energy -92.27322794 +C -0.2607123495 -0.7925913571 0.0067013802 +N -0.4146928809 0.3805090276 0.0029783548 +H 0.6804786869 0.4134580757 -0.0091461801 +3 +Iteration 12 Energy -92.27001216 +C -0.2457134692 -0.7814854730 0.0064862259 +N -0.4281140548 0.3870766829 0.0030948105 +H 0.6789009805 0.3957845363 -0.0090474815 +3 +Iteration 11 Energy -92.26691113 +C -0.2309373762 -0.7700926990 0.0062721850 +N -0.4418831659 0.3931646615 0.0032172806 +H 0.6778939986 0.3783037837 -0.0089559107 +3 +Iteration 10 Energy -92.26394272 +C -0.2165312927 -0.7584693150 0.0060611264 +N -0.4561762426 0.3986928656 0.0033480586 +H 0.6777809918 0.3611521956 -0.0088756301 +3 +Iteration 9 Energy -92.26112103 +C -0.2026832296 -0.7466850773 0.0058554268 +N -0.4711831491 0.4035676481 0.0034896518 +H 0.6789398352 0.3444931753 -0.0088115237 +3 +Iteration 8 Energy -92.25845765 +C -0.1896012929 -0.7348172682 0.0056577176 +N -0.4870557301 0.4076984250 0.0036441375 +H 0.6817304795 0.3284945894 -0.0087683002 +3 +Iteration 7 Energy -92.25596493 +C -0.1774580306 -0.7229318385 0.0054701890 +N -0.5038342461 0.4110286580 0.0038122166 +H 0.6863657332 0.3132789267 -0.0087488507 +3 +Iteration 6 Energy -92.25366158 +C -0.1663443262 -0.7110681503 0.0052940160 +N -0.5214213982 0.4135534734 0.0039928478 +H 0.6928391809 0.2988904231 -0.0087533088 +3 +Iteration 5 Energy -92.25157779 +C -0.1562517550 -0.6992334759 0.0051291399 +N -0.5395974792 0.4153180950 0.0041834207 +H 0.7009226907 0.2852911271 -0.0087790057 +3 +Iteration 4 Energy -92.24975627 +C -0.1470981562 -0.6874173917 0.0049746146 +N -0.5580479255 0.4163968067 0.0043801541 +H 0.7102195382 0.2723963312 -0.0088212139 +3 +Iteration 3 Energy -92.24824868 +C -0.1386602332 -0.6755900859 0.0048278616 +N -0.5763226417 0.4169288695 0.0045774857 +H 0.7200563313 0.2600369626 -0.0088717924 +3 +Iteration 2 Energy -92.24708291 +C -0.1328336144 -0.6647596963 0.0047142504 +N -0.5944199169 0.4162465478 0.0047784742 +H 0.7323269879 0.2498888947 -0.0089591696 +3 +Iteration 1 Energy -92.24630905 +C -0.1172922879 -0.6502123990 0.0044773057 +N -0.6023562251 0.4184374342 0.0048551389 +H 0.7247219696 0.2331507110 -0.0087988897 +3 +Iteration 1 Energy -92.24578960 +C -0.1087700071 -0.6355047861 0.0043163562 +N -0.6585846778 0.4228608194 0.0054494564 +H 0.7724281414 0.2140197129 -0.0092322577 +3 +Iteration 2 Energy -92.24554446 +C -0.0905298207 -0.6267694784 0.0040766923 +N -0.6477449420 0.4266605892 0.0053134421 +H 0.7433482193 0.2014846354 -0.0088565794 +3 +Iteration 3 Energy -92.24622681 +C -0.1002007022 -0.6249932906 0.0041742309 +N -0.6643436336 0.4224187969 0.0055144519 +H 0.7696177923 0.2039502399 -0.0091551279 +3 +Iteration 4 Energy -92.24698842 +C -0.0948614868 -0.6122022201 0.0040569121 +N -0.6813390211 0.4203723764 0.0057096808 +H 0.7812739644 0.1932055900 -0.0092330380 +3 +Iteration 5 Energy -92.24820710 +C -0.0872377815 -0.5982414781 0.0039092281 +N -0.6986260626 0.4188817799 0.0059055366 +H 0.7909373005 0.1807354444 -0.0092812098 +3 +Iteration 6 Energy -92.24979487 +C -0.0873356925 -0.5875368284 0.0038609647 +N -0.7192489668 0.4158518586 0.0061449550 +H 0.8116581158 0.1730607160 -0.0094723649 +3 +Iteration 7 Energy -92.25144367 +C -0.0735359059 -0.5725052430 0.0036408271 +N -0.7286735371 0.4153078725 0.0062504938 +H 0.8072828995 0.1585731167 -0.0093577660 +3 +Iteration 8 Energy -92.25396431 +C -0.0714653050 -0.5601190654 0.0035611076 +N -0.7478188515 0.4123417747 0.0064734647 +H 0.8243576130 0.1491530369 -0.0095010174 +3 +Iteration 9 Energy -92.25686147 +C -0.0679049276 -0.5466449994 0.0034600878 +N -0.7661996048 0.4093203120 0.0066883324 +H 0.8391779889 0.1387004337 -0.0096148653 +3 +Iteration 10 Energy -92.26011780 +C -0.0646558187 -0.5329532966 0.0033614678 +N -0.7844611949 0.4060394391 0.0069030929 +H 0.8541904702 0.1282896036 -0.0097310058 +3 +Iteration 11 Energy -92.26366759 +C -0.0602804562 -0.5185368106 0.0032471951 +N -0.8016214494 0.4026193391 0.0071064550 +H 0.8669753620 0.1172932177 -0.0098200952 +3 +Iteration 12 Energy -92.26747807 +C -0.0570718133 -0.5042818979 0.0031464219 +N -0.8190644167 0.3989032702 0.0073142718 +H 0.8812096865 0.1067543739 -0.0099271388 +3 +Iteration 13 Energy -92.27148329 +C -0.0524276921 -0.4892468460 0.0030263603 +N -0.8351254862 0.3950272360 0.0075077185 +H 0.8926266348 0.0955953562 -0.0100005239 +3 +Iteration 14 Energy -92.27564617 +C -0.0496907216 -0.4746330882 0.0029290898 +N -0.8519261306 0.3908765476 0.0077105163 +H 0.9066903087 0.0851322868 -0.0101060511 +3 +Iteration 15 Energy -92.27989361 +C -0.0444411981 -0.4589602477 0.0027994705 +N -0.8665241799 0.3865501128 0.0078900446 +H 0.9160388345 0.0737858811 -0.0101559602 +3 +Iteration 16 Energy -92.28315170 +C -0.0499114082 -0.4492904524 0.0028147077 +N -0.8841230463 0.3828622704 0.0080994357 +H 0.9391079109 0.0678039282 -0.0103805884 +3 +Iteration 17 Energy -92.28754456 +C -0.0423148201 -0.4329057571 0.0026561490 +N -0.8959388658 0.3781820017 0.0082501787 +H 0.9433271423 0.0560995016 -0.0103727728 +3 +Iteration 18 Energy -92.29189869 +C -0.0372827103 -0.4167692060 0.0025267695 +N -0.9092983549 0.3732190239 0.0084191004 +H 0.9516545217 0.0449259283 -0.0104123150 +3 +Iteration 19 Energy -92.29621452 +C -0.0336182369 -0.4007684172 0.0024129669 +N -0.9230933462 0.3680656091 0.0085936608 +H 0.9617850396 0.0340785542 -0.0104730728 +3 +Iteration 20 Energy -92.30047637 +C -0.0297153782 -0.3844907236 0.0022952821 +N -0.9361792597 0.3626902542 0.0087614922 +H 0.9709680945 0.0231762156 -0.0105232195 +3 +Iteration 21 Energy -92.30465263 +C -0.0267934351 -0.3682847988 0.0021886517 +N -0.9494021456 0.3571696936 0.0089314903 +H 0.9812690372 0.0124908514 -0.0105865871 +3 +Iteration 22 Energy -92.30872742 +C -0.0229035574 -0.3516582135 0.0020695009 +N -0.9613864508 0.3513925806 0.0090891302 +H 0.9893634647 0.0016413791 -0.0106250762 +3 +Iteration 23 Energy -92.31267555 +C -0.0209095887 -0.3353465251 0.0019725280 +N -0.9741433842 0.3455819754 0.0092553710 +H 1.0001264294 -0.0088597041 -0.0106943441 +3 +Iteration 24 Energy -92.31648025 +C -0.0162917473 -0.3183173951 0.0018435637 +N -0.9844241345 0.3393768537 0.0093963598 +H 1.0057893383 -0.0196837124 -0.0107063686 +3 +Iteration 25 Energy -92.32012320 +C -0.0157364777 -0.3021078634 0.0017627897 +N -0.9970018033 0.3334139721 0.0095613426 +H 1.0178117375 -0.0299303624 -0.0107905775 +3 +Iteration 26 Energy -92.32321344 +C -0.0072668563 -0.2854662757 0.0015935029 +N -1.0029169268 0.3270552178 0.0096553133 +H 1.0152572396 -0.0402131959 -0.0107152613 +3 +Iteration 27 Energy -92.32664239 +C -0.0082153793 -0.2693873122 0.0015297705 +N -1.0154280310 0.3210594272 0.0098197201 +H 1.0287168668 -0.0502963688 -0.0108159357 +3 +Iteration 28 Energy -92.32985651 +C -0.0054100768 -0.2522004990 0.0014198947 +N -1.0247438114 0.3143280951 0.0099525847 +H 1.0352273447 -0.0607518499 -0.0108389245 +3 +Iteration 29 Energy -92.33289776 +C -0.0028617335 -0.2349722576 0.0013126371 +N -1.0336082703 0.3074708046 0.0100810958 +H 1.0415434603 -0.0711228008 -0.0108601780 +3 +Iteration 30 Energy -92.33575863 +C -0.0002397792 -0.2176538622 0.0012041593 +N -1.0417957117 0.3004513195 0.0102029531 +H 1.0471089474 -0.0814217110 -0.0108735575 +3 +Iteration 31 Energy -92.33843482 +C 0.0023852674 -0.2002706211 0.0010953488 +N -1.0493548703 0.2932852318 0.0103186175 +H 1.0520430593 -0.0916388645 -0.0108804114 +3 +Iteration 32 Energy -92.34092160 +C 0.0050148400 -0.1828375235 0.0009862591 +N -1.0562772978 0.2859782615 0.0104279703 +H 1.0563359143 -0.1017649917 -0.0108806744 +3 +Iteration 33 Energy -92.34321400 +C 0.0076446888 -0.1653718447 0.0008770162 +N -1.0625575354 0.2785375085 0.0105309190 +H 1.0599863031 -0.1117899176 -0.0108743803 +3 +Iteration 34 Energy -92.34530670 +C 0.0102662344 -0.1478920884 0.0007677992 +N -1.0681932617 0.2709712444 0.0106274002 +H 1.0630004837 -0.1217034099 -0.0108616445 +3 +Iteration 35 Energy -92.34719368 +C 0.0128763991 -0.1304190380 0.0006587375 +N -1.0731752681 0.2632878548 0.0107172746 +H 1.0653723255 -0.1314930706 -0.0108424572 +3 +Iteration 36 Energy -92.34886820 +C 0.0154676430 -0.1129779506 0.0005500300 +N -1.0774946337 0.2554979934 0.0108003955 +H 1.0671004471 -0.1411442965 -0.0108168706 +3 +Iteration 37 Energy -92.35032284 +C 0.0180287356 -0.0956010185 0.0004419477 +N -1.0811401301 0.2476154656 0.0108765766 +H 1.0681848510 -0.1506387009 -0.0107849694 +3 +Iteration 38 Energy -92.35154975 +C 0.0205483898 -0.0783335555 0.0003348230 +N -1.0840905670 0.2396588214 0.0109455006 +H 1.0686156337 -0.1599495197 -0.0107467687 +3 +Iteration 39 Energy -92.35254113 +C 0.0229982466 -0.0612450163 0.0002292859 +N -1.0863229217 0.2316587748 0.0110067745 +H 1.0683981316 -0.1690380123 -0.0107025055 +3 +Iteration 40 Energy -92.35329009 +C 0.0253342205 -0.0444555286 0.0001263720 +N -1.0877959947 0.2236685847 0.0110597023 +H 1.0675352307 -0.1778373098 -0.0106525194 +3 +Iteration 41 Energy -92.35379173 +C 0.0274780722 -0.0282149059 0.0000280880 +N -1.0884277774 0.2157995348 0.0111028746 +H 1.0660231618 -0.1862088827 -0.0105974077 +3 +Iteration 42 Energy -92.35401130 +C 0.0282191368 -0.0178203303 -0.0000279182 +N -1.0868790329 0.2104482515 0.0111106054 +H 1.0637333525 -0.1912521750 -0.0105491323 +3 +Iteration 43 Energy -92.35406031 +C 0.0291889129 -0.0092453289 -0.0000780390 +N -1.0851055950 0.2059045518 0.0111121579 +H 1.0609901386 -0.1952834767 -0.0105005640 +3 +Iteration 44 Energy -92.35406379 +C 0.0290208613 -0.0052767904 -0.0000944913 +N -1.0897925190 0.2048704556 0.0111681623 +H 1.0658451142 -0.1982179190 -0.0105401161 +3 +Iteration 45 Energy -92.35205442 +C 0.0456889779 -0.0096683359 -0.0002564723 +N -1.0724341158 0.2022341957 0.0109905455 +H 1.0318185945 -0.1911901136 -0.0102005183 +3 +Iteration 46 Energy -92.35362413 +C 0.0365271393 -0.0084981624 -0.0001617057 +N -1.0784244039 0.2035999344 0.0110497386 +H 1.0469707211 -0.1937260258 -0.0103544780 +3 +Iteration 47 Energy -92.35337626 +C 0.0191547892 -0.0052039230 0.0000130312 +N -1.0954209986 0.2067266550 0.0112211397 +H 1.0813396659 -0.2001469858 -0.0107006160 diff --git a/geometric/errors.py b/geometric/errors.py index 6e5f8789..3771cd6b 100644 --- a/geometric/errors.py +++ b/geometric/errors.py @@ -54,6 +54,9 @@ class ParamError(Error): class FrequencyError(Error): pass +class IRCError(Error): + pass + class CheckCoordError(Error): pass diff --git a/geometric/internal.py b/geometric/internal.py index 9a9f7705..3cc01a96 100644 --- a/geometric/internal.py +++ b/geometric/internal.py @@ -44,7 +44,7 @@ import numpy as np from numpy.linalg import multi_dot -from geometric.molecule import Molecule, Elements, Radii +from geometric.molecule import Molecule, PeriodicTable, Elements, Radii from geometric.nifty import click, commadash, ang2bohr, bohr2ang, logger, pvec1d, pmat2d from geometric.rotate import get_expmap, get_expmap_der, calc_rot_vec_diff, get_quat, build_F, sorted_eigh @@ -1703,7 +1703,7 @@ def calcGradProj(self, xyz, gradx): def clearCache(self): self.stored_wilsonB = OrderedDict() - def wilsonB(self, xyz): + def wilsonB(self, xyz, invMW=False): """ Given Cartesian coordinates xyz, return the Wilson B-matrix given by dq_i/dx_j where x is flattened (i.e. x1, y1, z1, x2, y2, z2) @@ -1724,25 +1724,27 @@ def wilsonB(self, xyz): logger.warning("\x1b[91mWarning: more than 1000 B-matrices stored, memory leaks likely\x1b[0m\n") CacheWarning = True ans = np.array(WilsonB) + if invMW: + ans /= np.tile(self.mass, (len(self.Internals), 1)) return ans - def GMatrix(self, xyz): + def GMatrix(self, xyz, invMW=False): """ Given Cartesian coordinates xyz, return the G-matrix given by G = BuBt where u is an arbitrary matrix (default to identity) """ - Bmat = self.wilsonB(xyz) + Bmat = self.wilsonB(xyz, invMW) BuBt = np.dot(Bmat,Bmat.T) return BuBt - def GInverse_SVD(self, xyz): + def GInverse_SVD(self, xyz, sqrt=False, invMW=False): xyz = xyz.reshape(-1,3) # Perform singular value decomposition click() loops = 0 while True: try: - G = self.GMatrix(xyz) + G = self.GMatrix(xyz, invMW) time_G = click() U, S, VT = np.linalg.svd(G) time_svd = click() @@ -1758,15 +1760,23 @@ def GInverse_SVD(self, xyz): V = VT.T UT = U.T Sinv = np.zeros_like(S) + Ssqrt = np.zeros_like(S) LargeVals = 0 for ival, value in enumerate(S): # print "%.5e % .5e" % (ival,value) if np.abs(value) > 1e-6: + if sqrt: value = np.sqrt(value) LargeVals += 1 Sinv[ival] = 1/value + Ssqrt[ival] = value + # print "%i atoms; %i/%i singular values are > 1e-6" % (xyz.shape[0], LargeVals, len(S)) Sinv = np.diag(Sinv) Inv = multi_dot([V, Sinv, UT]) + if sqrt: + Ssqrt = np.diag(Ssqrt) + Sqrt = multi_dot([V, Ssqrt, UT]) + return Inv, Sqrt return Inv def GInverse_EIG(self, xyz): # pragma: no cover @@ -2012,6 +2022,8 @@ def __init__(self, molecule, connect=False, addcart=False, constraints=None, cva self.cVals = [] self.Rotators = OrderedDict() self.elem = molecule.elem + # Atomic mass array + self.mass = np.repeat([PeriodicTable[i] for i in self.elem], 3) # List of fragments as determined by residue ID, distance criteria or bond order self.frags = [] for i in range(len(molecule)): @@ -2811,6 +2823,8 @@ def __init__(self, molecule, imagenr=0, build=False, connect=False, addcart=Fals self.Prims = PrimitiveInternalCoordinates(molecule, connect=connect, addcart=addcart, constraints=constraints, cvals=cvals) self.frags = self.Prims.frags self.na = molecule.na + # Atomic mass array + self.mass = np.repeat([PeriodicTable[i] for i in molecule.elem], 3) # Whether constraints have been enforced previously self.enforced = False self.enforce_fail_printed = False diff --git a/geometric/nifty.py b/geometric/nifty.py index 564e1868..4662ac78 100644 --- a/geometric/nifty.py +++ b/geometric/nifty.py @@ -181,6 +181,15 @@ def __init__(self, *args, **kwargs): # copyfileobj(input, output) # os.remove(input) +def find_lambda(Lambda, s, Heig, Hvec, g_M, p_M): + """ + Equation 26 from Gonzalez & Schlegel (1990) + """ + a = Heig*np.dot(p_M, Hvec) - np.dot(g_M, Hvec) + b = Heig - Lambda + c = (a / b) ** 2 + return np.sum(c) - (0.5 * s) ** 2 + def pvec1d(vec1d, precision=1, format="e", loglevel=INFO): """Printout of a 1-D vector. diff --git a/geometric/optimize.py b/geometric/optimize.py index cde8e36c..1c46e5d7 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -40,10 +40,13 @@ import time import traceback import pkg_resources +import warnings from copy import deepcopy from datetime import datetime import numpy as np +import scipy +from scipy import optimize from numpy.linalg import multi_dot import geometric @@ -54,8 +57,8 @@ from .step import brent_wiki, Froot, calc_drms_dmax, get_cartesian_norm, get_delta_prime, trust_step, force_positive_definite, update_hessian from .prepare import get_molecule_engine, parse_constraints from .params import OptParams, parse_optimizer_args -from .nifty import row, col, flat, bohr2ang, ang2bohr, logger, bak, createWorkQueue, destroyWorkQueue -from .errors import InputError, HessianExit, EngineError, GeomOptNotConvergedError, GeomOptStructureError, LinearTorsionError +from .nifty import row, col, flat, bohr2ang, ang2bohr, logger, bak, createWorkQueue, destroyWorkQueue, find_lambda +from .errors import InputError, HessianExit, EngineError, IRCError, GeomOptNotConvergedError, GeomOptStructureError, LinearTorsionError class Optimizer(object): def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=True): @@ -119,6 +122,14 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru self.lowq_tr_limit = 1 # Recalculate the Hessian after a trigger - for example if the energy changes by a lot during TS optimization. self.recalcHess = False + # IRC related attributes + self.IRC_converged = False + self.IRC_direction = 1 + # status 0 : Need to find a pivot point + # status 1 : At the pivot point, need to find the next point + self.IRC_stepsize = self.params.trust + #self.IRC_stepsize = self.params.trust*np.sqrt(self.IC.mass) + self.IRC_angle = 0 if print_info: self.print_info() @@ -127,6 +138,8 @@ def print_info(self): logger.info("> ===== Optimization Info: ====\n") if params.transition: logger.info("> Job type: Transition state optimization\n") + elif params.irc: + logger.info("> Job type: Intrinsic Reaction Coordinate method\n") else: logger.info("> Job type: Energy minimization\n") @@ -143,7 +156,10 @@ def print_info(self): logger.info("> RMS-Grad < %.2e\n" % params.Convergence_grms) logger.info("> RMS-Disp < %.2e\n" % params.Convergence_drms) else: - logger.info("> Will converge when all 5 criteria are reached:\n") + if params.irc: + logger.info("> Will converge when pivot point angle is larger than %s and all 5 criteria are reached:\n" %u'175\xb0') + else: + logger.info("> Will converge when all 5 criteria are reached:\n") logger.info("> |Delta-E| < %.2e\n" % params.Convergence_energy) if self.IC.haveConstraints(): logger.info("> RMS-Ortho-Grad < %.2e\n" % params.Convergence_grms) @@ -266,7 +282,7 @@ def frequency_analysis(self, hessian, suffix, afterOpt): logger.info("Requesting %i samples from Wigner distribution.\n" % self.params.wigner) prefix = self.params.xyzout.replace("_optim.xyz", "").replace(".xyz", "") # Call the frequency analysis function with an input Hessian, with most arguments populated from self.params - frequency_analysis(self.X, hessian, self.molecule.elem, energy=self.E, temperature=self.params.temperature, pressure=self.params.pressure, verbose=self.params.verbose, + self.TSWavenum, self.TSNormal_modes_x, _ = frequency_analysis(self.X, hessian, self.molecule.elem, energy=self.E, temperature=self.params.temperature, pressure=self.params.pressure, verbose=self.params.verbose, outfnm='%s.vdata_%s' % (prefix, suffix), note='Iteration %i Energy % .8f%s' % (self.Iteration, self.E, ' (Optimized Structure)' if afterOpt else ''), wigner=((self.params.wigner, os.path.join(self.dirname, 'wigner')) if do_wigner else None), ignore=self.params.ignore_modes) @@ -392,7 +408,14 @@ def SortedEigenvalues(self, H): else: logger.info("Hessian Eigenvalues: " + ' '.join("%.5e" % i for i in Eig) + '\n') return Eig - + + def guess_g(self, g, H, disp): + """ + guess a gradient using a quadratic expansion + """ + g_new = g + np.dot(H, disp) + return g_new + def step(self): """ Perform one step of the optimization. @@ -402,6 +425,99 @@ def step(self): raise RuntimeError("Gradient contains nan - check output and temp-files for possible errors") if np.isnan(self.H).any(): raise RuntimeError("Hessian contains nan - check output and temp-files for possible errors") + + if params.irc: + logger.info("IRC status 0: Finding a pivot point (q*_{k+1})\n") + # Need to take a step towards the pivot point + g_k = self.G.copy() # Internal coordinate gradients + self.IC.clearCache() + GMat = self.IC.GMatrix(self.X, invMW=True) + GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(self.X, sqrt=True, invMW=True) + + # Vector to the pivot point + if self.Iteration == 0: + # If it's the very first step, pick the eigenvector of the imaginary frequency and pick the direction + logger.info('\nFirst, following the imaginary mode vector\n') + if self.TSWavenum[1] < 0: + raise IRCError("There are more than one imaginary vibrational mode, please optimize the structure and try again.\n") + + # Getting IC vectors correspond to the imaginary frequency + H_M = np.dot(np.dot(GMat_sqrt, self.H), GMat_sqrt.T) + _, MW_IC_vecs = np.linalg.eigh(H_M) + v = np.dot(GMat_sqrt_inv, MW_IC_vecs[0]) + N = 1/np.linalg.norm(v) + #v = np.dot(GMat, v) + #N = 1 / np.sqrt(np.dot(v.T, np.dot(GMat, v))) + + # Following Carteisan Hessian + #v = self.IC.calcDiff(self.X + self.TSNormal_modes_x[0], self.X) + #v = v/np.linalg.norm(v) + #N = 1 + + # Initial direction + v *= self.IRC_direction + else: + # Else, use the mass-weighted G matrix and internal coordinate gradients to get the vector. + # Normalization factor + N = 1 / np.sqrt(np.dot(g_k.T, np.dot(GMat, g_k))) + v = np.dot(GMat, g_k) + + stepsize = self.IRC_stepsize + # Step towards the pivot point + dy = -0.5*stepsize*N*v + self.IRC_step_to_pivot = dy + self.IRC_v = v + logger.info("dy in status 0: %.5f\n" %np.linalg.norm(dy)) + + # Move to the pivot point + X0 = self.X.copy() + self.newCartesian(dy) + dy = self.IC.calcDiff(self.X, X0) + self.Y += dy + + # We are at the pivot point + logger.info("IRC status 1: Finding the next point (q_{k+1})\n") + stepsize = self.IRC_stepsize + v1 = self.IRC_v + X_pivot = self.X.copy() + irc_sub_iteration = 0 + p_prime = self.IRC_step_to_pivot + while True: + X = self.IC.newCartesian(X_pivot, p_prime, self.params.verbose) + # Now we are at the guessed point, define mass-weighted G matrix at the guessed point + self.IC.clearCache() + GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(X, sqrt=True, invMW=True) + # Mass weighted displacement, gradients, and Hessian + g_M = np.dot(GMat_sqrt, self.guess_g(self.G, self.H, self.IRC_step_to_pivot + p_prime)) + H_M = np.dot(np.dot(GMat_sqrt,self.H), GMat_sqrt.T) + p_M = np.dot(GMat_sqrt_inv, p_prime) + + Heig, Hvecs = np.linalg.eigh(H_M) + + init_guess = 1.01*Heig[0] if Heig[0] < 0 else 0.99*Heig[0] + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + min_lambda = scipy.optimize.fsolve(find_lambda, init_guess, (stepsize, Heig, Hvecs, g_M, p_M)) + if min_lambda[0] > init_guess: + logger.warning('Optimized lambda is bigger than the lowest eigenvalue of H_M\n') + LambdaI = min_lambda[0]*np.eye(len(self.IC.Internals)) + del_q_M1 = np.linalg.pinv(H_M - LambdaI) + del_q_M2 = g_M - min_lambda[0]*p_M + del_q_M = -np.dot(del_q_M1, del_q_M2) + dq_new = np.dot(GMat_sqrt, del_q_M) + + if np.linalg.norm(dq_new) < 1e-5 or irc_sub_iteration > 500: + dy = p_prime + v2 = p_prime/np.linalg.norm(p_prime) + deg = np.degrees(np.arccos(np.dot(v1/np.linalg.norm(v1),v2))) + self.IRC_angle = deg + logger.info('Angle between v1 and v2: %2.f \n' %deg) + logger.info('Final del_q length (should be small): %.8f \n' %np.linalg.norm(dq_new)) + logger.info("Final dy in status 1: %.5f \n" %np.linalg.norm(dy)) + break + irc_sub_iteration += 1 + p_prime += dq_new + self.Iteration += 1 if (self.Iteration%5) == 0: self.engine.clearCalcs() @@ -423,8 +539,9 @@ def step(self): ### OBTAIN AN OPTIMIZATION STEP ### # The trust radius is to be computed in Cartesian coordinates. # First take a full-size optimization step - if params.verbose: logger.info(" Optimizer.step : Attempting full-size optimization step\n") - dy, _, __ = self.get_delta_prime(v0, verbose=self.params.verbose) + if params.verbose and not params.irc: logger.info(" Optimizer.step : Attempting full-size optimization step\n") + if not params.irc: + dy, _, __ = self.get_delta_prime(v0, verbose=self.params.verbose) # Internal coordinate step size inorm = np.linalg.norm(dy) # Cartesian coordinate step size @@ -435,7 +552,7 @@ def step(self): if params.verbose: logger.info(" Optimizer.step : Internal-step: %.4f Cartesian-step: %.4f Trust-radius: %.4f\n" % (inorm, self.cnorm, self.trust)) # If the step is above the trust radius in Cartesian coordinates, then # do the following to reduce the step length: - if self.cnorm > 1.1 * self.trust: + if self.cnorm > 1.1 * self.trust and not params.irc: # This is the function f(inorm) = cnorm-target that we find a root # for obtaining a step with the desired Cartesian step size. froot = self.createFroot(v0) @@ -544,7 +661,7 @@ def evaluateStep(self): else: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[91m" colors['quality'] = "\x1b[91m" - step_state = StepState.Reject if (Quality < -1.0 or params.transition) else StepState.Poor + step_state = StepState.Reject if (Quality < -1.0 or params.transition) and not params.irc else StepState.Poor if 'energy' not in colors: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[0m" if 'quality' not in colors: colors['quality'] = "\x1b[0m" colors['grms'] = "\x1b[92m" if Converged_grms else "\x1b[0m" @@ -556,9 +673,12 @@ def evaluateStep(self): Converged_molpro_dmax = max_displacement < params.Convergence_molpro_dmax self.conSatisfied = not self.IC.haveConstraints() or self.IC.maxConstraintViolation(self.X) < params.Convergence_cmax # Print status - msg = "Step %4i :" % self.Iteration + msg = "\n Step %4i :" % self.Iteration msg += " Displace = %s%.3e\x1b[0m/%s%.3e\x1b[0m (rms/max)" % (colors['drms'], rms_displacement, colors['dmax'], max_displacement) - msg += " Trust = %.3e (%s)" % (self.trust, self.trustprint) + if params.irc: + msg += " Trust = %.3e" % (self.IRC_stepsize) + else: + msg += " Trust = %.3e (%s)" % (self.trust, self.trustprint) msg += " Grad%s = %s%.3e\x1b[0m/%s%.3e\x1b[0m (rms/max)" % ("_T" if self.IC.haveConstraints() else "", colors['grms'], rms_gradient, colors['gmax'], max_gradient) logger.info(msg + " E (change) = % .10f (%s%+.3e\x1b[0m) Quality = %s%.3f\x1b[0m" % (self.E, colors['energy'], self.E-self.Eprev, colors['quality'], Quality) + "\n") @@ -568,7 +688,31 @@ def evaluateStep(self): logger.info(self.prim_msg + '\n') ### Check convergence criteria ### - if Converged_energy and Converged_grms and Converged_drms and Converged_gmax and Converged_dmax and self.conSatisfied: + criteria_met = Converged_energy and Converged_grms and Converged_drms and Converged_gmax and Converged_dmax + + if (criteria_met and params.irc) or self.IRC_converged: + if self.Iteration > 10: + self.IRC_converged = True + if self.IRC_angle > 175: + if self.IRC_direction == 1: + logger.info("IRC Forward direction converged\n") + logger.info("IRC Backward will be performed\n") + self.IRC_direction = -1 + self.progress = self.progress[::-1][:-1] + self.Iteration = 0 + self.H = self.H0.copy() + self.X = self.X_hist[0] + self.Y = self.IC.calculate(self.X) + self.G = self.IC.calcGrad(self.X, self.progress.qm_grads[-1]).flatten() + self.IRC_converged = False + return + elif self.IRC_direction == -1: + self.SortedEigenvalues(self.H) + logger.info("Converged! =D\n") + self.state = OPT_STATE.CONVERGED + return + + if criteria_met and self.conSatisfied and not params.irc: self.SortedEigenvalues(self.H) logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED @@ -885,6 +1029,11 @@ def run_optimizer(**kwargs): 'tric-p':(PrimitiveInternalCoordinates, False, False), 'tric':(DelocalizedInternalCoordinates, False, False)} coordsys = kwargs.get('coordsys', 'tric') + + # TRIC IRC will fail when there is only one molecule due to the small Hessian eigenvalues. + if params.irc and len(M.molecules) == 1 and coordsys == 'tric': + coordsys = 'dlc' + CoordClass, connect, addcart = CoordSysDict[coordsys.lower()] # Perform an initial single-point QM calculation to determine bonding & fragments, if using TRIC @@ -956,7 +1105,10 @@ def run_optimizer(**kwargs): if Cons is None: # Run a standard geometry optimization - params.xyzout = prefix+"_optim.xyz" + add = "_optim.xyz" + if params.irc: + add = "_irc.xyz" + params.xyzout = prefix+add progress = Optimize(coords, M, IC, engine, dirname, params) else: # Run a single constrained geometry optimization or scan over a grid of values diff --git a/geometric/params.py b/geometric/params.py index a979aa80..dc98c8c0 100644 --- a/geometric/params.py +++ b/geometric/params.py @@ -48,6 +48,8 @@ class OptParams(object): def __init__(self, **kwargs): # Whether we are optimizing for a transition state. This changes a number of default parameters. self.transition = kwargs.get('transition', False) + # Intrinsic Reaction Coordinate method. This changes a number of default parameters. + self.irc = kwargs.get('irc', False) # CI optimizations sometimes require tiny steps self.meci = kwargs.get('meci', False) # Handle convergence criteria; this edits the kwargs @@ -61,9 +63,9 @@ def __init__(self, **kwargs): # More verbose printout self.verbose = kwargs.get('verbose', False) # Starting value of the trust radius - # Because TS optimization is experimental, use conservative trust radii + # Because TS optimization and IRC are experimental, use conservative trust radii self.trust = kwargs.get('trust', 0.01 if self.transition else 0.1) - # Maximum value of trust radius + # Maximum value of trust radius (HP: I don't think self.irc is needed inside the if statement) self.tmax = kwargs.get('tmax', 0.03 if self.transition else 0.3) # Minimum value of the trust radius # Also sets the maximum step size that can be rejected @@ -87,7 +89,7 @@ def __init__(self, **kwargs): self.trust = min(self.tmax, self.trust) self.trust = max(self.tmin, self.trust) # Maximum number of optimization cycles - self.maxiter = kwargs.get('maxiter', 300) + self.maxiter = kwargs.get('maxiter', 500 if self.irc else 300) # Use updated constraint algorithm implemented 2019-03-20 self.conmethod = kwargs.get('conmethod', 0) # Write Hessian matrix at optimized structure to text file @@ -106,7 +108,7 @@ def __init__(self, **kwargs): if self.hessian is None: # Default is to calculate Hessian in the first step if searching for a transition state. # Otherwise the default is to never calculate the Hessian. - if self.transition: self.hessian = 'first' + if self.transition or self.irc: self.hessian = 'first' else: self.hessian = 'never' elif self.hessian.startswith('file:'): if os.path.exists(self.hessian[5:]): @@ -173,13 +175,14 @@ def convergence_criteria(self, **kwargs): 'TURBOMOLE': [1e-6, 5e-4, 1e-3, 5.0e-4, 1e-3], 'INTERFRAG_TIGHT': [1e-6, 1e-5, 1.5e-5, 4.0e-4, 6.0e-4], 'GAU_TIGHT': [1e-6, 1e-5, 1.5e-5, 4e-5, 6e-5], - 'GAU_VERYTIGHT': [1e-6, 1e-6, 2e-6, 4e-6, 6e-6]} + 'GAU_VERYTIGHT': [1e-6, 1e-6, 2e-6, 4e-6, 6e-6], + 'IRC': [5e-4, 2e-2, 4e-2, 1e-2, 2e-2]} # Q-Chem style convergence criteria (i.e. gradient and either energy or displacement) self.qccnv = kwargs.get('qccnv', False) # Molpro style convergence criteria (i.e. gradient and either energy or displacement, with different defaults) self.molcnv = kwargs.get('molcnv', False) # Check if there is a convergence set passed else use the default - set_name = kwargs.get('convergence_set', 'GAU').upper() + set_name = 'IRC' if self.irc else kwargs.get('convergence_set', 'GAU').upper() # If we have extra keywords apply them here else use the set # Convergence criteria in a.u. and Angstrom self.Convergence_energy = kwargs.get('convergence_energy', convergence_sets[set_name][0]) @@ -321,6 +324,7 @@ def parse_optimizer_args(*args): grp_jobtype = parser.add_argument_group('jobtype', 'Control the type of optimization job') grp_jobtype.add_argument('--transition', type=str2bool, help='Provide "yes" to Search for a first order saddle point / transition state.\n ') + grp_jobtype.add_argument('--irc', type=str2bool, help='Provide "yes" to perform the IRC method.\n ') grp_jobtype.add_argument('--meci', type=str, nargs="+", help='Provide second input file and search for minimum-energy conical\n ' 'intersection or crossing point between two SCF solutions (TeraChem and Q-Chem supported).\n' 'Or, provide "engine" if the engine directly provides the MECI objective function and gradient.\n') diff --git a/geometric/step.py b/geometric/step.py index be3afe30..d0c60aa4 100644 --- a/geometric/step.py +++ b/geometric/step.py @@ -331,7 +331,7 @@ def update_hessian(IC, H0, xyz_seq, gradx_seq, params, trust_limit=False, max_up if history == max_updates: break history += 1 - if (trust_limit and history >= 1) or history > 1: + if ((trust_limit and history >= 1) or history > 1) and not params.irc: logger.info("Updating Hessian using %i steps from history\n" % history) # If history=2, thisFrame and prevFrame should be (-3, -2) and (-2, -1) @@ -375,7 +375,7 @@ def update_hessian(IC, H0, xyz_seq, gradx_seq, params, trust_limit=False, max_up logger.info(msg+'\n') # Return the guess Hessian if performing energy minimization and eigenvalues become negative. - if not params.transition: + if not params.transition and not params.irc: Eig = sorted_eigh(H, asc=True)[0] if np.min(Eig) <= params.epsilon and params.reset: logger.info("Eigenvalues below %.4e (%.4e) - returning guess\n" % (params.epsilon, np.min(Eig))) From 233481659a751aaa8ee1740b6ab856c9ceb3aaa7 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Fri, 26 May 2023 09:51:08 -0700 Subject: [PATCH 02/35] IRC step in optimizer.step() is fixed. IRC test needs to be added --- .../hcn_hnc_irc/psi4/hcn_irc.vdata_first | 32 +- .../hcn_hnc_irc/psi4/hcn_irc.xyz | 918 +++++++++-------- .../hcn_hnc_irc/qchem/hcn_irc.xyz | 913 +++++++++-------- .../hcn_hnc_irc/terachem/tera_irc.vdata_first | 12 +- .../hcn_hnc_irc/terachem/tera_irc.xyz | 928 +++++++++--------- geometric/nifty.py | 9 - geometric/optimize.py | 135 ++- geometric/params.py | 7 +- 8 files changed, 1434 insertions(+), 1520 deletions(-) diff --git a/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first index 4eebe68b..1930f0a2 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first +++ b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first @@ -33,18 +33,18 @@ # # == Summary of harmonic free energy analysis == # Note: Rotational symmetry is set to 1 regardless of true symmetry -# 1 Imaginary Frequencies (cm^-1): 1215.806i +# 1 Imaginary Frequencies (cm^-1): 1215.761i # Note: Free energy does not include contribution from imaginary mode(s) # # Free energy contributions calculated at @ 300.00 K: -# Zero-point vibrational energy: 6.5449 kcal/mol +# Zero-point vibrational energy: 6.5454 kcal/mol # H (Trans + Rot + Vib = Tot): 1.4904 + 0.8942 + 0.0003 = 2.3849 kcal/mol # S (Trans + Rot + Vib = Tot): 35.8748 + 16.3847 + 0.0010 = 52.2605 cal/mol/K # TS (Trans + Rot + Vib = Tot): 10.7624 + 4.9154 + 0.0003 = 15.6782 kcal/mol # # Ground State Electronic Energy : E0 = -92.24601961 au ( -57885.2512 kcal/mol) -# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075414 au ( -6.7483 kcal/mol) -# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25677374 au ( -57891.9996 kcal/mol) +# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075331 au ( -6.7478 kcal/mol) +# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25677291 au ( -57891.9991 kcal/mol) # 3 @@ -53,17 +53,17 @@ Iteration 0 Energy -92.24601961 N -0.6393457902 0.4205365638 0.0052498438 H 0.7532976101 0.2173493463 -0.0090384631 --1215.805689 --0.043211 -0.081875 0.000850 - 0.075171 0.009779 -0.000867 --0.529695 0.839703 0.001921 +-1215.761008 +-0.043230 -0.081825 0.000850 + 0.075193 0.009739 -0.000867 +-0.529777 0.839653 0.001922 - 2125.902258 --0.335229 0.646533 0.000685 - 0.302552 -0.563604 -0.000710 --0.209832 0.128050 0.001704 + 2126.256784 +-0.335574 0.646848 0.000687 + 0.302608 -0.563961 -0.000709 +-0.206505 0.129252 0.001662 - 2452.329664 - 0.057422 0.023596 -0.000736 - 0.012880 0.015784 -0.000214 --0.863194 -0.500488 0.011743 + 2452.339052 + 0.057321 0.023799 -0.000736 + 0.012966 0.015610 -0.000214 +-0.863190 -0.500500 0.011743 diff --git a/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz index b5e59e1a..091dd247 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz +++ b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz @@ -1,475 +1,445 @@ 3 -Iteration 47 Energy -92.33793710 -C -0.6422210474 -0.9099781906 0.0114131190 -N 0.0031958371 0.0561405404 -0.0000952152 -H 0.6440986667 0.8552133964 -0.0107843489 -3 -Iteration 46 Energy -92.33933336 -C -0.6314788114 -0.8965952723 0.0112340054 -N 0.0127359242 0.0708112890 -0.0002671217 -H 0.6238163437 0.8271597295 -0.0104333288 -3 -Iteration 45 Energy -92.33917743 -C -0.6292436473 -0.9046610207 0.0112467420 -N -0.0018602825 0.0758023364 -0.0001305542 -H 0.6361773863 0.8302344305 -0.0105826329 -3 -Iteration 44 Energy -92.33743134 -C -0.6331588251 -0.9168322159 0.0113456361 -N -0.0167026001 0.0719085068 0.0000496508 -H 0.6549348817 0.8462994553 -0.0108617321 -3 -Iteration 43 Energy -92.33879126 -C -0.6215460985 -0.9052539738 0.0111653232 -N -0.0102971428 0.0876622701 -0.0000929784 -H 0.6369166978 0.8189674500 -0.0105387899 -3 -Iteration 42 Energy -92.33829321 -C -0.6205773182 -0.9135975545 0.0111931847 -N -0.0248591763 0.0902078010 0.0000544860 -H 0.6505099510 0.8247654997 -0.0107141157 -3 -Iteration 41 Energy -92.33787061 -C -0.6100053665 -0.9098346700 0.0110602678 -N -0.0298951460 0.1046989161 0.0000427563 -H 0.6449739690 0.8065115001 -0.0105694692 -3 -Iteration 40 Energy -92.33730163 -C -0.6072045629 -0.9176563083 0.0110656957 -N -0.0469330080 0.1088093817 0.0002100748 -H 0.6592110275 0.8102226727 -0.0107422156 -3 -Iteration 39 Energy -92.33657304 -C -0.5968542673 -0.9169639269 0.0109493528 -N -0.0571385667 0.1227236716 0.0002575188 -H 0.6590662905 0.7956160015 -0.0106733167 -3 -Iteration 38 Energy -92.33561151 -C -0.5888333668 -0.9202581393 0.0108768481 -N -0.0729845328 0.1328259364 0.0003841932 -H 0.6668913561 0.7888079490 -0.0107274865 -3 -Iteration 37 Energy -92.33451800 -C -0.5792657822 -0.9213881539 0.0107774607 -N -0.0868184697 0.1445949872 0.0004811901 -H 0.6711577084 0.7781689128 -0.0107250960 -3 -Iteration 36 Energy -92.33329935 -C -0.5696584777 -0.9225226576 0.0106776598 -N -0.1014387425 0.1558052390 0.0005893587 -H 0.6761706767 0.7680931648 -0.0107334636 -3 -Iteration 35 Energy -92.33196390 -C -0.5594830895 -0.9228481625 0.0105679201 -N -0.1157156163 0.1672220653 0.0006928211 -H 0.6802721623 0.7570018434 -0.0107271864 -3 -Iteration 34 Energy -92.33051072 -C -0.5489648112 -0.9226807750 0.0104521603 -N -0.1300989310 0.1785150641 0.0007980179 -H 0.6841371987 0.7455414572 -0.0107166233 -3 -Iteration 33 Energy -92.32894042 -C -0.5380108356 -0.9218731638 0.0103286867 -N -0.1443661623 0.1898105404 0.0009019342 -H 0.6874504545 0.7334383696 -0.0106970660 -3 -Iteration 32 Energy -92.32725110 -C -0.5266810968 -0.9204943327 0.0101984727 -N -0.1586167289 0.2010219905 0.0010060555 -H 0.6903712822 0.7208480885 -0.0106709734 -3 -Iteration 31 Energy -92.32544059 -C -0.5149589822 -0.9185062773 0.0100611615 -N -0.1727803427 0.2121707182 0.0011095153 -H 0.6928127813 0.7077113053 -0.0106371219 -3 -Iteration 30 Energy -92.32350554 -C -0.5028765987 -0.9159356946 0.0099172271 -N -0.1868874796 0.2232147553 0.0012128402 -H 0.6948375348 0.6940966855 -0.0105965124 -3 -Iteration 29 Energy -92.32144232 -C -0.4904381451 -0.9127726765 0.0097666697 -N -0.2009060411 0.2341505449 0.0013156956 -H 0.6964176427 0.6799978777 -0.0105488104 -3 -Iteration 28 Energy -92.31924706 -C -0.4776696209 -0.9090346715 0.0096098540 -N -0.2148447832 0.2449504369 0.0014183048 -H 0.6975878606 0.6654599808 -0.0104946038 -3 -Iteration 27 Energy -92.31691634 -C -0.4645865466 -0.9047266285 0.0094469724 -N -0.2286907210 0.2556008444 0.0015205882 -H 0.6983507241 0.6505015303 -0.0104340057 -3 -Iteration 26 Energy -92.31444759 -C -0.4512115494 -0.8998626627 0.0092783375 -N -0.2424429039 0.2660827889 0.0016226231 -H 0.6987279098 0.6351556200 -0.0103674057 -3 -Iteration 25 Energy -92.31183975 -C -0.4375666939 -0.8944568287 0.0091042551 -N -0.2561005680 0.2763792075 0.0017244798 -H 0.6987407185 0.6194533675 -0.0102951800 -3 -Iteration 24 Energy -92.30909383 -C -0.4236733104 -0.8885231488 0.0089250231 -N -0.2696626589 0.2864752775 0.0018262149 -H 0.6984094258 0.6034236175 -0.0102176831 -3 -Iteration 23 Energy -92.30621348 -C -0.4095539478 -0.8820775372 0.0087409614 -N -0.2831327434 0.2963558789 0.0019279372 -H 0.6977601477 0.5870974045 -0.0101353436 -3 -Iteration 22 Energy -92.30320551 -C -0.3952293303 -0.8751344080 0.0085523628 -N -0.2965131384 0.3060084463 0.0020297299 -H 0.6968159252 0.5705017079 -0.0100485378 -3 -Iteration 21 Energy -92.30008022 -C -0.3807214710 -0.8677094511 0.0083595405 -N -0.3098112780 0.3154195364 0.0021317363 -H 0.6956062055 0.5536656609 -0.0099577219 -3 -Iteration 20 Energy -92.29685163 -C -0.3660503302 -0.8598159851 0.0081627740 -N -0.3230330424 0.3245777471 0.0022340731 -H 0.6941568292 0.5366139843 -0.0098632922 -3 -Iteration 19 Energy -92.29353743 -C -0.3512339889 -0.8514654380 0.0079623136 -N -0.3361821644 0.3334738004 0.0023368240 -H 0.6924896098 0.5193673838 -0.0097655826 -3 -Iteration 18 Energy -92.29015889 -C -0.3363011318 -0.8426796615 0.0077585736 -N -0.3492861927 0.3420914728 0.0024403648 -H 0.6906607810 0.5019639349 -0.0096653835 -3 -Iteration 17 Energy -92.28674007 -C -0.3212643734 -0.8334597114 0.0075516967 -N -0.3623392927 0.3504225092 0.0025446699 -H 0.6886771227 0.4844129484 -0.0095628117 -3 -Iteration 16 Energy -92.28330735 -C -0.3061515256 -0.8238230104 0.0073420674 -N -0.3753679340 0.3584514182 0.0026501000 -H 0.6865929161 0.4667473383 -0.0094586125 -3 -Iteration 15 Energy -92.27988837 -C -0.2909933762 -0.8137855681 0.0071300960 -N -0.3884034770 0.3661597930 0.0027570828 -H 0.6844703098 0.4490015213 -0.0093536239 -3 -Iteration 14 Energy -92.27651098 -C -0.2758287183 -0.8033659232 0.0069162920 -N -0.4014907734 0.3735239853 0.0028662175 -H 0.6823929482 0.4312176841 -0.0092489546 -3 -Iteration 13 Energy -92.27320205 -C -0.2607102837 -0.7925877447 0.0067013410 -N -0.4146968699 0.3805118058 0.0029783856 -H 0.6804806100 0.4134516852 -0.0091461717 -3 -Iteration 12 Energy -92.26998633 -C -0.2457118565 -0.7814820421 0.0064861925 -N -0.4281188413 0.3870790262 0.0030948520 -H 0.6789041543 0.3957787621 -0.0090474896 -3 -Iteration 11 Energy -92.26688539 -C -0.2309362811 -0.7700894595 0.0062721581 -N -0.4418887702 0.3931665153 0.0032173333 -H 0.6778985077 0.3782986904 -0.0089559366 -3 -Iteration 10 Energy -92.26391710 -C -0.2165309136 -0.7584663570 0.0060611086 -N -0.4561828858 0.3986941118 0.0033481255 -H 0.6777872559 0.3611479914 -0.0088756792 -3 -Iteration 9 Energy -92.26109556 -C -0.2026836251 -0.7466824013 0.0058554188 -N -0.4711907468 0.4035682394 0.0034897321 -H 0.6789478283 0.3444899081 -0.0088115960 -3 -Iteration 8 Energy -92.25843236 -C -0.1896024346 -0.7348148567 0.0056577190 -N -0.4870640904 0.4076983819 0.0036442291 -H 0.6817399815 0.3284922210 -0.0087683932 -3 -Iteration 7 Energy -92.25593985 -C -0.1774596434 -0.7229295458 0.0054701961 -N -0.5038428891 0.4110281079 0.0038123136 -H 0.6863759890 0.3132771841 -0.0087489548 -3 -Iteration 6 Energy -92.25363676 -C -0.1663461163 -0.7110658439 0.0052940249 -N -0.5214299666 0.4135525635 0.0039929456 -H 0.6928495395 0.2988890266 -0.0087534156 -3 -Iteration 5 Energy -92.25155326 -C -0.1562530791 -0.6992308070 0.0051291421 -N -0.5396053517 0.4153170643 0.0041835115 -H 0.7009318873 0.2852894890 -0.0087790987 -3 -Iteration 4 Energy -92.24973205 -C -0.1470986332 -0.6874141202 0.0049746048 -N -0.5580549541 0.4163957797 0.0043802357 -H 0.7102270438 0.2723940867 -0.0088212856 -3 -Iteration 3 Energy -92.24822476 -C -0.1386591128 -0.6755857144 0.0048278292 -N -0.5763287775 0.4169280624 0.0045775565 -H 0.7200613468 0.2600333983 -0.0088718308 -3 -Iteration 2 Energy -92.24705917 -C -0.1328370074 -0.6647572121 0.0047142760 -N -0.5944288325 0.4162440317 0.0047785832 -H 0.7323392965 0.2498889265 -0.0089593043 -3 -Iteration 1 Energy -92.24628553 -C -0.1172921969 -0.6502104511 0.0044772958 -N -0.6023553686 0.4184361704 0.0048551353 -H 0.7247210220 0.2331500269 -0.0087988762 -3 -Iteration 1 Energy -92.24576646 -C -0.1087699616 -0.6355062979 0.0043163627 -N -0.6585850029 0.4228618226 0.0054494554 -H 0.7724284211 0.2140202215 -0.0092322631 -3 -Iteration 2 Energy -92.24607189 -C -0.0930406509 -0.6220904030 0.0040825772 -N -0.6606071815 0.4243164505 0.0054648585 -H 0.7587212889 0.1991496987 -0.0090138808 -3 -Iteration 3 Energy -92.24627954 -C -0.0909855008 -0.6172410252 0.0040377608 -N -0.6650568538 0.4232336238 0.0055184937 -H 0.7611158111 0.1953831476 -0.0090226996 -3 -Iteration 4 Energy -92.24647148 -C -0.1057985380 -0.6189730296 0.0042076827 -N -0.6830411005 0.4187645042 0.0057356984 -H 0.7939130950 0.2015842716 -0.0094098263 -3 -Iteration 5 Energy -92.24762516 -C -0.0921606091 -0.6046318732 0.0039924965 -N -0.6919713163 0.4190087907 0.0058321999 -H 0.7892053819 0.1869988287 -0.0092911416 -3 -Iteration 6 Energy -92.24850390 -C -0.0955502039 -0.5977405867 0.0039977931 -N -0.7106273913 0.4161324326 0.0060494088 -H 0.8112510517 0.1829839002 -0.0095136470 -3 -Iteration 7 Energy -92.25036876 -C -0.0857711376 -0.5833705805 0.0038246600 -N -0.7244253728 0.4147700576 0.0062065304 -H 0.8152699669 0.1699762691 -0.0094976355 -3 -Iteration 8 Energy -92.25251961 -C -0.0817212875 -0.5706032494 0.0037215462 -N -0.7424967905 0.4122129415 0.0064158764 -H 0.8292915346 0.1597660541 -0.0096038676 -3 -Iteration 9 Energy -92.25517518 -C -0.0726576389 -0.5554310219 0.0035525371 -N -0.7574148250 0.4100290972 0.0065890285 -H 0.8351459204 0.1467776709 -0.0096080107 -3 -Iteration 10 Energy -92.25790422 -C -0.0733424476 -0.5443186415 0.0035088108 -N -0.7769504470 0.4066788087 0.0068180370 -H 0.8553663511 0.1390155789 -0.0097932928 -3 -Iteration 11 Energy -92.26105429 -C -0.0700415967 -0.5310997096 0.0034118040 -N -0.7943034680 0.4034409204 0.0070226667 -H 0.8694185212 0.1290345354 -0.0099009157 -3 -Iteration 12 Energy -92.26465789 -C -0.0606153347 -0.5152834580 0.0032358626 -N -0.8074959314 0.4004217021 0.0071808044 -H 0.8731847225 0.1162375020 -0.0098831121 -3 -Iteration 13 Energy -92.26686611 -C -0.0668574691 -0.5087261876 0.0032738832 -N -0.8244312920 0.3973931558 0.0073799033 -H 0.8963622177 0.1127087779 -0.0101202316 -3 -Iteration 14 Energy -92.27093019 -C -0.0577303736 -0.4928124176 0.0031007629 -N -0.8369557948 0.3938726023 0.0075330492 -H 0.8997596248 0.1003155615 -0.0101002572 -3 -Iteration 15 Energy -92.27321164 -C -0.0625325113 -0.4852913710 0.0031185994 -N -0.8526503648 0.3908324141 0.0077186372 -H 0.9202563326 0.0958347030 -0.0103036816 -3 -Iteration 16 Energy -92.27756727 -C -0.0523274295 -0.4690267849 0.0029320776 -N -0.8632646375 0.3869440096 0.0078525952 -H 0.9206655234 0.0834585215 -0.0102511179 -3 -Iteration 17 Energy -92.28188702 -C -0.0452855555 -0.4528962124 0.0027807543 -N -0.8762815790 0.3825485734 0.0080151565 -H 0.9266405910 0.0717233852 -0.0102623559 -3 -Iteration 18 Energy -92.28623560 -C -0.0400750207 -0.4369268979 0.0026501949 -N -0.8902317987 0.3778608482 0.0081892677 -H 0.9353802759 0.0604417959 -0.0103059077 -3 -Iteration 19 Energy -92.29059406 -C -0.0357235296 -0.4209604287 0.0025290399 -N -0.9043038302 0.3729566884 0.0083657081 -H 0.9451008164 0.0493794865 -0.0103611930 -3 -Iteration 20 Energy -92.29493202 -C -0.0319241807 -0.4049328746 0.0024136395 -N -0.9182173429 0.3678492782 0.0085413521 -H 0.9552149801 0.0384593426 -0.0104214367 -3 -Iteration 21 Energy -92.29921996 -C -0.0284845639 -0.3888026203 0.0023016985 -N -0.9318301901 0.3625484607 0.0087146006 -H 0.9653882104 0.0276299058 -0.0104827442 -3 -Iteration 22 Energy -92.30343206 -C -0.0252832203 -0.3725446780 0.0021917739 -N -0.9450541957 0.3570593282 0.0088844660 -H 0.9754108725 0.0168610960 -0.0105426850 -3 -Iteration 23 Energy -92.30754658 -C -0.0222441171 -0.3561470603 0.0020829792 -N -0.9578315953 0.3513853806 0.0090503008 -H 0.9851491689 0.0061374259 -0.0105997251 -3 -Iteration 24 Energy -92.31154540 -C -0.0193158867 -0.3396060194 0.0019747356 -N -0.9701199762 0.3455297111 0.0092116270 -H 0.9945093194 -0.0045479455 -0.0106528077 -3 -Iteration 25 Energy -92.31541357 -C -0.0164634954 -0.3229234851 0.0018666690 -N -0.9818873842 0.3394955533 0.0093680803 -H 1.0034243361 -0.0151963219 -0.0107011945 -3 -Iteration 26 Energy -92.31913901 -C -0.0136691048 -0.3061061686 0.0017586154 -N -0.9931141735 0.3332869128 0.0095194277 -H 1.0118567348 -0.0258049981 -0.0107444881 -3 -Iteration 27 Energy -92.32271154 -C -0.0109152566 -0.2891622569 0.0016504215 -N -1.0037795436 0.3269076185 0.0096654239 -H 1.0197682566 -0.0363696154 -0.0107822905 -3 -Iteration 28 Energy -92.32612289 -C -0.0081933291 -0.2721020843 0.0015420408 -N -1.0138699579 0.3203621894 0.0098059002 -H 1.0271367435 -0.0468843588 -0.0108143861 -3 -Iteration 29 Energy -92.32936605 -C -0.0054970653 -0.2549370889 0.0014334576 -N -1.0233734283 0.3136553981 0.0099407035 -H 1.0339439502 -0.0573425630 -0.0108406062 -3 -Iteration 30 Energy -92.33243507 -C -0.0028233331 -0.2376796381 0.0013246946 -N -1.0322802923 0.3067923769 0.0100697047 -H 1.0401770819 -0.0677369926 -0.0108608444 -3 -Iteration 31 Energy -92.33532457 -C -0.0001649921 -0.2203424655 0.0012157325 -N -1.0405774045 0.2997779698 0.0101927375 -H 1.0458158531 -0.0780597581 -0.0108749150 -3 -Iteration 32 Energy -92.33802970 -C 0.0024790245 -0.2029393892 0.0011066232 -N -1.0482570902 0.2926178817 0.0103096919 -H 1.0508515222 -0.0883027463 -0.0108827601 -3 -Iteration 33 Energy -92.34054570 -C 0.0051101865 -0.1854852275 0.0009974190 -N -1.0553104665 0.2853180359 0.0104204434 -H 1.0552737366 -0.0984570621 -0.0108843075 -3 -Iteration 34 Energy -92.34286767 -C 0.0077287751 -0.1679959916 0.0008881906 -N -1.0617291599 0.2778848900 0.0105248707 -H 1.0590738413 -0.1085131521 -0.0108795064 -3 -Iteration 35 Energy -92.34499035 -C 0.0103344523 -0.1504895567 0.0007790242 -N -1.0675038429 0.2703255614 0.0106228390 -H 1.0622428471 -0.1184602585 -0.0108683083 -3 -Iteration 36 Energy -92.34690787 -C 0.0129228817 -0.1329862527 0.0006700607 -N -1.0726270828 0.2626486064 0.0107142277 -H 1.0647776576 -0.1282866075 -0.0108507335 -3 -Iteration 37 Energy -92.34861363 -C 0.0154927488 -0.1155111238 0.0005614299 -N -1.0770844714 0.2548636581 0.0107988349 -H 1.0666651791 -0.1379767881 -0.0108267100 -3 -Iteration 38 Energy -92.35010032 -C 0.0180366199 -0.0980954596 0.0004533575 -N -1.0808631475 0.2469836451 0.0108764603 -H 1.0678999841 -0.1475124393 -0.0107962629 -3 -Iteration 39 Energy -92.35136021 -C 0.0205392789 -0.0807826109 0.0003462094 -N -1.0839475412 0.2390271240 0.0109468483 -H 1.0684817188 -0.1568687669 -0.0107595028 -3 -Iteration 40 Energy -92.35238560 -C 0.0229775439 -0.0636376565 0.0002405390 -N -1.0863141638 0.2310222378 0.0110096123 -H 1.0684100763 -0.1660088351 -0.0107165964 -3 -Iteration 41 Energy -92.35316957 -C 0.0253116668 -0.0467705375 0.0001372876 -N -1.0879259523 0.2230174527 0.0110641238 -H 1.0676877420 -0.1748711689 -0.0106678565 -3 -Iteration 42 Energy -92.35370720 -C 0.0274783791 -0.0303992677 0.0000381515 -N -1.0887083510 0.2151083555 0.0111091273 -H 1.0663034285 -0.1833333416 -0.0106137239 -3 -Iteration 43 Energy -92.35393896 -C 0.0303582075 -0.0188991813 -0.0000463310 -N -1.0858284108 0.2088107203 0.0111066665 -H 1.0605436598 -0.1885357928 -0.0105267806 -3 -Iteration 44 Energy -92.35399226 -C 0.0296668944 -0.0134655448 -0.0000638150 -N -1.0896656412 0.2069398996 0.0111572379 -H 1.0650722034 -0.1920986086 -0.0105598680 -3 -Iteration 45 Energy -92.35328515 -C 0.0402178426 -0.0085098721 -0.0002019994 -N -1.0793419675 0.2017287755 0.0110683931 -H 1.0441975814 -0.1918431572 -0.0103328388 -3 -Iteration 46 Energy -92.35405567 -C 0.0302900416 -0.0048425619 -0.0001103675 -N -1.0867128763 0.2022072014 0.0111467688 -H 1.0614962911 -0.1959888932 -0.0105028464 -3 -Iteration 47 Energy -92.35404660 -C 0.0297051106 -0.0043429087 -0.0005895657 -N -1.0898664674 0.2026016557 0.0114142610 -H 1.0652348133 -0.1968830008 -0.0102911404 -3 -Iteration 48 Energy -92.35191500 -C 0.0464428000 -0.0078165992 -0.0002980380 -N -1.0724235891 0.1995423668 0.0110227806 -H 1.0310542456 -0.1903500214 -0.0101911878 +Iteration 48 Energy -92.33969025 +C -0.6430494858 -0.8915380650 0.0113376419 +N 0.0360230936 0.0479589797 -0.0004173651 +H 0.6120998487 0.8449548315 -0.0103867218 +3 +Iteration 47 Energy -92.33969025 +C -0.6430491780 -0.8915365739 0.0113371818 +N 0.0360233998 0.0479570820 -0.0004163797 +H 0.6120992348 0.8449552380 -0.0103872473 +3 +Iteration 46 Energy -92.33968667 +C -0.6422853461 -0.8930541302 0.0113358253 +N 0.0333099011 0.0498115016 -0.0003952614 +H 0.6140489015 0.8446183748 -0.0104070090 +3 +Iteration 45 Energy -92.33958681 +C -0.6359210610 -0.8983010963 0.0112904306 +N 0.0193644884 0.0611288055 -0.0002949639 +H 0.6216300292 0.8385480370 -0.0104619119 +3 +Iteration 44 Energy -92.33935602 +C -0.6301072676 -0.9033941257 0.0112503447 +N 0.0059373435 0.0712044860 -0.0001946100 +H 0.6292433807 0.8335653860 -0.0105221797 +3 +Iteration 43 Energy -92.33897303 +C -0.6229874592 -0.9076867323 0.0111922922 +N -0.0080156143 0.0826610064 -0.0000948717 +H 0.6360765300 0.8264014721 -0.0105638656 +3 +Iteration 42 Energy -92.33846090 +C -0.6161941843 -0.9121034127 0.0111383812 +N -0.0222328738 0.0931752064 0.0000120989 +H 0.6435005146 0.8203039526 -0.0106169253 +3 +Iteration 41 Energy -92.33780697 +C -0.6081766864 -0.9152250426 0.0110651184 +N -0.0360834975 0.1048257055 0.0001098246 +H 0.6493336404 0.8117750833 -0.0106413881 +3 +Iteration 40 Energy -92.33706037 +C -0.6013653373 -0.9191595815 0.0110087879 +N -0.0505019516 0.1143417481 0.0002235948 +H 0.6569407454 0.8061935796 -0.0106988278 +3 +Iteration 39 Energy -92.33618622 +C -0.5919002454 -0.9199328998 0.0109088771 +N -0.0626604222 0.1269176291 0.0002985567 +H 0.6596341242 0.7943910169 -0.0106738789 +3 +Iteration 38 Energy -92.33517406 +C -0.5839122977 -0.9231212450 0.0108362448 +N -0.0782837385 0.1369715634 0.0004230198 +H 0.6672694927 0.7875254278 -0.0107257097 +3 +Iteration 37 Energy -92.33403666 +C -0.5741026403 -0.9238479248 0.0107323522 +N -0.0918167325 0.1488977476 0.0005160025 +H 0.6709928293 0.7763259234 -0.0107147998 +3 +Iteration 36 Energy -92.33277524 +C -0.5645483870 -0.9249695392 0.0106330718 +N -0.1065020240 0.1599519390 0.0006256012 +H 0.6761238675 0.7663933464 -0.0107251181 +3 +Iteration 35 Energy -92.33139911 +C -0.5542725600 -0.9250812476 0.0105212488 +N -0.1206481978 0.1713821993 0.0007275728 +H 0.6799942144 0.7550747945 -0.0107152667 +3 +Iteration 34 Energy -92.32990743 +C -0.5437318003 -0.9248019766 0.0104047275 +N -0.1350142961 0.1826054639 0.0008329028 +H 0.6838195529 0.7435722590 -0.0107040754 +3 +Iteration 33 Energy -92.32830076 +C -0.5327173203 -0.9238326964 0.0102798475 +N -0.1492153471 0.1938725482 0.0009362264 +H 0.6870061239 0.7313358945 -0.0106825190 +3 +Iteration 32 Energy -92.32657701 +C -0.5213476325 -0.9223179214 0.0101485702 +N -0.1634350026 0.2050351086 0.0010402351 +H 0.6898560916 0.7186585590 -0.0106552504 +3 +Iteration 31 Energy -92.32473382 +C -0.5095755636 -0.9201803731 0.0100100239 +N -0.1775585232 0.2161453387 0.0011434340 +H 0.6922075433 0.7054107806 -0.0106199031 +3 +Iteration 30 Energy -92.32276771 +C -0.4974494325 -0.9174669034 0.0098649527 +N -0.1916392676 0.2271455867 0.0012466722 +H 0.6941621566 0.6916970629 -0.0105780700 +3 +Iteration 29 Energy -92.32067494 +C -0.4849650216 -0.9141567892 0.0097132150 +N -0.2056306479 0.2380408883 0.0013494171 +H 0.6956691260 0.6774916471 -0.0105290772 +3 +Iteration 28 Energy -92.31845162 +C -0.4721550647 -0.9102756040 0.0095552865 +N -0.2195523010 0.2487969789 0.0014520412 +H 0.6967808222 0.6628543713 -0.0104737728 +3 +Iteration 27 Energy -92.31609439 +C -0.4590294423 -0.9058215133 0.0093912667 +N -0.2333787043 0.2594071330 0.0015542967 +H 0.6974816032 0.6477901265 -0.0104120085 +3 +Iteration 26 Energy -92.31360084 +C -0.4456184618 -0.9008175755 0.0092215933 +N -0.2471235466 0.2698443786 0.0016564573 +H 0.6978154649 0.6323489430 -0.0103444957 +3 +Iteration 25 Energy -92.31097020 +C -0.4319361060 -0.8952688880 0.0090464426 +N -0.2607693959 0.2801006479 0.0017583698 +H 0.6977789584 0.6165439864 -0.0102712575 +3 +Iteration 24 Energy -92.30820387 +C -0.4180121744 -0.8891989485 0.0088662487 +N -0.2743317538 0.2901528206 0.0018603102 +H 0.6974173847 0.6004218741 -0.0101930039 +3 +Iteration 23 Energy -92.30530601 +C -0.4038607468 -0.8826149304 0.0086811985 +N -0.2877972423 0.2999944776 0.0019621617 +H 0.6967314456 0.5839961990 -0.0101098053 +3 +Iteration 22 Energy -92.30228400 +C -0.3895122159 -0.8755412075 0.0084917367 +N -0.3011879003 0.3096038131 0.0020642659 +H 0.6957735726 0.5673131406 -0.0100224477 +3 +Iteration 21 Energy -92.29914877 +C -0.3749762090 -0.8679816081 0.0082979862 +N -0.3144865121 0.3189792452 0.0021664417 +H 0.6945361776 0.5503781092 -0.0099308730 +3 +Iteration 20 Energy -92.29591499 +C -0.3602891153 -0.8599649771 0.0081004776 +N -0.3277325656 0.3280945865 0.0022692417 +H 0.6930951374 0.5332461368 -0.0098361644 +3 +Iteration 19 Energy -92.29260094 +C -0.3454473078 -0.8514829922 0.0078991330 +N -0.3408863628 0.3369593130 0.0023721880 +H 0.6914071271 0.5158994253 -0.0097377662 +3 +Iteration 18 Energy -92.28922831 +C -0.3304989011 -0.8425736370 0.0076946535 +N -0.3540143170 0.3455403654 0.0024761592 +H 0.6895866746 0.4984090178 -0.0096372578 +3 +Iteration 17 Energy -92.28582160 +C -0.3154549345 -0.8332388454 0.0074871686 +N -0.3671095112 0.3538330485 0.0025811012 +H 0.6876379022 0.4807815432 -0.0095347149 +3 +Iteration 16 Energy -92.28240730 +C -0.3003436055 -0.8234944400 0.0072770596 +N -0.3801991705 0.3618206549 0.0026873887 +H 0.6856162325 0.4630495313 -0.0094308934 +3 +Iteration 15 Energy -92.27901291 +C -0.2851981652 -0.8133573515 0.0070647678 +N -0.3933195611 0.3694831445 0.0027955105 +H 0.6835911827 0.4452499532 -0.0093267235 +3 +Iteration 14 Energy -92.27566585 +C -0.2700602984 -0.8028470749 0.0068508390 +N -0.4065206461 0.3767952716 0.0029061292 +H 0.6816544009 0.4274275495 -0.0092234133 +3 +Iteration 13 Energy -92.27239219 +C -0.2549841200 -0.7919869979 0.0066359725 +N -0.4198705979 0.3837246797 0.0030201391 +H 0.6799281743 0.4096380645 -0.0091225568 +3 +Iteration 12 Energy -92.26921556 +C -0.2400418002 -0.7808062885 0.0064210917 +N -0.4334610359 0.3902294948 0.0031387349 +H 0.6785762926 0.3919525399 -0.0090262717 +3 +Iteration 11 Energy -92.26615623 +C -0.2253293305 -0.7693415958 0.0062074149 +N -0.4474088417 0.3962566577 0.0032634388 +H 0.6778116288 0.3744606843 -0.0089372988 +3 +Iteration 10 Energy -92.26323078 +C -0.2109707506 -0.7576384685 0.0059965081 +N -0.4618511892 0.4017421885 0.0033960453 +H 0.6778953963 0.3572720261 -0.0088589986 +3 +Iteration 9 Energy -92.26045279 +C -0.1971169568 -0.7457516137 0.0057902730 +N -0.4769294426 0.4066153667 0.0035384259 +H 0.6791198559 0.3405119933 -0.0087951440 +3 +Iteration 8 Energy -92.25783498 +C -0.1839314097 -0.7337411490 0.0055907736 +N -0.4927575838 0.4108097398 0.0036921327 +H 0.6817624500 0.3243071554 -0.0087493514 +3 +Iteration 7 Energy -92.25539276 +C -0.1715585740 -0.7216623251 0.0053998440 +N -0.5093827767 0.4142802237 0.0038578893 +H 0.6860148072 0.3087578476 -0.0087241783 +3 +Iteration 6 Energy -92.25314832 +C -0.1600903932 -0.7095535159 0.0052186661 +N -0.5267667829 0.4170162697 0.0040353261 +H 0.6919306326 0.2939129924 -0.0087204373 +3 +Iteration 5 Energy -92.25113320 +C -0.1495508884 -0.6974293095 0.0050475697 +N -0.5448009847 0.4190424250 0.0042231426 +H 0.6994253296 0.2797626307 -0.0087371574 +3 +Iteration 4 Energy -92.24938797 +C -0.1399078619 -0.6852834865 0.0048861742 +N -0.5633433562 0.4204064657 0.0044195661 +H 0.7083246746 0.2662527671 -0.0087721854 +3 +Iteration 3 Energy -92.24795860 +C -0.1310860418 -0.6730899693 0.0047335366 +N -0.5822490417 0.4211680618 0.0046227378 +H 0.7184085400 0.2532976537 -0.0088227194 +3 +Iteration 2 Energy -92.24689275 +C -0.1225950869 -0.6606510826 0.0045833852 +N -0.6010531509 0.4215203978 0.0048266851 +H 0.7287216943 0.2405064309 -0.0088765154 +3 +Iteration 1 Energy -92.24623642 +C -0.1163043868 -0.6488143548 0.0044600627 +N -0.6209489004 0.4209155005 0.0050469781 +H 0.7423267437 0.2292746006 -0.0089734859 +3 +Iteration 1 Energy -92.24624150 +C -0.1014881395 -0.6238562442 0.0041830653 +N -0.6574653685 0.4198785935 0.0054509638 +H 0.7640269645 0.2053533969 -0.0091004742 +3 +Iteration 2 Energy -92.24693987 +C -0.0968298258 -0.6117399755 0.0040763001 +N -0.6770790259 0.4181794637 0.0056732158 +H 0.7789823083 0.1949362580 -0.0092159610 +3 +Iteration 3 Energy -92.24813091 +C -0.0903854467 -0.5984024542 0.0039443810 +N -0.6955443575 0.4165592884 0.0058825501 +H 0.7910032606 0.1832189120 -0.0092933762 +3 +Iteration 4 Energy -92.24980472 +C -0.0850731553 -0.5851896478 0.0038254128 +N -0.7143311582 0.4144680396 0.0060975698 +H 0.8044777700 0.1720973544 -0.0093894278 +3 +Iteration 5 Energy -92.25194051 +C -0.0798888956 -0.5717046511 0.0037065900 +N -0.7327918036 0.4121013598 0.0063102933 +H 0.8177541557 0.1609790375 -0.0094833284 +3 +Iteration 6 Energy -92.25450911 +C -0.0749633823 -0.5580058918 0.0035896106 +N -0.7509944422 0.4094467454 0.0065215231 +H 0.8310312809 0.1499348926 -0.0095775789 +3 +Iteration 7 Energy -92.25747221 +C -0.0702484743 -0.5440813084 0.0034738929 +N -0.7688983359 0.4065194415 0.0067307438 +H 0.8442202668 0.1389376131 -0.0096710818 +3 +Iteration 8 Energy -92.26078499 +C -0.0657254349 -0.5299307816 0.0033592315 +N -0.7864812915 0.4033294713 0.0069376663 +H 0.8572801829 0.1279770565 -0.0097633429 +3 +Iteration 9 Energy -92.26439824 +C -0.0613770501 -0.5155551296 0.0032454419 +N -0.8037224780 0.3998858405 0.0071420216 +H 0.8701729845 0.1170450353 -0.0098539086 +3 +Iteration 10 Energy -92.26826056 +C -0.0571889590 -0.5009565546 0.0031323773 +N -0.8206029266 0.3961965342 0.0073435655 +H 0.8828653422 0.1061357666 -0.0099423879 +3 +Iteration 11 Energy -92.27232036 +C -0.0531499514 -0.4861387692 0.0030199323 +N -0.8371057423 0.3922687506 0.0075420800 +H 0.8953291502 0.0952457647 -0.0100284574 +3 +Iteration 12 Energy -92.27652752 +C -0.0492513610 -0.4711067585 0.0029080350 +N -0.8532157614 0.3881091506 0.0077373687 +H 0.9075405789 0.0843733541 -0.0101118489 +3 +Iteration 13 Energy -92.28083476 +C -0.0454847788 -0.4558659541 0.0027966187 +N -0.8689180606 0.3837240565 0.0079292394 +H 0.9194762959 0.0735176438 -0.0101923032 +3 +Iteration 14 Energy -92.28519859 +C -0.0418432931 -0.4404226502 0.0026856367 +N -0.8841987858 0.3791194957 0.0081175127 +H 0.9311155354 0.0626789007 -0.0102695945 +3 +Iteration 15 Energy -92.28957981 +C -0.0383199651 -0.4247834400 0.0025750436 +N -0.8990438351 0.3743011986 0.0083020081 +H 0.9424372567 0.0518579876 -0.0103434968 +3 +Iteration 16 Energy -92.29394382 +C -0.0349026957 -0.4089539833 0.0024647331 +N -0.9134375870 0.3692750669 0.0084825277 +H 0.9534137392 0.0410546626 -0.0104137060 +3 +Iteration 17 Energy -92.29826057 +C -0.0315880118 -0.3929425540 0.0023547055 +N -0.9273680213 0.3640463803 0.0086589157 +H 0.9640294896 0.0302719198 -0.0104800664 +3 +Iteration 18 Energy -92.30250429 +C -0.0283644892 -0.3767556582 0.0022448659 +N -0.9408187899 0.3586202592 0.0088309698 +H 0.9742567356 0.0195111452 -0.0105422808 +3 +Iteration 19 Energy -92.30665316 +C -0.0252236985 -0.3604010277 0.0021351576 +N -0.9537757215 0.3530017368 0.0089985118 +H 0.9840728765 0.0087750371 -0.0106001146 +3 +Iteration 20 Energy -92.31068889 +C -0.0221566639 -0.3438866490 0.0020255195 +N -0.9662243684 0.3471956563 0.0091613615 +H 0.9934544888 -0.0019332612 -0.0106533261 +3 +Iteration 21 Energy -92.31459622 +C -0.0191539995 -0.3272208201 0.0019158871 +N -0.9781500359 0.3412066699 0.0093193368 +H 1.0023774919 -0.0126101035 -0.0107016690 +3 +Iteration 22 Energy -92.31836249 +C -0.0162056568 -0.3104121459 0.0018061902 +N -0.9895373835 0.3350391984 0.0094722497 +H 1.0108164968 -0.0232513063 -0.0107448850 +3 +Iteration 23 Energy -92.32197720 +C -0.0133044950 -0.2934702993 0.0016963954 +N -1.0003734620 0.3286978355 0.0096199373 +H 1.0187514135 -0.0338517900 -0.0107827778 +3 +Iteration 24 Energy -92.32543161 +C -0.0104431878 -0.2764053482 0.0015864690 +N -1.0106452765 0.3221871041 0.0097622368 +H 1.0261619208 -0.0444060097 -0.0108151509 +3 +Iteration 25 Energy -92.32871839 +C -0.0076152797 -0.2592279969 0.0014763896 +N -1.0203404677 0.3155115808 0.0098989920 +H 1.0330292039 -0.0549078377 -0.0108418267 +3 +Iteration 26 Energy -92.33183128 +C -0.0048150316 -0.2419495590 0.0013661468 +N -1.0294472757 0.3086759350 0.0100300528 +H 1.0393357637 -0.0653506298 -0.0108626447 +3 +Iteration 27 Energy -92.33476482 +C -0.0020381190 -0.2245820833 0.0012557487 +N -1.0379550739 0.3016850640 0.0101552805 +H 1.0450666494 -0.0757272345 -0.0108774743 +3 +Iteration 28 Energy -92.33751400 +C 0.0007195846 -0.2071382734 0.0011452089 +N -1.0458531967 0.2945439897 0.0102745352 +H 1.0502070686 -0.0860299701 -0.0108861892 +3 +Iteration 29 Energy -92.34007404 +C 0.0034602646 -0.1896317376 0.0010345661 +N -1.0531324602 0.2872581681 0.0103876915 +H 1.0547456521 -0.0962506843 -0.0108887027 +3 +Iteration 30 Energy -92.34244008 +C 0.0061866691 -0.1720770156 0.0009238572 +N -1.0597825623 0.2798332197 0.0104946109 +H 1.0586693498 -0.1063804578 -0.0108849132 +3 +Iteration 31 Energy -92.34460692 +C 0.0088983123 -0.1544901094 0.0008131614 +N -1.0657952344 0.2722756233 0.0105951730 +H 1.0619703786 -0.1164097677 -0.0108747795 +3 +Iteration 32 Energy -92.34656878 +C 0.0115969327 -0.1368889628 0.0007025424 +N -1.0711583788 0.2645921050 0.0106892147 +H 1.0646349026 -0.1263273960 -0.0108582021 +3 +Iteration 33 Energy -92.34831919 +C 0.0142758098 -0.1192943798 0.0005921694 +N -1.0758654591 0.2567916553 0.0107766230 +H 1.0666631058 -0.1361215293 -0.0108352375 +3 +Iteration 34 Energy -92.34985089 +C 0.0169366925 -0.1017321808 0.0004821424 +N -1.0798974589 0.2488834646 0.0108571476 +H 1.0680342229 -0.1457755375 -0.0108057352 +3 +Iteration 35 Energy -92.35115608 +C 0.0195597076 -0.0842358184 0.0003728328 +N -1.0832483188 0.2408831294 0.0109306506 +H 1.0687620677 -0.1552715648 -0.0107699285 +3 +Iteration 36 Energy -92.35222683 +C 0.0221440476 -0.0668542857 0.0002644752 +N -1.0858822045 0.2328080871 0.0109966597 +H 1.0688116134 -0.1645780552 -0.0107275801 +3 +Iteration 37 Energy -92.35305576 +C 0.0246310072 -0.0496640439 0.0001580638 +N -1.0877932249 0.2246970864 0.0110549320 +H 1.0682356742 -0.1736572962 -0.0106794409 +3 +Iteration 38 Energy -92.35363726 +C 0.0270261200 -0.0328248848 0.0000542745 +N -1.0888592198 0.2166052045 0.0111038782 +H 1.0669065563 -0.1824045735 -0.0106245978 +3 +Iteration 39 Energy -92.35396904 +C 0.0290158235 -0.0167607305 -0.0000415111 +N -1.0890726755 0.2087575444 0.0111423786 +H 1.0651303085 -0.1906210677 -0.0105673127 +3 +Iteration 40 Energy -92.35405912 +C 0.0301112976 -0.0048148946 -0.0001085409 +N -1.0872940563 0.2025936805 0.0111513413 +H 1.0622562152 -0.1964030397 -0.0105092455 +3 +Iteration 41 Energy -92.35405911 +C 0.0301107679 -0.0048158663 -0.0001085307 +N -1.0872917138 0.2025937595 0.0111513153 +H 1.0622544024 -0.1964021470 -0.0105092297 diff --git a/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz index f758f40c..2882142c 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz +++ b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz @@ -1,465 +1,450 @@ 3 -Iteration 45 Energy -92.33763690 -C -0.6223373544 -0.8926187813 0.0111157426 -N 0.0102136486 0.0850054426 -0.0003049631 -H 0.6171971622 0.8089890849 -0.0102772246 -3 -Iteration 44 Energy -92.33907645 -C -0.6314947494 -0.9068665445 0.0112815160 -N -0.0026229438 0.0730516525 -0.0001095398 -H 0.6391911497 0.8351906382 -0.0106384214 -3 -Iteration 43 Energy -92.33884474 -C -0.6221703818 -0.9041520035 0.0111670695 -N -0.0078287508 0.0866180286 -0.0001151509 -H 0.6350725891 0.8189097211 -0.0105183636 -3 -Iteration 42 Energy -92.33837289 -C -0.6218963402 -0.9133039923 0.0112062516 -N -0.0229695006 0.0881976866 0.0000430914 -H 0.6499392973 0.8264820519 -0.0107157882 -3 -Iteration 41 Energy -92.33800692 -C -0.6114226507 -0.9095091755 0.0110742618 -N -0.0276582267 0.1028076656 0.0000270178 -H 0.6441543339 0.8080772562 -0.0105677247 -3 -Iteration 40 Energy -92.33743436 -C -0.6065549103 -0.9161800756 0.0110517901 -N -0.0450763320 0.1095351300 0.0001864325 -H 0.6567046988 0.8080206919 -0.0107046677 -3 -Iteration 39 Energy -92.33661392 -C -0.5973103535 -0.9175233035 0.0109569168 -N -0.0577559736 0.1220566706 0.0002673424 -H 0.6601397836 0.7968423792 -0.0106907043 -3 -Iteration 38 Energy -92.33563842 -C -0.5887016938 -0.9200428080 0.0108744163 -N -0.0726865095 0.1330183136 0.0003800486 -H 0.6664616598 0.7884002406 -0.0107209099 -3 -Iteration 37 Energy -92.33454126 -C -0.5793200696 -0.9214661566 0.0107784137 -N -0.0869233188 0.1445142920 0.0004827082 -H 0.6713168449 0.7783276108 -0.0107275671 -3 -Iteration 36 Energy -92.33332326 -C -0.5696381312 -0.9224918622 0.0106772955 -N -0.1013924667 0.1558328412 0.0005887256 -H 0.6761040544 0.7680347672 -0.0107324662 -3 -Iteration 35 Energy -92.33198785 -C -0.5594937157 -0.9228629008 0.0105681042 -N -0.1157354386 0.1672054316 0.0006931145 -H 0.6803026108 0.7570332154 -0.0107276638 -3 -Iteration 34 Energy -92.33053517 -C -0.5489606544 -0.9226745554 0.0104520862 -N -0.1300869796 0.1785193981 0.0007978673 -H 0.6841210905 0.7455309035 -0.0107163985 -3 -Iteration 33 Energy -92.32896514 -C -0.5380144760 -0.9218778709 0.0103287482 -N -0.1443710865 0.1898041216 0.0009020176 -H 0.6874590190 0.7334494955 -0.0106972109 -3 -Iteration 32 Energy -92.32727618 -C -0.5266801417 -0.9204928794 0.0101984556 -N -0.1586114792 0.2010219289 0.0010059984 -H 0.6903650774 0.7208466966 -0.0106708991 -3 -Iteration 31 Energy -92.32546592 -C -0.5149610553 -0.9185088460 0.0100611960 -N -0.1727815718 0.2121667083 0.0011095472 -H 0.6928160836 0.7077178839 -0.0106371884 -3 -Iteration 30 Energy -92.32353111 -C -0.5028765621 -0.9159356428 0.0099172264 -N -0.1868841530 0.2232134840 0.0012128097 -H 0.6948341716 0.6940979050 -0.0105964812 -3 -Iteration 29 Energy -92.32146805 -C -0.4904396308 -0.9127745402 0.0097666945 -N -0.2009059321 0.2341473979 0.0013157089 -H 0.6964190195 0.6800028885 -0.0105488485 -3 -Iteration 28 Energy -92.31927293 -C -0.4776698097 -0.9090350429 0.0096098577 -N -0.2148419390 0.2449488623 0.0014182809 -H 0.6975852053 0.6654619268 -0.0104945837 -3 -Iteration 27 Energy -92.31694228 -C -0.4645878886 -0.9047283972 0.0094469952 -N -0.2286897284 0.2555982197 0.0015205895 -H 0.6983510735 0.6505059236 -0.0104340298 -3 -Iteration 26 Energy -92.31447357 -C -0.4512131088 -0.8998646996 0.0092783639 -N -0.2424423026 0.2660799294 0.0016226297 -H 0.6987288679 0.6351605165 -0.0103674387 -3 -Iteration 25 Energy -92.31186572 -C -0.4375682887 -0.8944589280 0.0091042822 -N -0.2560999789 0.2763763107 0.0017244867 -H 0.6987417241 0.6194583635 -0.0102952140 -3 -Iteration 24 Energy -92.30911977 -C -0.4236751657 -0.8885255565 0.0089250545 -N -0.2696625126 0.2864721297 0.0018262278 -H 0.6984111349 0.6034291730 -0.0102177274 -3 -Iteration 23 Energy -92.30623936 -C -0.4095560024 -0.8820801544 0.0087409959 -N -0.2831329548 0.2963524907 0.0019279551 -H 0.6977624137 0.5871034100 -0.0101353961 -3 -Iteration 22 Energy -92.30323132 -C -0.3952313611 -0.8751370117 0.0085523970 -N -0.2965132401 0.3060050425 0.0020297467 -H 0.6968180577 0.5705077154 -0.0100485888 -3 -Iteration 21 Energy -92.30010597 -C -0.3807236826 -0.8677122523 0.0083595776 -N -0.3098116747 0.3154159477 0.0021317571 -H 0.6956088138 0.5536720508 -0.0099577798 -3 -Iteration 20 Energy -92.29687731 -C -0.3660525374 -0.8598188022 0.0081628111 -N -0.3230333557 0.3245741341 0.0022340932 -H 0.6941593496 0.5366204143 -0.0098633494 -3 -Iteration 19 Energy -92.29356307 -C -0.3512362879 -0.8514683674 0.0079623522 -N -0.3361825903 0.3334700947 0.0023368457 -H 0.6924923347 0.5193740189 -0.0097656430 -3 -Iteration 18 Energy -92.29018450 -C -0.3363034037 -0.8426825855 0.0077586119 -N -0.3492864826 0.3420877610 0.0024403851 -H 0.6906633428 0.5019705708 -0.0096654421 -3 -Iteration 17 Energy -92.28676567 -C -0.3212665972 -0.8334626286 0.0075517345 -N -0.3623394160 0.3504188280 0.0025446882 -H 0.6886794697 0.4844195468 -0.0095628678 -3 -Iteration 16 Energy -92.28333294 -C -0.3061537717 -0.8238259787 0.0073421057 -N -0.3753680438 0.3584477211 0.0026501182 -H 0.6865952719 0.4667540038 -0.0094586690 -3 -Iteration 15 Energy -92.27991396 -C -0.2909955153 -0.8137884812 0.0071301328 -N -0.3884033139 0.3661561703 0.0027570977 -H 0.6844722858 0.4490080571 -0.0093536756 -3 -Iteration 14 Energy -92.27653656 -C -0.2758307773 -0.8033688096 0.0069163278 -N -0.4014904177 0.3735204319 0.0028662300 -H 0.6823946515 0.4312241239 -0.0092490029 -3 -Iteration 13 Energy -92.27322762 -C -0.2607121945 -0.7925905634 0.0067013749 -N -0.4146962168 0.3805083753 0.0029783942 -H 0.6804818678 0.4134579343 -0.0091462142 -3 -Iteration 12 Energy -92.27001184 -C -0.2457134762 -0.7814847183 0.0064862225 -N -0.4281176730 0.3870758233 0.0030948540 -H 0.6789046057 0.3957846412 -0.0090475216 -3 -Iteration 11 Energy -92.26691082 -C -0.2309374141 -0.7700919033 0.0062721818 -N -0.4418868133 0.3931636761 0.0032173250 -H 0.6778976838 0.3783039734 -0.0089559519 -3 -Iteration 10 Energy -92.26394242 -C -0.2165311168 -0.7584683582 0.0060611200 -N -0.4561795238 0.3986919070 0.0033480989 -H 0.6777840971 0.3611521974 -0.0088756641 -3 -Iteration 9 Energy -92.26112073 -C -0.2026825043 -0.7466838079 0.0058554130 -N -0.4711856006 0.4035669113 0.0034896820 -H 0.6789415615 0.3444926428 -0.0088115401 -3 -Iteration 8 Energy -92.25845736 -C -0.1895996288 -0.7348155171 0.0056576913 -N -0.4870569326 0.4076981186 0.0036441521 -H 0.6817300179 0.3284931448 -0.0087682885 -3 -Iteration 7 Energy -92.25596465 -C -0.1774553696 -0.7229295717 0.0054701495 -N -0.5038342853 0.4110287975 0.0038122164 -H 0.6863631113 0.3132765204 -0.0087488110 -3 -Iteration 6 Energy -92.25366133 -C -0.1663409038 -0.7110654423 0.0052939661 -N -0.5214207329 0.4135539249 0.0039928384 -H 0.6928350932 0.2988872637 -0.0087532496 -3 -Iteration 5 Energy -92.25157756 -C -0.1562481009 -0.6992304992 0.0051290863 -N -0.5395968663 0.4153185945 0.0041834117 -H 0.7009184237 0.2852876509 -0.0087789430 -3 -Iteration 4 Energy -92.24975604 -C -0.1470950239 -0.6874143778 0.0049745665 -N -0.5580482270 0.4163970012 0.0043801565 -H 0.7102167074 0.2723931227 -0.0088211681 -3 -Iteration 3 Energy -92.24824845 -C -0.1386574480 -0.6755869132 0.0048278165 -N -0.5763239158 0.4169288274 0.0045774999 -H 0.7200548203 0.2600338320 -0.0088717615 -3 -Iteration 2 Energy -92.24708267 -C -0.1328338396 -0.6647578634 0.0047142444 -N -0.5944239631 0.4162456032 0.0047785228 -H 0.7323312592 0.2498880063 -0.0089592122 -3 -Iteration 1 Energy -92.24630891 -C -0.1172894009 -0.6502105440 0.0044772656 -N -0.6023541529 0.4184377599 0.0048551147 -H 0.7247170103 0.2331485303 -0.0087988254 -3 -Iteration 1 Energy -92.24578956 -C -0.1087717134 -0.6355055337 0.0043163783 -N -0.6585846836 0.4228602543 0.0054494591 -H 0.7724298535 0.2140210255 -0.0092322825 -3 -Iteration 2 Energy -92.24554709 -C -0.0908697213 -0.6272247323 0.0040825062 -N -0.6472519643 0.4266604088 0.0053080535 -H 0.7431951421 0.2019400696 -0.0088570049 -3 -Iteration 3 Energy -92.24620732 -C -0.1006009905 -0.6255426664 0.0041811389 -N -0.6636911476 0.4224001594 0.0055074046 -H 0.7693655946 0.2045182532 -0.0091549886 -3 -Iteration 4 Energy -92.24694766 -C -0.0949149965 -0.6126558008 0.0040595874 -N -0.6803129780 0.4204383105 0.0056981600 -H 0.7803014310 0.1935932364 -0.0092241925 -3 -Iteration 5 Energy -92.24815325 -C -0.0900727893 -0.5998083068 0.0039474420 -N -0.6992481506 0.4183731191 0.0059146816 -H 0.7943943964 0.1828109339 -0.0093285687 -3 -Iteration 6 Energy -92.24983452 -C -0.0844997167 -0.5863647771 0.0038245596 -N -0.7175092664 0.4162315686 0.0061241863 -H 0.8070824396 0.1715089547 -0.0094151910 -3 -Iteration 7 Energy -92.25197311 -C -0.0792731646 -0.5727490933 0.0037046721 -N -0.7356980715 0.4137979355 0.0063342465 -H 0.8200446926 0.1603269040 -0.0095053636 -3 -Iteration 8 Energy -92.25454028 -C -0.0742300126 -0.5589027942 0.0035857267 -N -0.7536373447 0.4110994427 0.0065427993 -H 0.8329408138 0.1491790977 -0.0095949712 -3 -Iteration 9 Energy -92.25749827 -C -0.0693936818 -0.5448396494 0.0034680430 -N -0.7713058101 0.4081368066 0.0067496090 -H 0.8457729484 0.1380785890 -0.0096840971 -3 -Iteration 10 Energy -92.26080286 -C -0.0647696862 -0.5305670100 0.0033517151 -N -0.7886830317 0.4049152174 0.0069544282 -H 0.8585261743 0.1270275388 -0.0097725884 -3 -Iteration 11 Energy -92.26440546 -C -0.0603478461 -0.5160870358 0.0032366417 -N -0.8057450809 0.4014421821 0.0071569606 -H 0.8711663835 0.1160205998 -0.0098600475 -3 -Iteration 12 Energy -92.26825531 -C -0.0561171929 -0.5014020397 0.0031227136 -N -0.8224712113 0.3977251624 0.0073569451 -H 0.8836618607 0.1050526236 -0.0099461038 -3 -Iteration 13 Energy -92.27230139 -C -0.0520632355 -0.4865137987 0.0030097804 -N -0.8388400970 0.3937715724 0.0075541144 -H 0.8959767891 0.0941179725 -0.0100303399 -3 -Iteration 14 Energy -92.27649413 -C -0.0481736810 -0.4714253922 0.0028977220 -N -0.8548329534 0.3895883176 0.0077482313 -H 0.9080800909 0.0832128208 -0.0101123985 -3 -Iteration 15 Energy -92.28078668 -C -0.0444332417 -0.4561396691 0.0027863845 -N -0.8704293723 0.3851820423 0.0079390421 -H 0.9199360705 0.0723333730 -0.0101918717 -3 -Iteration 16 Energy -92.28513593 -C -0.0408291534 -0.4406608318 0.0026756476 -N -0.8856109980 0.3805589102 0.0081263176 -H 0.9315136079 0.0614776678 -0.0102684103 -3 -Iteration 17 Energy -92.28950307 -C -0.0373502825 -0.4249940573 0.0025654134 -N -0.9003590245 0.3757244067 0.0083098271 -H 0.9427827634 0.0506453969 -0.0103416856 -3 -Iteration 18 Energy -92.29385379 -C -0.0339819498 -0.4091443504 0.0024555446 -N -0.9146547851 0.3706842519 0.0084893400 -H 0.9537101914 0.0398358447 -0.0104113298 -3 -Iteration 19 Energy -92.29815844 -C -0.0307200709 -0.3931199094 0.0023460344 -N -0.9284892863 0.3654444218 0.0086647306 -H 0.9642828136 0.0290512338 -0.0104772101 -3 -Iteration 20 Energy -92.30239141 -C -0.0275537043 -0.3769274963 0.0022367941 -N -0.9418464601 0.3600101334 0.0088357991 -H 0.9744736209 0.0182931091 -0.0105390383 -3 -Iteration 21 Energy -92.30653105 -C -0.0244718942 -0.3605742288 0.0021277370 -N -0.9547104298 0.3543863416 0.0090023491 -H 0.9842557805 0.0075636334 -0.0105965312 -3 -Iteration 22 Energy -92.31055916 -C -0.0214640306 -0.3440677579 0.0020187821 -N -0.9670657119 0.3485778207 0.0091641894 -H 0.9936031989 -0.0031343166 -0.0106494166 -3 -Iteration 23 Energy -92.31446050 -C -0.0185179313 -0.3274159483 0.0019098327 -N -0.9788955542 0.3425890523 0.0093211161 -H 1.0024869420 -0.0137973578 -0.0106973940 -3 -Iteration 24 Energy -92.31822248 -C -0.0156263080 -0.3106280494 0.0018008517 -N -0.9901871493 0.3364247161 0.0094729678 -H 1.0108869139 -0.0244209205 -0.0107402645 -3 -Iteration 25 Energy -92.32183461 -C -0.0127831153 -0.2937138949 0.0016918182 -N -1.0009289396 0.3300895559 0.0096195960 -H 1.0187855114 -0.0349999147 -0.0107778593 -3 -Iteration 26 Energy -92.32528808 -C -0.0099788110 -0.2766832639 0.0015826731 -N -1.0111064745 0.3235879466 0.0097608228 -H 1.0261587420 -0.0455289364 -0.0108099410 -3 -Iteration 27 Energy -92.32857549 -C -0.0072044297 -0.2595466985 0.0014733669 -N -1.0207054831 0.3169242504 0.0098964720 -H 1.0329833693 -0.0560018057 -0.0108362840 -3 -Iteration 28 Energy -92.33169056 -C -0.0044590570 -0.2423161799 0.0013639448 -N -1.0297185894 0.3101037151 0.0100264388 -H 1.0392511029 -0.0664117890 -0.0108568287 -3 -Iteration 29 Energy -92.33462770 -C -0.0017341881 -0.2250034877 0.0012543682 -N -1.0381319146 0.3031308410 0.0101505507 -H 1.0449395592 -0.0767516071 -0.0108713640 -3 -Iteration 30 Energy -92.33738191 -C 0.0009693137 -0.2076219147 0.0011447077 -N -1.0459393510 0.2960113592 0.0102687145 -H 1.0500434938 -0.0870136982 -0.0108798673 -3 -Iteration 31 Energy -92.33994828 -C 0.0036585245 -0.1901850296 0.0010349485 -N -1.0531275941 0.2887502269 0.0103807620 -H 1.0545425262 -0.0971894511 -0.0108821556 -3 -Iteration 32 Energy -92.34232194 -C 0.0063314592 -0.1727081589 0.0009251830 -N -1.0596903570 0.2813539136 0.0104865945 -H 1.0584323543 -0.1072700085 -0.0108782227 -3 -Iteration 33 Energy -92.34449768 -C 0.0089891654 -0.1552078593 0.0008154760 -N -1.0656178449 0.2738289491 0.0105860750 -H 1.0617021360 -0.1172453436 -0.0108679962 -3 -Iteration 34 Energy -92.34646974 -C 0.0116283147 -0.1377031919 0.0007059518 -N -1.0709020687 0.2661832719 0.0106790795 -H 1.0643472105 -0.1271043338 -0.0108514764 -3 -Iteration 35 Energy -92.34823162 -C 0.0142503321 -0.1202172464 0.0005967011 -N -1.0755272909 0.2584254023 0.0107653967 -H 1.0663504153 -0.1368324097 -0.0108285429 -3 -Iteration 36 Energy -92.34977615 -C 0.0168408101 -0.1027794331 0.0004880170 -N -1.0794864539 0.2505685714 0.0108448884 -H 1.0677191003 -0.1464133920 -0.0107993505 -3 -Iteration 37 Energy -92.35109554 -C 0.0193948512 -0.0854303489 0.0003801402 -N -1.0827551885 0.2426283875 0.0109172163 -H 1.0684337938 -0.1558222924 -0.0107638017 -3 -Iteration 38 Energy -92.35218178 -C 0.0218841925 -0.0682340512 0.0002736749 -N -1.0853113797 0.2346330303 0.0109820088 -H 1.0685006437 -0.1650232329 -0.0107221288 -3 -Iteration 39 Energy -92.35302727 -C 0.0242676003 -0.0513053494 0.0001696008 -N -1.0871094805 0.2266321975 0.0110385390 -H 1.0679153368 -0.1739511019 -0.0106745849 -3 -Iteration 40 Energy -92.35362536 -C 0.0264510139 -0.0349190986 0.0000702132 -N -1.0880524688 0.2187473983 0.0110851860 -H 1.0666749114 -0.1824525534 -0.0106218443 -3 -Iteration 41 Energy -92.35397055 -C 0.0281935150 -0.0199879846 -0.0000176482 -N -1.0878859926 0.2113908698 0.0111172695 -H 1.0647659340 -0.1900271390 -0.0105660664 -3 -Iteration 42 Energy -92.35405194 -C 0.0280776781 -0.0129738643 -0.0000487073 -N -1.0862233530 0.2077198116 0.0111160117 -H 1.0632191314 -0.1933702011 -0.0105337495 -3 -Iteration 43 Energy -92.35406603 -C 0.0315050651 -0.0051099825 -0.0001224180 -N -1.0885880971 0.2040981166 0.0111585547 -H 1.0621564885 -0.1976123880 -0.0105025818 -3 -Iteration 44 Energy -92.35408279 -C 0.0305455113 -0.0049309397 -0.0001127530 -N -1.0870903928 0.2038251420 0.0111434394 -H 1.0616183380 -0.1975184560 -0.0104971315 -3 -Iteration 45 Energy -92.35281029 -C 0.0159926349 -0.0022126553 0.0000338150 -N -1.0991598068 0.2060758796 0.0112650124 -H 1.0882406284 -0.2024874781 -0.0107652726 -3 -Iteration 46 Energy -92.35391359 -C 0.0255278067 -0.0040671233 -0.0000618793 -N -1.0927197619 0.2049085750 0.0111999879 -H 1.0722654117 -0.1994657055 -0.0106045538 -3 -Iteration 47 Energy -92.35404801 -C 0.0312170390 -0.0050563086 -0.0001195166 -N -1.0843991809 0.2033202101 0.0111163455 -H 1.0582555984 -0.1968881553 -0.0104632740 -3 -Iteration 48 Energy -92.35241670 -C 0.0141123135 -0.0019141429 0.0000529954 -N -1.1016835621 0.2065741904 0.0112903062 -H 1.0926447050 -0.2032843014 -0.0108097468 +Iteration 48 Energy -92.33971298 +C -0.6430492752 -0.8915383656 0.0113371879 +N 0.0360194399 0.0479516754 -0.0004163044 +H 0.6121032918 0.8449624364 -0.0103873286 +3 +Iteration 47 Energy -92.33971298 +C -0.6430492757 -0.8915383740 0.0113371912 +N 0.0360194360 0.0479516869 -0.0004163115 +H 0.6121032962 0.8449624334 -0.0103873248 +3 +Iteration 46 Energy -92.33970967 +C -0.6423324929 -0.8930046437 0.0113361126 +N 0.0334267539 0.0497196177 -0.0003961154 +H 0.6139791956 0.8446607722 -0.0104064424 +3 +Iteration 45 Energy -92.33961119 +C -0.6359904271 -0.8982587190 0.0112909937 +N 0.0194996960 0.0610110174 -0.0002958992 +H 0.6215641876 0.8386234478 -0.0104615396 +3 +Iteration 44 Energy -92.33938054 +C -0.6301406334 -0.9033568814 0.0112505378 +N 0.0060303940 0.0711463221 -0.0001953592 +H 0.6291836960 0.8335863055 -0.0105216236 +3 +Iteration 43 Energy -92.33899816 +C -0.6230417855 -0.9076774766 0.0111928434 +N -0.0079416869 0.0825782513 -0.0000952985 +H 0.6360569288 0.8264749715 -0.0105639901 +3 +Iteration 42 Energy -92.33848522 +C -0.6161967066 -0.9120679077 0.0111382452 +N -0.0221700879 0.0931668261 0.0000114511 +H 0.6434402510 0.8202768278 -0.0106161414 +3 +Iteration 41 Energy -92.33783116 +C -0.6082170537 -0.9152467470 0.0110656597 +N -0.0360746389 0.1047697178 0.0001099858 +H 0.6493651492 0.8118527754 -0.0106420906 +3 +Iteration 40 Energy -92.33708203 +C -0.6013143721 -0.9191218213 0.0110080567 +N -0.0504825035 0.1144160774 0.0002230396 +H 0.6568703321 0.8060814901 -0.0106975414 +3 +Iteration 39 Energy -92.33620650 +C -0.5918788647 -0.9199337685 0.0109086474 +N -0.0626862396 0.1269469207 0.0002987039 +H 0.6596385608 0.7943625939 -0.0106737964 +3 +Iteration 38 Energy -92.33519566 +C -0.5839401311 -0.9231679678 0.0108367644 +N -0.0783421929 0.1369337713 0.0004238330 +H 0.6673557805 0.7876099427 -0.0107270425 +3 +Iteration 37 Energy -92.33405975 +C -0.5740876273 -0.9238286913 0.0107320994 +N -0.0917940894 0.1489156144 0.0005156727 +H 0.6709551733 0.7762888231 -0.0107142172 +3 +Iteration 36 Energy -92.33279880 +C -0.5645561963 -0.9249812653 0.0106332112 +N -0.1065157836 0.1599406899 0.0006258034 +H 0.6761454364 0.7664163216 -0.0107254598 +3 +Iteration 35 Energy -92.33142315 +C -0.5542697531 -0.9250780746 0.0105212035 +N -0.1206430035 0.1713842802 0.0007275065 +H 0.6799862131 0.7550695406 -0.0107151550 +3 +Iteration 34 Energy -92.32993183 +C -0.5437342416 -0.9248058921 0.0104047723 +N -0.1350181056 0.1826011072 0.0008329645 +H 0.6838258036 0.7435805311 -0.0107041819 +3 +Iteration 33 Energy -92.32832551 +C -0.5327169503 -0.9238328317 0.0102798441 +N -0.1492139354 0.1938716237 0.0009362152 +H 0.6870043422 0.7313369542 -0.0106825044 +3 +Iteration 32 Energy -92.32660205 +C -0.5213489474 -0.9223202735 0.0101485954 +N -0.1634365927 0.2050321834 0.0010402660 +H 0.6898589966 0.7186638363 -0.0106553065 +3 +Iteration 31 Energy -92.32475913 +C -0.5095758687 -0.9201814403 0.0100100322 +N -0.1775582518 0.2161435518 0.0011434393 +H 0.6922075770 0.7054136347 -0.0106199166 +3 +Iteration 30 Energy -92.32279322 +C -0.4974504390 -0.9174688684 0.0098649728 +N -0.1916403954 0.2271429244 0.0012466968 +H 0.6941642909 0.6917016902 -0.0105781147 +3 +Iteration 29 Energy -92.32070060 +C -0.4849654878 -0.9141580987 0.0097132261 +N -0.2056309007 0.2380387101 0.0013494299 +H 0.6956698450 0.6774951348 -0.0105291011 +3 +Iteration 28 Energy -92.31847738 +C -0.4721557688 -0.9102772031 0.0095553015 +N -0.2195530415 0.2487944863 0.0014520608 +H 0.6967822668 0.6628584630 -0.0104738074 +3 +Iteration 27 Energy -92.31612021 +C -0.4590301609 -0.9058231187 0.0093912820 +N -0.2333795821 0.2594045081 0.0015543184 +H 0.6974831995 0.6477943568 -0.0104120454 +3 +Iteration 26 Energy -92.31362667 +C -0.4456191067 -0.9008190891 0.0092216073 +N -0.2471243236 0.2698417473 0.0016564779 +H 0.6978168868 0.6323530880 -0.0103445304 +3 +Iteration 25 Energy -92.31099601 +C -0.4319370023 -0.8952706636 0.0090464606 +N -0.2607707042 0.2800976701 0.0017583978 +H 0.6977811629 0.6165487397 -0.0102713035 +3 +Iteration 24 Energy -92.30822962 +C -0.4180130356 -0.8892006675 0.0088662660 +N -0.2743330131 0.2901497777 0.0018603380 +H 0.6974195052 0.6004266361 -0.0101930491 +3 +Iteration 23 Energy -92.30533169 +C -0.4038618496 -0.8826168688 0.0086812195 +N -0.2877989984 0.2999910892 0.0019621965 +H 0.6967343046 0.5840015258 -0.0101098611 +3 +Iteration 22 Energy -92.30230959 +C -0.3895130511 -0.8755428618 0.0084917535 +N -0.3011890999 0.3096005801 0.0020642939 +H 0.6957756075 0.5673180279 -0.0100224925 +3 +Iteration 21 Energy -92.29917428 +C -0.3749774086 -0.8679836041 0.0082980085 +N -0.3144884091 0.3189756114 0.0021664792 +H 0.6945392743 0.5503837389 -0.0099309328 +3 +Iteration 20 Energy -92.29594043 +C -0.3602901499 -0.8599667880 0.0081004973 +N -0.3277340838 0.3280909856 0.0022692748 +H 0.6930976901 0.5332515486 -0.0098362172 +3 +Iteration 19 Energy -92.29262632 +C -0.3454482007 -0.8514846654 0.0078991505 +N -0.3408875351 0.3369557566 0.0023722172 +H 0.6914091922 0.5159046550 -0.0097378128 +3 +Iteration 18 Energy -92.28925366 +C -0.3304997216 -0.8425752415 0.0076946699 +N -0.3540152783 0.3455368081 0.0024761861 +H 0.6895884564 0.4984141796 -0.0096373011 +3 +Iteration 17 Energy -92.28584693 +C -0.3154555308 -0.8332402616 0.0074871817 +N -0.3671099514 0.3538296144 0.0025811219 +H 0.6876389387 0.4807863934 -0.0095347486 +3 +Iteration 16 Energy -92.28243261 +C -0.3003439699 -0.8234956735 0.0072770692 +N -0.3801990780 0.3618173606 0.0026874029 +H 0.6856165044 0.4630540590 -0.0094309172 +3 +Iteration 15 Energy -92.27903821 +C -0.2851981740 -0.8133583210 0.0070647724 +N -0.3933186987 0.3694800864 0.0027955152 +H 0.6835903292 0.4452539808 -0.0093267327 +3 +Iteration 14 Energy -92.27569113 +C -0.2700598182 -0.8028477137 0.0068508367 +N -0.4065187853 0.3767925608 0.0029061213 +H 0.6816520601 0.4274308991 -0.0092234032 +3 +Iteration 13 Energy -92.27241743 +C -0.2549832171 -0.7919873786 0.0066359644 +N -0.4198679179 0.3837222948 0.0030201208 +H 0.6799245915 0.4096408300 -0.0091225303 +3 +Iteration 12 Energy -92.26924075 +C -0.2400404967 -0.7808064379 0.0064210782 +N -0.4334576251 0.3902274299 0.0031387071 +H 0.6785715783 0.3919547542 -0.0090262304 +3 +Iteration 11 Energy -92.26618133 +C -0.2253274668 -0.7693414314 0.0062073938 +N -0.4474044788 0.3962550094 0.0032633987 +H 0.6778054021 0.3744621682 -0.0089372376 +3 +Iteration 10 Energy -92.26325577 +C -0.2109682535 -0.7576379654 0.0059964785 +N -0.4618458500 0.4017410055 0.0033959924 +H 0.6778875601 0.3572727061 -0.0088589160 +3 +Iteration 9 Energy -92.26047765 +C -0.1971139541 -0.7457508518 0.0057902366 +N -0.4769234351 0.4066145917 0.0035383638 +H 0.6791108458 0.3405120063 -0.0087950455 +3 +Iteration 8 Energy -92.25785966 +C -0.1839278706 -0.7337401058 0.0055907301 +N -0.4927509528 0.4108093798 0.0036920619 +H 0.6817522799 0.3243064722 -0.0087492371 +3 +Iteration 7 Energy -92.25541725 +C -0.1715546480 -0.7216610706 0.0053997953 +N -0.5093757999 0.4142802080 0.0038578131 +H 0.6860039044 0.3087566088 -0.0087240534 +3 +Iteration 6 Energy -92.25317258 +C -0.1600863269 -0.7095521679 0.0052186154 +N -0.5267597973 0.4170164920 0.0040352487 +H 0.6919195807 0.2939114221 -0.0087203092 +3 +Iteration 5 Energy -92.25115719 +C -0.1495470629 -0.6974280552 0.0050475221 +N -0.5447943975 0.4190427366 0.0042230692 +H 0.6994149169 0.2797610648 -0.0087370364 +3 +Iteration 4 Energy -92.24941168 +C -0.1399044695 -0.6852824201 0.0048861322 +N -0.5633373285 0.4204067917 0.0044194987 +H 0.7083152544 0.2662513747 -0.0087720760 +3 +Iteration 3 Energy -92.24798205 +C -0.1310833104 -0.6730892175 0.0047335032 +N -0.5822436929 0.4211683260 0.0046226781 +H 0.7184004597 0.2532966377 -0.0088226264 +3 +Iteration 2 Energy -92.24691598 +C -0.1225923571 -0.6606504413 0.0045833524 +N -0.6010481035 0.4215208860 0.0048266277 +H 0.7287139172 0.2405053015 -0.0088764252 +3 +Iteration 1 Energy -92.24625952 +C -0.1163025051 -0.6488143436 0.0044600421 +N -0.6209449115 0.4209160649 0.0050469319 +H 0.7423208731 0.2292740249 -0.0089734191 +3 +Iteration 1 Energy -92.24626478 +C -0.1014874782 -0.6238545503 0.0041830503 +N -0.6574678335 0.4198783103 0.0054509921 +H 0.7640287682 0.2053519861 -0.0091004874 +3 +Iteration 2 Energy -92.24696351 +C -0.0968280724 -0.6117371030 0.0040762677 +N -0.6770816655 0.4181791273 0.0056732462 +H 0.7789831944 0.1949337219 -0.0092159590 +3 +Iteration 3 Energy -92.24815501 +C -0.0903851905 -0.5984000921 0.0039443673 +N -0.6955479178 0.4165585864 0.0058825923 +H 0.7910065649 0.1832172519 -0.0092934047 +3 +Iteration 4 Energy -92.24982932 +C -0.0850734210 -0.5851874542 0.0038254056 +N -0.7143349385 0.4144671779 0.0060976151 +H 0.8044818160 0.1720960225 -0.0093894659 +3 +Iteration 5 Energy -92.25196563 +C -0.0798897013 -0.5717026693 0.0037065896 +N -0.7327958387 0.4121003611 0.0063103420 +H 0.8177589965 0.1609780544 -0.0094833768 +3 +Iteration 6 Energy -92.25453472 +C -0.0749648303 -0.5580041898 0.0035896186 +N -0.7509988286 0.4094456177 0.0065215763 +H 0.8310371154 0.1499343183 -0.0095776400 +3 +Iteration 7 Energy -92.25749824 +C -0.0702503227 -0.5440797956 0.0034739061 +N -0.7689029233 0.4065182178 0.0067307995 +H 0.8442267025 0.1389373240 -0.0096711508 +3 +Iteration 8 Energy -92.26081135 +C -0.0657276364 -0.5299294481 0.0033592494 +N -0.7864860600 0.4033281637 0.0069377245 +H 0.8572871529 0.1279770307 -0.0097634190 +3 +Iteration 9 Energy -92.26442485 +C -0.0613791214 -0.5155537810 0.0032454583 +N -0.8037270940 0.3998844783 0.0071420784 +H 0.8701796719 0.1170450489 -0.0098539818 +3 +Iteration 10 Energy -92.26828734 +C -0.0571910277 -0.5009552344 0.0031323938 +N -0.8206074637 0.3961951069 0.0073436216 +H 0.8828719479 0.1061358737 -0.0099424606 +3 +Iteration 11 Energy -92.27234723 +C -0.0531522196 -0.4861375554 0.0030199515 +N -0.8371103415 0.3922672540 0.0075421372 +H 0.8953360176 0.0952460476 -0.0100285337 +3 +Iteration 12 Energy -92.27655442 +C -0.0492535039 -0.4711055396 0.0029080529 +N -0.8532202120 0.3881075974 0.0077374245 +H 0.9075471724 0.0843736883 -0.0101119225 +3 +Iteration 13 Energy -92.28086165 +C -0.0454869057 -0.4558647654 0.0027966365 +N -0.8689224323 0.3837224444 0.0079292946 +H 0.9194827945 0.0735180672 -0.0101923762 +3 +Iteration 14 Energy -92.28522543 +C -0.0418450800 -0.4404213842 0.0026856504 +N -0.8842028558 0.3791178248 0.0081175649 +H 0.9311213924 0.0626793055 -0.0102696604 +3 +Iteration 15 Energy -92.28960659 +C -0.0383216787 -0.4247821792 0.0025750565 +N -0.8990477925 0.3742994731 0.0083020594 +H 0.9424429277 0.0518584523 -0.0103435610 +3 +Iteration 16 Energy -92.29397052 +C -0.0349042781 -0.4089527109 0.0024647446 +N -0.9134414027 0.3692732887 0.0084825776 +H 0.9534191372 0.0410551684 -0.0104137673 +3 +Iteration 17 Energy -92.29828718 +C -0.0315889509 -0.3929411153 0.0023547092 +N -0.9273712901 0.3640445206 0.0086589600 +H 0.9640336974 0.0302723409 -0.0104801143 +3 +Iteration 18 Energy -92.30253080 +C -0.0283653839 -0.3767542164 0.0022448690 +N -0.9408219656 0.3586183508 0.0088310133 +H 0.9742608060 0.0195116118 -0.0105423274 +3 +Iteration 19 Energy -92.30667957 +C -0.0252246927 -0.3603996217 0.0021351620 +N -0.9537789302 0.3529997936 0.0089985558 +H 0.9840770794 0.0087755743 -0.0106001630 +3 +Iteration 20 Energy -92.31071520 +C -0.0221573220 -0.3438851707 0.0020255199 +N -0.9662272652 0.3471936448 0.0091614025 +H 0.9934580437 -0.0019327279 -0.0106533674 +3 +Iteration 21 Energy -92.31462244 +C -0.0191540639 -0.3272192104 0.0019158804 +N -0.9781523615 0.3412045591 0.0093193720 +H 1.0023798819 -0.0126096025 -0.0107016975 +3 +Iteration 22 Energy -92.31838863 +C -0.0162060697 -0.3104106030 0.0018061876 +N -0.9895399236 0.3350370822 0.0094722872 +H 1.0108194498 -0.0232507330 -0.0107449199 +3 +Iteration 23 Energy -92.32200326 +C -0.0133051740 -0.2934688013 0.0016963959 +N -1.0003762133 0.3286957149 0.0096199772 +H 1.0187548439 -0.0338511675 -0.0107828182 +3 +Iteration 24 Energy -92.32545759 +C -0.0104440139 -0.2764038722 0.0015864712 +N -1.0106481463 0.3221849671 0.0097622781 +H 1.0261656167 -0.0444053487 -0.0108151943 +3 +Iteration 25 Energy -92.32874429 +C -0.0076161375 -0.2592265182 0.0014763922 +N -1.0203433809 0.3155094156 0.0098990339 +H 1.0330329750 -0.0549071513 -0.0108418711 +3 +Iteration 26 Energy -92.33185709 +C -0.0048160286 -0.2419480882 0.0013661509 +N -1.0294503306 0.3086737552 0.0100300963 +H 1.0393398158 -0.0653499208 -0.0108626923 +3 +Iteration 27 Energy -92.33479051 +C -0.0020390998 -0.2245806008 0.0012557526 +N -1.0379581289 0.3016828484 0.0101553241 +H 1.0450706851 -0.0757265014 -0.0108775218 +3 +Iteration 28 Energy -92.33753955 +C 0.0007183371 -0.2071367941 0.0011452157 +N -1.0458565336 0.2945417779 0.0102745819 +H 1.0502116530 -0.0860292376 -0.0108862427 +3 +Iteration 29 Energy -92.34009942 +C 0.0034590850 -0.1896302313 0.0010345720 +N -1.0531357804 0.2872559113 0.0103877382 +H 1.0547501519 -0.0962499338 -0.0108887553 +3 +Iteration 30 Energy -92.34246526 +C 0.0061850246 -0.1720754975 0.0009238682 +N -1.0597863763 0.2798309959 0.0104946628 +H 1.0586748082 -0.1063797522 -0.0108849761 +3 +Iteration 31 Energy -92.34463188 +C 0.0088969772 -0.1544885482 0.0008131688 +N -1.0657988293 0.2722733127 0.0105952229 +H 1.0619753086 -0.1164090183 -0.0108748369 +3 +Iteration 32 Energy -92.34659354 +C 0.0115944032 -0.1368873034 0.0007025624 +N -1.0711632901 0.2645899351 0.0106892783 +H 1.0646423433 -0.1263268854 -0.0108582858 +3 +Iteration 33 Energy -92.34834374 +C 0.0142748622 -0.1192926600 0.0005921719 +N -1.0758690400 0.2567891756 0.0107766735 +H 1.0666676344 -0.1361207693 -0.0108352905 +3 +Iteration 34 Energy -92.34987527 +C 0.0169330985 -0.1017302592 0.0004821729 +N -1.0799037006 0.2488813721 0.0108572255 +H 1.0680440586 -0.1457753668 -0.0108058435 +3 +Iteration 35 Energy -92.35118034 +C 0.0195595231 -0.0842337497 0.0003728253 +N -1.0832518425 0.2408803406 0.0109307020 +H 1.0687657759 -0.1552708447 -0.0107699724 +3 +Iteration 36 Energy -92.35225100 +C 0.0221374962 -0.0668514099 0.0002645336 +N -1.0858922266 0.2328063009 0.0109967775 +H 1.0688281869 -0.1645791448 -0.0107277562 +3 +Iteration 37 Energy -92.35307989 +C 0.0246375378 -0.0496616635 0.0001579815 +N -1.0877916210 0.2246927139 0.0110549346 +H 1.0682275397 -0.1736553042 -0.0106793612 +3 +Iteration 38 Energy -92.35366133 +C 0.0270015816 -0.0328189003 0.0000545152 +N -1.0888876746 0.2166065022 0.0111041833 +H 1.0669595495 -0.1824118558 -0.0106251436 +3 +Iteration 39 Energy -92.35399314 +C 0.0290768065 -0.0167610126 -0.0000421764 +N -1.0890217370 0.2087409437 0.0111418983 +H 1.0650183870 -0.1906041849 -0.0105661669 +3 +Iteration 40 Energy -92.35408315 +C 0.0299533613 -0.0048163463 -0.0001068076 +N -1.0874294816 0.2026303942 0.0111526526 +H 1.0625495768 -0.1964383016 -0.0105122900 +3 +Iteration 41 Energy -92.35408315 +C 0.0299584588 -0.0047882735 -0.0001069927 +N -1.0874314916 0.2026168300 0.0111527371 +H 1.0625464893 -0.1964528103 -0.0105121894 +3 +Iteration 42 Energy -92.35408315 +C 0.0299584727 -0.0047882767 -0.0001069920 +N -1.0874315135 0.2026168344 0.0111527369 +H 1.0625464974 -0.1964528115 -0.0105121899 diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.vdata_first b/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.vdata_first index 43868e48..3117c90d 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.vdata_first +++ b/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.vdata_first @@ -44,7 +44,7 @@ # # Ground State Electronic Energy : E0 = -92.24604268 au ( -57885.2657 kcal/mol) # Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075304 au ( -6.7476 kcal/mol) -# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25679571 au ( -57892.0134 kcal/mol) +# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25679572 au ( -57892.0134 kcal/mol) # 3 @@ -53,17 +53,17 @@ Iteration 0 Energy -92.24604268 N -0.6393457902 0.4205365638 0.0052498438 H 0.7532976101 0.2173493463 -0.0090384631 --1216.114288 +-1216.113839 -0.043268 -0.081665 0.000849 0.075262 0.009624 -0.000867 -0.530281 0.839344 0.001929 - 2126.646376 --0.334949 0.646986 0.000680 + 2126.646109 +-0.334949 0.646985 0.000680 0.302429 -0.563679 -0.000708 --0.211457 0.123703 0.001742 +-0.211459 0.123702 0.001742 - 2452.069262 + 2452.069188 0.057558 0.023438 -0.000737 0.012740 0.015959 -0.000213 -0.862862 -0.501050 0.011742 diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz b/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz index 5502ca66..88eae091 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz +++ b/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz @@ -1,480 +1,450 @@ 3 -Iteration 49 Energy -92.33720861 -C -0.6320188782 -0.8810958654 0.0111684786 -N 0.0364737305 0.0678300376 -0.0005128898 -H 0.6006186042 0.8146415740 -0.0101220339 -3 -Iteration 48 Energy -92.33964638 -C -0.6410998519 -0.8956874812 0.0113350013 -N 0.0238216346 0.0556233728 -0.0003183180 -H 0.6223516739 0.8414398546 -0.0104831284 -3 -Iteration 47 Energy -92.33948677 -C -0.6396865524 -0.8996350268 0.0113377435 -N 0.0164966480 0.0586142880 -0.0002520235 -H 0.6282633609 0.8423964850 -0.0105521651 -3 -Iteration 46 Energy -92.33920555 -C -0.6306764618 -0.8953440907 0.0112194677 -N 0.0141089138 0.0721142534 -0.0002881364 -H 0.6216410045 0.8246055835 -0.0103977763 -3 -Iteration 45 Energy -92.33919428 -C -0.6293384422 -0.9048309126 0.0112485613 -N -0.0018331339 0.0758725588 -0.0001311747 -H 0.6362450326 0.8303341001 -0.0105838317 -3 -Iteration 44 Energy -92.33744884 -C -0.6330267006 -0.9169329936 0.0113446562 -N -0.0169498166 0.0721422114 0.0000512764 -H 0.6550499736 0.8461665284 -0.0108623777 -3 -Iteration 43 Energy -92.33881040 -C -0.6215646892 -0.9050684242 0.0111646713 -N -0.0099280121 0.0876494860 -0.0000969549 -H 0.6365661578 0.8187946843 -0.0105341615 -3 -Iteration 42 Energy -92.33832352 -C -0.6206740121 -0.9135583502 0.0111940611 -N -0.0246578812 0.0900826011 0.0000528624 -H 0.6504053498 0.8248514953 -0.0107133685 -3 -Iteration 41 Energy -92.33789829 -C -0.6101139804 -0.9097393509 0.0110610159 -N -0.0295809832 0.1045650999 0.0000399385 -H 0.6447684201 0.8065499972 -0.0105673995 -3 -Iteration 40 Energy -92.33733994 -C -0.6071595278 -0.9174957481 0.0110644634 -N -0.0467153103 0.1088385961 0.0002075603 -H 0.6589482947 0.8100328982 -0.0107384688 -3 -Iteration 39 Energy -92.33659971 -C -0.5969296364 -0.9170468688 0.0109505590 -N -0.0572167653 0.1226160092 0.0002588698 -H 0.6592198583 0.7958066058 -0.0106758739 -3 -Iteration 38 Energy -92.33563529 -C -0.5888144652 -0.9202252214 0.0108764898 -N -0.0729355630 0.1328526000 0.0003835350 -H 0.6668234847 0.7887483675 -0.0107264699 -3 -Iteration 37 Energy -92.33454131 -C -0.5792763380 -0.9214025412 0.0107776425 -N -0.0868347520 0.1445785139 0.0004814440 -H 0.6711845465 0.7781997735 -0.0107255316 -3 -Iteration 36 Energy -92.33332306 -C -0.5696568299 -0.9225192133 0.0106776259 -N -0.1014296763 0.1558068621 0.0005892521 -H 0.6761599627 0.7680880974 -0.0107333231 -3 -Iteration 35 Energy -92.33198794 -C -0.5594868642 -0.9228526876 0.0105679822 -N -0.1157179121 0.1672160485 0.0006928740 -H 0.6802782329 0.7570123852 -0.0107273013 -3 -Iteration 34 Energy -92.33053517 -C -0.5489660963 -0.9226817056 0.0104521786 -N -0.1300953556 0.1785128106 0.0007979892 -H 0.6841349083 0.7455446412 -0.0107166129 -3 -Iteration 33 Energy -92.32896523 -C -0.5380136621 -0.9218762545 0.0103287319 -N -0.1443657463 0.1898062427 0.0009019494 -H 0.6874528649 0.7334457580 -0.0106971264 -3 -Iteration 32 Energy -92.32727625 -C -0.5266830730 -0.9204962728 0.0101985033 -N -0.1586141289 0.2010190142 0.0010060408 -H 0.6903706583 0.7208530048 -0.0106709892 -3 -Iteration 31 Energy -92.32546604 -C -0.5149617182 -0.9185092260 0.0100612050 -N -0.1727791255 0.2121668712 0.0011095198 -H 0.6928143002 0.7077181010 -0.0106371699 -3 -Iteration 30 Energy -92.32353123 -C -0.5028789790 -0.9159382211 0.0099172647 -N -0.1868854164 0.2232114107 0.0012128331 -H 0.6948378520 0.6941025566 -0.0105965429 -3 -Iteration 29 Energy -92.32146821 -C -0.4904408717 -0.9127756568 0.0097667132 -N -0.2009045161 0.2341468774 0.0013156959 -H 0.6964188443 0.6800045256 -0.0105488542 -3 -Iteration 28 Energy -92.31927310 -C -0.4776723064 -0.9090376279 0.0096098969 -N -0.2148431515 0.2449468225 0.0014183036 -H 0.6975889144 0.6654665516 -0.0104946456 -3 -Iteration 27 Energy -92.31694248 -C -0.4645893119 -0.9047297135 0.0094470169 -N -0.2286891227 0.2555972097 0.0015205875 -H 0.6983518912 0.6505082499 -0.0104340495 -3 -Iteration 26 Energy -92.31447378 -C -0.4512145402 -0.8998660314 0.0092783857 -N -0.2424416799 0.2660789407 0.0016226275 -H 0.6987296766 0.6351628368 -0.0103674583 -3 -Iteration 25 Energy -92.31186596 -C -0.4375697211 -0.8944602707 0.0091043040 -N -0.2560993290 0.2763753515 0.0017244840 -H 0.6987425066 0.6194606655 -0.0102952331 -3 -Iteration 24 Energy -92.30912002 -C -0.4236765916 -0.8885269056 0.0089250763 -N -0.2696618226 0.2864712086 0.0018262245 -H 0.6984118706 0.6034314432 -0.0102177459 -3 -Iteration 23 Energy -92.30623964 -C -0.4095574158 -0.8820815070 0.0087410176 -N -0.2831322148 0.2963516144 0.0019279511 -H 0.6977630871 0.5871056389 -0.0101354137 -3 -Iteration 22 Energy -92.30323161 -C -0.3952327469 -0.8751383572 0.0085524184 -N -0.2965124198 0.3060042282 0.0020297415 -H 0.6968186232 0.5705098752 -0.0100486050 -3 -Iteration 21 Energy -92.30010627 -C -0.3807250458 -0.8677135993 0.0083595987 -N -0.3098107849 0.3154151920 0.0021317509 -H 0.6956092872 0.5536741534 -0.0099577947 -3 -Iteration 20 Energy -92.29687763 -C -0.3660538536 -0.8598201336 0.0081628316 -N -0.3230323481 0.3245734622 0.0022340853 -H 0.6941596582 0.5366224176 -0.0098633620 -3 -Iteration 19 Energy -92.29356340 -C -0.3512375662 -0.8514696940 0.0079623723 -N -0.3361814864 0.3334694978 0.0023368364 -H 0.6924925092 0.5193759425 -0.0097656538 -3 -Iteration 18 Energy -92.29018484 -C -0.3363045697 -0.8426838502 0.0077586304 -N -0.3492851360 0.3420873039 0.0024403725 -H 0.6906631623 0.5019722925 -0.0096654480 -3 -Iteration 17 Energy -92.28676601 -C -0.3212676332 -0.8334638263 0.0075517513 -N -0.3623377936 0.3504185289 0.0025446719 -H 0.6886788833 0.4844210436 -0.0095628683 -3 -Iteration 16 Energy -92.28333329 -C -0.3061546360 -0.8238270883 0.0073421202 -N -0.3753660687 0.3584476167 0.0026500971 -H 0.6865941611 0.4667552178 -0.0094586625 -3 -Iteration 15 Energy -92.27991430 -C -0.2909961634 -0.8137894841 0.0071301445 -N -0.3884009081 0.3661562987 0.0027570708 -H 0.6844705280 0.4490089315 -0.0093536604 -3 -Iteration 14 Energy -92.27653690 -C -0.2758311762 -0.8033696987 0.0069163363 -N -0.4014875319 0.3735208221 0.0028661967 -H 0.6823921646 0.4312246228 -0.0092489780 -3 -Iteration 13 Energy -92.27322794 -C -0.2607123495 -0.7925913571 0.0067013802 -N -0.4146928809 0.3805090276 0.0029783548 -H 0.6804786869 0.4134580757 -0.0091461801 -3 -Iteration 12 Energy -92.27001216 -C -0.2457134692 -0.7814854730 0.0064862259 -N -0.4281140548 0.3870766829 0.0030948105 -H 0.6789009805 0.3957845363 -0.0090474815 -3 -Iteration 11 Energy -92.26691113 -C -0.2309373762 -0.7700926990 0.0062721850 -N -0.4418831659 0.3931646615 0.0032172806 -H 0.6778939986 0.3783037837 -0.0089559107 -3 -Iteration 10 Energy -92.26394272 -C -0.2165312927 -0.7584693150 0.0060611264 -N -0.4561762426 0.3986928656 0.0033480586 -H 0.6777809918 0.3611521956 -0.0088756301 -3 -Iteration 9 Energy -92.26112103 -C -0.2026832296 -0.7466850773 0.0058554268 -N -0.4711831491 0.4035676481 0.0034896518 -H 0.6789398352 0.3444931753 -0.0088115237 -3 -Iteration 8 Energy -92.25845765 -C -0.1896012929 -0.7348172682 0.0056577176 -N -0.4870557301 0.4076984250 0.0036441375 -H 0.6817304795 0.3284945894 -0.0087683002 -3 -Iteration 7 Energy -92.25596493 -C -0.1774580306 -0.7229318385 0.0054701890 -N -0.5038342461 0.4110286580 0.0038122166 -H 0.6863657332 0.3132789267 -0.0087488507 -3 -Iteration 6 Energy -92.25366158 -C -0.1663443262 -0.7110681503 0.0052940160 -N -0.5214213982 0.4135534734 0.0039928478 -H 0.6928391809 0.2988904231 -0.0087533088 -3 -Iteration 5 Energy -92.25157779 -C -0.1562517550 -0.6992334759 0.0051291399 -N -0.5395974792 0.4153180950 0.0041834207 -H 0.7009226907 0.2852911271 -0.0087790057 -3 -Iteration 4 Energy -92.24975627 -C -0.1470981562 -0.6874173917 0.0049746146 -N -0.5580479255 0.4163968067 0.0043801541 -H 0.7102195382 0.2723963312 -0.0088212139 -3 -Iteration 3 Energy -92.24824868 -C -0.1386602332 -0.6755900859 0.0048278616 -N -0.5763226417 0.4169288695 0.0045774857 -H 0.7200563313 0.2600369626 -0.0088717924 -3 -Iteration 2 Energy -92.24708291 -C -0.1328336144 -0.6647596963 0.0047142504 -N -0.5944199169 0.4162465478 0.0047784742 -H 0.7323269879 0.2498888947 -0.0089591696 -3 -Iteration 1 Energy -92.24630905 -C -0.1172922879 -0.6502123990 0.0044773057 -N -0.6023562251 0.4184374342 0.0048551389 -H 0.7247219696 0.2331507110 -0.0087988897 -3 -Iteration 1 Energy -92.24578960 -C -0.1087700071 -0.6355047861 0.0043163562 -N -0.6585846778 0.4228608194 0.0054494564 -H 0.7724281414 0.2140197129 -0.0092322577 -3 -Iteration 2 Energy -92.24554446 -C -0.0905298207 -0.6267694784 0.0040766923 -N -0.6477449420 0.4266605892 0.0053134421 -H 0.7433482193 0.2014846354 -0.0088565794 -3 -Iteration 3 Energy -92.24622681 -C -0.1002007022 -0.6249932906 0.0041742309 -N -0.6643436336 0.4224187969 0.0055144519 -H 0.7696177923 0.2039502399 -0.0091551279 -3 -Iteration 4 Energy -92.24698842 -C -0.0948614868 -0.6122022201 0.0040569121 -N -0.6813390211 0.4203723764 0.0057096808 -H 0.7812739644 0.1932055900 -0.0092330380 -3 -Iteration 5 Energy -92.24820710 -C -0.0872377815 -0.5982414781 0.0039092281 -N -0.6986260626 0.4188817799 0.0059055366 -H 0.7909373005 0.1807354444 -0.0092812098 -3 -Iteration 6 Energy -92.24979487 -C -0.0873356925 -0.5875368284 0.0038609647 -N -0.7192489668 0.4158518586 0.0061449550 -H 0.8116581158 0.1730607160 -0.0094723649 -3 -Iteration 7 Energy -92.25144367 -C -0.0735359059 -0.5725052430 0.0036408271 -N -0.7286735371 0.4153078725 0.0062504938 -H 0.8072828995 0.1585731167 -0.0093577660 -3 -Iteration 8 Energy -92.25396431 -C -0.0714653050 -0.5601190654 0.0035611076 -N -0.7478188515 0.4123417747 0.0064734647 -H 0.8243576130 0.1491530369 -0.0095010174 -3 -Iteration 9 Energy -92.25686147 -C -0.0679049276 -0.5466449994 0.0034600878 -N -0.7661996048 0.4093203120 0.0066883324 -H 0.8391779889 0.1387004337 -0.0096148653 -3 -Iteration 10 Energy -92.26011780 -C -0.0646558187 -0.5329532966 0.0033614678 -N -0.7844611949 0.4060394391 0.0069030929 -H 0.8541904702 0.1282896036 -0.0097310058 -3 -Iteration 11 Energy -92.26366759 -C -0.0602804562 -0.5185368106 0.0032471951 -N -0.8016214494 0.4026193391 0.0071064550 -H 0.8669753620 0.1172932177 -0.0098200952 -3 -Iteration 12 Energy -92.26747807 -C -0.0570718133 -0.5042818979 0.0031464219 -N -0.8190644167 0.3989032702 0.0073142718 -H 0.8812096865 0.1067543739 -0.0099271388 -3 -Iteration 13 Energy -92.27148329 -C -0.0524276921 -0.4892468460 0.0030263603 -N -0.8351254862 0.3950272360 0.0075077185 -H 0.8926266348 0.0955953562 -0.0100005239 -3 -Iteration 14 Energy -92.27564617 -C -0.0496907216 -0.4746330882 0.0029290898 -N -0.8519261306 0.3908765476 0.0077105163 -H 0.9066903087 0.0851322868 -0.0101060511 -3 -Iteration 15 Energy -92.27989361 -C -0.0444411981 -0.4589602477 0.0027994705 -N -0.8665241799 0.3865501128 0.0078900446 -H 0.9160388345 0.0737858811 -0.0101559602 -3 -Iteration 16 Energy -92.28315170 -C -0.0499114082 -0.4492904524 0.0028147077 -N -0.8841230463 0.3828622704 0.0080994357 -H 0.9391079109 0.0678039282 -0.0103805884 -3 -Iteration 17 Energy -92.28754456 -C -0.0423148201 -0.4329057571 0.0026561490 -N -0.8959388658 0.3781820017 0.0082501787 -H 0.9433271423 0.0560995016 -0.0103727728 -3 -Iteration 18 Energy -92.29189869 -C -0.0372827103 -0.4167692060 0.0025267695 -N -0.9092983549 0.3732190239 0.0084191004 -H 0.9516545217 0.0449259283 -0.0104123150 -3 -Iteration 19 Energy -92.29621452 -C -0.0336182369 -0.4007684172 0.0024129669 -N -0.9230933462 0.3680656091 0.0085936608 -H 0.9617850396 0.0340785542 -0.0104730728 -3 -Iteration 20 Energy -92.30047637 -C -0.0297153782 -0.3844907236 0.0022952821 -N -0.9361792597 0.3626902542 0.0087614922 -H 0.9709680945 0.0231762156 -0.0105232195 -3 -Iteration 21 Energy -92.30465263 -C -0.0267934351 -0.3682847988 0.0021886517 -N -0.9494021456 0.3571696936 0.0089314903 -H 0.9812690372 0.0124908514 -0.0105865871 -3 -Iteration 22 Energy -92.30872742 -C -0.0229035574 -0.3516582135 0.0020695009 -N -0.9613864508 0.3513925806 0.0090891302 -H 0.9893634647 0.0016413791 -0.0106250762 -3 -Iteration 23 Energy -92.31267555 -C -0.0209095887 -0.3353465251 0.0019725280 -N -0.9741433842 0.3455819754 0.0092553710 -H 1.0001264294 -0.0088597041 -0.0106943441 -3 -Iteration 24 Energy -92.31648025 -C -0.0162917473 -0.3183173951 0.0018435637 -N -0.9844241345 0.3393768537 0.0093963598 -H 1.0057893383 -0.0196837124 -0.0107063686 -3 -Iteration 25 Energy -92.32012320 -C -0.0157364777 -0.3021078634 0.0017627897 -N -0.9970018033 0.3334139721 0.0095613426 -H 1.0178117375 -0.0299303624 -0.0107905775 -3 -Iteration 26 Energy -92.32321344 -C -0.0072668563 -0.2854662757 0.0015935029 -N -1.0029169268 0.3270552178 0.0096553133 -H 1.0152572396 -0.0402131959 -0.0107152613 -3 -Iteration 27 Energy -92.32664239 -C -0.0082153793 -0.2693873122 0.0015297705 -N -1.0154280310 0.3210594272 0.0098197201 -H 1.0287168668 -0.0502963688 -0.0108159357 -3 -Iteration 28 Energy -92.32985651 -C -0.0054100768 -0.2522004990 0.0014198947 -N -1.0247438114 0.3143280951 0.0099525847 -H 1.0352273447 -0.0607518499 -0.0108389245 -3 -Iteration 29 Energy -92.33289776 -C -0.0028617335 -0.2349722576 0.0013126371 -N -1.0336082703 0.3074708046 0.0100810958 -H 1.0415434603 -0.0711228008 -0.0108601780 -3 -Iteration 30 Energy -92.33575863 -C -0.0002397792 -0.2176538622 0.0012041593 -N -1.0417957117 0.3004513195 0.0102029531 -H 1.0471089474 -0.0814217110 -0.0108735575 -3 -Iteration 31 Energy -92.33843482 -C 0.0023852674 -0.2002706211 0.0010953488 -N -1.0493548703 0.2932852318 0.0103186175 -H 1.0520430593 -0.0916388645 -0.0108804114 -3 -Iteration 32 Energy -92.34092160 -C 0.0050148400 -0.1828375235 0.0009862591 -N -1.0562772978 0.2859782615 0.0104279703 -H 1.0563359143 -0.1017649917 -0.0108806744 -3 -Iteration 33 Energy -92.34321400 -C 0.0076446888 -0.1653718447 0.0008770162 -N -1.0625575354 0.2785375085 0.0105309190 -H 1.0599863031 -0.1117899176 -0.0108743803 -3 -Iteration 34 Energy -92.34530670 -C 0.0102662344 -0.1478920884 0.0007677992 -N -1.0681932617 0.2709712444 0.0106274002 -H 1.0630004837 -0.1217034099 -0.0108616445 -3 -Iteration 35 Energy -92.34719368 -C 0.0128763991 -0.1304190380 0.0006587375 -N -1.0731752681 0.2632878548 0.0107172746 -H 1.0653723255 -0.1314930706 -0.0108424572 -3 -Iteration 36 Energy -92.34886820 -C 0.0154676430 -0.1129779506 0.0005500300 -N -1.0774946337 0.2554979934 0.0108003955 -H 1.0671004471 -0.1411442965 -0.0108168706 -3 -Iteration 37 Energy -92.35032284 -C 0.0180287356 -0.0956010185 0.0004419477 -N -1.0811401301 0.2476154656 0.0108765766 -H 1.0681848510 -0.1506387009 -0.0107849694 -3 -Iteration 38 Energy -92.35154975 -C 0.0205483898 -0.0783335555 0.0003348230 -N -1.0840905670 0.2396588214 0.0109455006 -H 1.0686156337 -0.1599495197 -0.0107467687 -3 -Iteration 39 Energy -92.35254113 -C 0.0229982466 -0.0612450163 0.0002292859 -N -1.0863229217 0.2316587748 0.0110067745 -H 1.0683981316 -0.1690380123 -0.0107025055 -3 -Iteration 40 Energy -92.35329009 -C 0.0253342205 -0.0444555286 0.0001263720 -N -1.0877959947 0.2236685847 0.0110597023 -H 1.0675352307 -0.1778373098 -0.0106525194 -3 -Iteration 41 Energy -92.35379173 -C 0.0274780722 -0.0282149059 0.0000280880 -N -1.0884277774 0.2157995348 0.0111028746 -H 1.0660231618 -0.1862088827 -0.0105974077 -3 -Iteration 42 Energy -92.35401130 -C 0.0282191368 -0.0178203303 -0.0000279182 -N -1.0868790329 0.2104482515 0.0111106054 -H 1.0637333525 -0.1912521750 -0.0105491323 -3 -Iteration 43 Energy -92.35406031 -C 0.0291889129 -0.0092453289 -0.0000780390 -N -1.0851055950 0.2059045518 0.0111121579 -H 1.0609901386 -0.1952834767 -0.0105005640 -3 -Iteration 44 Energy -92.35406379 -C 0.0290208613 -0.0052767904 -0.0000944913 -N -1.0897925190 0.2048704556 0.0111681623 -H 1.0658451142 -0.1982179190 -0.0105401161 -3 -Iteration 45 Energy -92.35205442 -C 0.0456889779 -0.0096683359 -0.0002564723 -N -1.0724341158 0.2022341957 0.0109905455 -H 1.0318185945 -0.1911901136 -0.0102005183 -3 -Iteration 46 Energy -92.35362413 -C 0.0365271393 -0.0084981624 -0.0001617057 -N -1.0784244039 0.2035999344 0.0110497386 -H 1.0469707211 -0.1937260258 -0.0103544780 -3 -Iteration 47 Energy -92.35337626 -C 0.0191547892 -0.0052039230 0.0000130312 -N -1.0954209986 0.2067266550 0.0112211397 -H 1.0813396659 -0.2001469858 -0.0107006160 +Iteration 48 Energy -92.33971298 +C -0.6430495628 -0.8915390187 0.0113371982 +N 0.0360193055 0.0479515241 -0.0004163113 +H 0.6121037138 0.8449632408 -0.0103873320 +3 +Iteration 47 Energy -92.33971298 +C -0.6430495626 -0.8915390163 0.0113371973 +N 0.0360193066 0.0479515208 -0.0004163093 +H 0.6121037126 0.8449632417 -0.0103873331 +3 +Iteration 46 Energy -92.33970967 +C -0.6423314929 -0.8930047098 0.0113361020 +N 0.0334257360 0.0497208459 -0.0003961099 +H 0.6139792134 0.8446596101 -0.0104064372 +3 +Iteration 45 Energy -92.33961120 +C -0.6359910522 -0.8982591109 0.0112910023 +N 0.0195001016 0.0610100481 -0.0002958991 +H 0.6215644071 0.8386248090 -0.0104615483 +3 +Iteration 44 Energy -92.33938052 +C -0.6301396251 -0.9033571114 0.0112505278 +N 0.0060293676 0.0711478562 -0.0001953551 +H 0.6291837140 0.8335850014 -0.0105216178 +3 +Iteration 43 Energy -92.33899811 +C -0.6230413633 -0.9076785817 0.0111928439 +N -0.0079434727 0.0825790164 -0.0000952825 +H 0.6360582925 0.8264753115 -0.0105640065 +3 +Iteration 42 Energy -92.33848513 +C -0.6161952572 -0.9120682743 0.0111382310 +N -0.0221718061 0.0931689720 0.0000114600 +H 0.6434405198 0.8202750485 -0.0106161362 +3 +Iteration 41 Energy -92.33783104 +C -0.6082160272 -0.9152477159 0.0110656530 +N -0.0360769722 0.1047712558 0.0001100042 +H 0.6493664559 0.8118522062 -0.0106421023 +3 +Iteration 40 Energy -92.33708184 +C -0.6013118614 -0.9191219548 0.0110080299 +N -0.0504849756 0.1144196796 0.0002230501 +H 0.6568702935 0.8060780214 -0.0106975250 +3 +Iteration 39 Energy -92.33620626 +C -0.5918768407 -0.9199344666 0.0109086284 +N -0.0626893585 0.1269497391 0.0002987250 +H 0.6596396557 0.7943604737 -0.0106737986 +3 +Iteration 38 Energy -92.33519541 +C -0.5839388471 -0.9231693229 0.0108367566 +N -0.0783459027 0.1369354547 0.0004238658 +H 0.6673582062 0.7876096145 -0.0107270675 +3 +Iteration 37 Energy -92.33405950 +C -0.5740855968 -0.9238288731 0.0107320780 +N -0.0917964308 0.1489181873 0.0005156864 +H 0.6709554841 0.7762864320 -0.0107142095 +3 +Iteration 36 Energy -92.33279853 +C -0.5645544282 -0.9249818268 0.0106331945 +N -0.1065187328 0.1599428252 0.0006258258 +H 0.6761466175 0.7664147478 -0.0107254654 +3 +Iteration 35 Energy -92.33142285 +C -0.5542677510 -0.9250783088 0.0105211827 +N -0.1206456681 0.1713866158 0.0007275248 +H 0.6799868756 0.7550674391 -0.0107151526 +3 +Iteration 34 Energy -92.32993151 +C -0.5437322342 -0.9248061160 0.0104047514 +N -0.1350208991 0.1826033530 0.0008329847 +H 0.6838265898 0.7435785091 -0.0107041811 +3 +Iteration 33 Energy -92.32832517 +C -0.5327148338 -0.9238328988 0.0102798212 +N -0.1492166591 0.1938739066 0.0009362345 +H 0.6870049494 0.7313347383 -0.0106825008 +3 +Iteration 32 Energy -92.32660169 +C -0.5213467779 -0.9223202546 0.0101485716 +N -0.1634393428 0.2050344344 0.0010402857 +H 0.6898595772 0.7186615664 -0.0106553024 +3 +Iteration 31 Energy -92.32475874 +C -0.5095736206 -0.9201812979 0.0100100069 +N -0.1775609718 0.2161458008 0.0011434587 +H 0.6922080488 0.7054112433 -0.0106199107 +3 +Iteration 30 Energy -92.32279281 +C -0.4974481325 -0.9174686245 0.0098649464 +N -0.1916431149 0.2271451475 0.0012467163 +H 0.6941647039 0.6916992232 -0.0105781078 +3 +Iteration 29 Energy -92.32070017 +C -0.4849631163 -0.9141577418 0.0097131985 +N -0.2056335980 0.2380409152 0.0013494492 +H 0.6956701708 0.6774925728 -0.0105290928 +3 +Iteration 28 Energy -92.31847693 +C -0.4721533438 -0.9102767441 0.0095552729 +N -0.2195557295 0.2487966614 0.0014520802 +H 0.6967825299 0.6628558288 -0.0104737982 +3 +Iteration 27 Energy -92.31611973 +C -0.4590276813 -0.9058225536 0.0093912522 +N -0.2333822499 0.2594066554 0.0015543376 +H 0.6974833878 0.6477916445 -0.0104120350 +3 +Iteration 26 Energy -92.31362617 +C -0.4456165810 -0.9008184253 0.0092215766 +N -0.2471269788 0.2698438591 0.0016564972 +H 0.6978170163 0.6323503125 -0.0103445190 +3 +Iteration 25 Energy -92.31099549 +C -0.4319344317 -0.8952699007 0.0090464290 +N -0.2607733409 0.2800997465 0.0017584171 +H 0.6977812290 0.6165459004 -0.0102712912 +3 +Iteration 24 Energy -92.30822908 +C -0.4180104270 -0.8891998114 0.0088662336 +N -0.2743356373 0.2901518132 0.0018603573 +H 0.6974195208 0.6004237444 -0.0101930359 +3 +Iteration 23 Energy -92.30533113 +C -0.4038592047 -0.8826159200 0.0086811862 +N -0.2878016061 0.2999930839 0.0019622158 +H 0.6967342672 0.5839985822 -0.0101098472 +3 +Iteration 22 Energy -92.30230901 +C -0.3895103761 -0.8755418255 0.0084917195 +N -0.3011916970 0.3096025294 0.0020643133 +H 0.6957755296 0.5673150423 -0.0100224778 +3 +Iteration 21 Energy -92.29917368 +C -0.3749747039 -0.8679824801 0.0082979737 +N -0.3144909901 0.3189775168 0.0021664986 +H 0.6945391505 0.5503807095 -0.0099309175 +3 +Iteration 20 Energy -92.29593982 +C -0.3602874229 -0.8599655824 0.0081004619 +N -0.3277366579 0.3280928418 0.0022692944 +H 0.6930975374 0.5332484868 -0.0098362014 +3 +Iteration 19 Energy -92.29262570 +C -0.3454454472 -0.8514833742 0.0078991145 +N -0.3408900890 0.3369575690 0.0023722368 +H 0.6914089927 0.5159015514 -0.0097377963 +3 +Iteration 18 Energy -92.28925303 +C -0.3304969483 -0.8425738701 0.0076946332 +N -0.3540178197 0.3455385730 0.0024762057 +H 0.6895882245 0.4984110433 -0.0096372841 +3 +Iteration 17 Energy -92.28584630 +C -0.3154527407 -0.8332388120 0.0074871445 +N -0.3671124822 0.3538313312 0.0025811416 +H 0.6876386794 0.4807832270 -0.0095347312 +3 +Iteration 16 Energy -92.28243199 +C -0.3003411659 -0.8234941476 0.0072770315 +N -0.3802016004 0.3618190286 0.0026874228 +H 0.6856162228 0.4630508652 -0.0094308994 +3 +Iteration 15 Energy -92.27903760 +C -0.2851953599 -0.8133567210 0.0070647343 +N -0.3933212170 0.3694817044 0.0027955353 +H 0.6835900334 0.4452507628 -0.0093267146 +3 +Iteration 14 Energy -92.27569053 +C -0.2700570045 -0.8028460459 0.0068507983 +N -0.4065213164 0.3767941232 0.0029061418 +H 0.6816517774 0.4274276688 -0.0092233852 +3 +Iteration 13 Energy -92.27241685 +C -0.2549804147 -0.7919856487 0.0066359258 +N -0.4198704792 0.3837237962 0.0030201419 +H 0.6799243504 0.4096375987 -0.0091225128 +3 +Iteration 12 Energy -92.26924018 +C -0.2400377776 -0.7808046839 0.0064210404 +N -0.4334603387 0.3902288246 0.0031387303 +H 0.6785715728 0.3919516055 -0.0090262158 +3 +Iteration 11 Energy -92.26618079 +C -0.2253248209 -0.7693396524 0.0062073567 +N -0.4474073231 0.3962563114 0.0032634238 +H 0.6778056005 0.3744590872 -0.0089372256 +3 +Iteration 10 Energy -92.26325526 +C -0.2109656994 -0.7576361672 0.0059964423 +N -0.4618488393 0.4017422066 0.0033960196 +H 0.6778879952 0.3572697068 -0.0088589070 +3 +Iteration 9 Energy -92.26047716 +C -0.1971114878 -0.7457490313 0.0057902013 +N -0.4769265472 0.4066156989 0.0035383927 +H 0.6791114916 0.3405090786 -0.0087950391 +3 +Iteration 8 Energy -92.25785921 +C -0.1839255360 -0.7337382813 0.0055906962 +N -0.4927542239 0.4108103758 0.0036920931 +H 0.6817532164 0.3243036518 -0.0087492344 +3 +Iteration 7 Energy -92.25541683 +C -0.1715524261 -0.7216592361 0.0053997625 +N -0.5093791836 0.4142811103 0.0038578459 +H 0.6860050662 0.3087538720 -0.0087240535 +3 +Iteration 6 Energy -92.25317219 +C -0.1600842647 -0.7095503495 0.0052185845 +N -0.5267633215 0.4170172901 0.0040352836 +H 0.6919210427 0.2939088056 -0.0087203131 +3 +Iteration 5 Energy -92.25115685 +C -0.1495451283 -0.6974262492 0.0050474926 +N -0.5447980097 0.4190434569 0.0042231054 +H 0.6994165945 0.2797585385 -0.0087370431 +3 +Iteration 4 Energy -92.24941140 +C -0.1399027670 -0.6852806778 0.0048861056 +N -0.5633410874 0.4204074010 0.0044195369 +H 0.7083173109 0.2662490230 -0.0087720876 +3 +Iteration 3 Energy -92.24798183 +C -0.1310820229 -0.6730876014 0.0047334817 +N -0.5822477517 0.4211687542 0.0046227205 +H 0.7184032311 0.2532945935 -0.0088226473 +3 +Iteration 2 Energy -92.24691582 +C -0.1225888879 -0.6606479493 0.0045833030 +N -0.6010504292 0.4215220680 0.0048266477 +H 0.7287127736 0.2405016276 -0.0088763958 +3 +Iteration 1 Energy -92.24625946 +C -0.1163050072 -0.6488151146 0.0044600730 +N -0.6209498566 0.4209157301 0.0050469875 +H 0.7423283203 0.2292751307 -0.0089735056 +3 +Iteration 1 Energy -92.24626471 +C -0.1014849724 -0.6238538629 0.0041830197 +N -0.6574628830 0.4198786984 0.0054509362 +H 0.7640213119 0.2053509107 -0.0091004010 +3 +Iteration 2 Energy -92.24696331 +C -0.0968326833 -0.6117407520 0.0040763350 +N -0.6770788650 0.4181784119 0.0056732189 +H 0.7789850048 0.1949380863 -0.0092159990 +3 +Iteration 3 Energy -92.24815469 +C -0.0903859629 -0.5984024281 0.0039443865 +N -0.6955427188 0.4165587515 0.0058825347 +H 0.7910021382 0.1832194228 -0.0092933663 +3 +Iteration 4 Energy -92.24982889 +C -0.0850751193 -0.5851902870 0.0038254373 +N -0.7143304339 0.4144672694 0.0060975655 +H 0.8044790097 0.1720987639 -0.0093894478 +3 +Iteration 5 Energy -92.25196511 +C -0.0798911234 -0.5717054932 0.0037066182 +N -0.7327913167 0.4121005677 0.0063102916 +H 0.8177558966 0.1609806718 -0.0094833549 +3 +Iteration 6 Energy -92.25453410 +C -0.0749662066 -0.5580070910 0.0035896470 +N -0.7509944145 0.4094458989 0.0065215267 +H 0.8310340776 0.1499369383 -0.0095776189 +3 +Iteration 7 Energy -92.25749754 +C -0.0702516267 -0.5440827594 0.0034739341 +N -0.7688985946 0.4065185721 0.0067307506 +H 0.8442236779 0.1389399336 -0.0096711298 +3 +Iteration 8 Energy -92.26081059 +C -0.0657288812 -0.5299324756 0.0033592770 +N -0.7864818214 0.4033285856 0.0069376762 +H 0.8572841591 0.1279796361 -0.0097633983 +3 +Iteration 9 Energy -92.26442403 +C -0.0613803124 -0.5155568706 0.0032454856 +N -0.8037229474 0.3998849643 0.0071420308 +H 0.8701767164 0.1170476524 -0.0098539615 +3 +Iteration 10 Energy -92.26828647 +C -0.0571921699 -0.5009583847 0.0031324208 +N -0.8206034120 0.3961956538 0.0073435748 +H 0.8828690384 0.1061384771 -0.0099424408 +3 +Iteration 11 Energy -92.27234632 +C -0.0531533086 -0.4861407646 0.0030199782 +N -0.8371063916 0.3922678628 0.0075420912 +H 0.8953331567 0.0952486479 -0.0100285144 +3 +Iteration 12 Energy -92.27655349 +C -0.0492545559 -0.4711088066 0.0029080794 +N -0.8532163624 0.3881082611 0.0077373794 +H 0.9075443749 0.0843762917 -0.0101119039 +3 +Iteration 13 Energy -92.28086071 +C -0.0454879172 -0.4558680872 0.0027966628 +N -0.8689186848 0.3837231621 0.0079292503 +H 0.9194800585 0.0735206713 -0.0101923582 +3 +Iteration 14 Energy -92.28522449 +C -0.0418460537 -0.4404247587 0.0026856766 +N -0.8841992137 0.3791185946 0.0081175215 +H 0.9311187239 0.0626819103 -0.0102696432 +3 +Iteration 15 Energy -92.28960565 +C -0.0383226155 -0.4247856042 0.0025750825 +N -0.8990442581 0.3743002933 0.0083020169 +H 0.9424403301 0.0518610571 -0.0103435446 +3 +Iteration 16 Energy -92.29396959 +C -0.0349051801 -0.4089561840 0.0024647704 +N -0.9134379794 0.3692741578 0.0084825362 +H 0.9534166160 0.0410577724 -0.0104137518 +3 +Iteration 17 Energy -92.29828626 +C -0.0315898224 -0.3929446348 0.0023547349 +N -0.9273679825 0.3640454371 0.0086589196 +H 0.9640312614 0.0302749439 -0.0104800997 +3 +Iteration 18 Energy -92.30252990 +C -0.0283662271 -0.3767577800 0.0022448947 +N -0.9408187771 0.3586193132 0.0088309740 +H 0.9742584607 0.0195142130 -0.0105423138 +3 +Iteration 19 Energy -92.30667870 +C -0.0252255106 -0.3604032270 0.0021351876 +N -0.9537758648 0.3530008005 0.0089985177 +H 0.9840748320 0.0087781727 -0.0106001504 +3 +Iteration 20 Energy -92.31071436 +C -0.0221581165 -0.3438888150 0.0020255454 +N -0.9662243260 0.3471946948 0.0091613655 +H 0.9934558990 -0.0019301335 -0.0106533560 +3 +Iteration 21 Energy -92.31462163 +C -0.0191548385 -0.3272228914 0.0019159058 +N -0.9781495533 0.3412056509 0.0093193363 +H 1.0023778483 -0.0126070134 -0.0107016872 +3 +Iteration 22 Energy -92.31838785 +C -0.0162068264 -0.3104143177 0.0018062130 +N -0.9895372497 0.3350382146 0.0094722528 +H 1.0108175326 -0.0232481508 -0.0107449109 +3 +Iteration 23 Energy -92.32200251 +C -0.0133059146 -0.2934725466 0.0016964213 +N -1.0003736769 0.3286968866 0.0096199440 +H 1.0187530480 -0.0338485938 -0.0107828104 +3 +Iteration 24 Energy -92.32545688 +C -0.0104447126 -0.2764076395 0.0015864962 +N -1.0106457305 0.3221861738 0.0097622461 +H 1.0261638996 -0.0444027882 -0.0108151874 +3 +Iteration 25 Energy -92.32874362 +C -0.0076168403 -0.2592303115 0.0014764173 +N -1.0203411237 0.3155106610 0.0098990034 +H 1.0330314204 -0.0549046034 -0.0108418659 +3 +Iteration 26 Energy -92.33185646 +C -0.0048167121 -0.2419519005 0.0013661760 +N -1.0294482142 0.3086750348 0.0100300672 +H 1.0393383828 -0.0653473882 -0.0108626883 +3 +Iteration 27 Energy -92.33478991 +C -0.0020397825 -0.2245844306 0.0012557777 +N -1.0379561702 0.3016841632 0.0101552966 +H 1.0450694093 -0.0757239864 -0.0108775194 +3 +Iteration 28 Energy -92.33753899 +C 0.0007176668 -0.2071406363 0.0011452407 +N -1.0458547246 0.2945431246 0.0102745559 +H 1.0502105143 -0.0860267421 -0.0108862417 +3 +Iteration 29 Energy -92.34009890 +C 0.0034584158 -0.1896340828 0.0010345971 +N -1.0531341323 0.2872572899 0.0103877138 +H 1.0547491731 -0.0962474609 -0.0108887560 +3 +Iteration 30 Energy -92.34246479 +C 0.0061843659 -0.1720793536 0.0009238932 +N -1.0597848826 0.2798324035 0.0104946400 +H 1.0586739731 -0.1063773037 -0.0108849783 +3 +Iteration 31 Energy -92.34463145 +C 0.0088963197 -0.1544924048 0.0008131938 +N -1.0657975006 0.2722747488 0.0105952018 +H 1.0619746373 -0.1164065978 -0.0108748407 +3 +Iteration 32 Energy -92.34659315 +C 0.0115937580 -0.1368911555 0.0007025872 +N -1.0711621189 0.2645913964 0.0106892588 +H 1.0646418174 -0.1263244947 -0.0108582911 +3 +Iteration 33 Energy -92.34834340 +C 0.0142742186 -0.1192965024 0.0005921966 +N -1.0758680396 0.2567906619 0.0107766557 +H 1.0666672774 -0.1361184133 -0.0108352974 +3 +Iteration 34 Energy -92.34987498 +C 0.0169324732 -0.1017340862 0.0004821973 +N -1.0799028605 0.2488828789 0.0108572094 +H 1.0680438438 -0.1457730465 -0.0108058518 +3 +Iteration 35 Energy -92.35118009 +C 0.0195588994 -0.0842375543 0.0003728497 +N -1.0832511844 0.2408818688 0.0109306877 +H 1.0687657415 -0.1552685683 -0.0107699825 +3 +Iteration 36 Energy -92.35225080 +C 0.0221369139 -0.0668551876 0.0002645574 +N -1.0858917230 0.2328078421 0.0109967649 +H 1.0688282655 -0.1645769082 -0.0107277674 +3 +Iteration 37 Energy -92.35307974 +C 0.0246369351 -0.0496654035 0.0001580053 +N -1.0877913453 0.2246942792 0.0110549244 +H 1.0682278667 -0.1736531295 -0.0106793748 +3 +Iteration 38 Energy -92.35366123 +C 0.0270011319 -0.0328226214 0.0000545373 +N -1.0888874903 0.2166080656 0.0111041741 +H 1.0669598149 -0.1824096980 -0.0106251564 +3 +Iteration 39 Energy -92.35399309 +C 0.0290761102 -0.0167647492 -0.0000421516 +N -1.0890220771 0.2087426292 0.0111418942 +H 1.0650194235 -0.1906021339 -0.0105661877 +3 +Iteration 40 Energy -92.35408315 +C 0.0299529158 -0.0048225325 -0.0001067743 +N -1.0874285354 0.2026329961 0.0111526302 +H 1.0625490761 -0.1964347173 -0.0105123011 +3 +Iteration 41 Energy -92.35408315 +C 0.0299590645 -0.0047883798 -0.0001069989 +N -1.0874308923 0.2026164826 0.0111527321 +H 1.0625452843 -0.1964523566 -0.0105121783 +3 +Iteration 42 Energy -92.35408315 +C 0.0299589380 -0.0047891107 -0.0001060619 +N -1.0874308409 0.2026168354 0.0111522822 +H 1.0625453593 -0.1964519785 -0.0105126654 diff --git a/geometric/nifty.py b/geometric/nifty.py index 4662ac78..564e1868 100644 --- a/geometric/nifty.py +++ b/geometric/nifty.py @@ -181,15 +181,6 @@ def __init__(self, *args, **kwargs): # copyfileobj(input, output) # os.remove(input) -def find_lambda(Lambda, s, Heig, Hvec, g_M, p_M): - """ - Equation 26 from Gonzalez & Schlegel (1990) - """ - a = Heig*np.dot(p_M, Hvec) - np.dot(g_M, Hvec) - b = Heig - Lambda - c = (a / b) ** 2 - return np.sum(c) - (0.5 * s) ** 2 - def pvec1d(vec1d, precision=1, format="e", loglevel=INFO): """Printout of a 1-D vector. diff --git a/geometric/optimize.py b/geometric/optimize.py index 1c46e5d7..9537253d 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -57,7 +57,7 @@ from .step import brent_wiki, Froot, calc_drms_dmax, get_cartesian_norm, get_delta_prime, trust_step, force_positive_definite, update_hessian from .prepare import get_molecule_engine, parse_constraints from .params import OptParams, parse_optimizer_args -from .nifty import row, col, flat, bohr2ang, ang2bohr, logger, bak, createWorkQueue, destroyWorkQueue, find_lambda +from .nifty import row, col, flat, bohr2ang, ang2bohr, logger, bak, createWorkQueue, destroyWorkQueue from .errors import InputError, HessianExit, EngineError, IRCError, GeomOptNotConvergedError, GeomOptStructureError, LinearTorsionError class Optimizer(object): @@ -123,13 +123,8 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru # Recalculate the Hessian after a trigger - for example if the energy changes by a lot during TS optimization. self.recalcHess = False # IRC related attributes - self.IRC_converged = False self.IRC_direction = 1 - # status 0 : Need to find a pivot point - # status 1 : At the pivot point, need to find the next point self.IRC_stepsize = self.params.trust - #self.IRC_stepsize = self.params.trust*np.sqrt(self.IC.mass) - self.IRC_angle = 0 if print_info: self.print_info() @@ -155,11 +150,14 @@ def print_info(self): else: logger.info("> RMS-Grad < %.2e\n" % params.Convergence_grms) logger.info("> RMS-Disp < %.2e\n" % params.Convergence_drms) + elif params.irc: + logger.info("> Will converge when all 4 criteria are reached:\n") + logger.info("> |Delta-E| < %.2e\n" % params.Convergence_energy) + logger.info("> RMS-Disp < %.2e\n" % params.Convergence_drms) + logger.info("> Max-Disp < %.2e\n" % params.Convergence_dmax) + logger.info("> IRC-Disp < 1.00e-05\n") else: - if params.irc: - logger.info("> Will converge when pivot point angle is larger than %s and all 5 criteria are reached:\n" %u'175\xb0') - else: - logger.info("> Will converge when all 5 criteria are reached:\n") + logger.info("> Will converge when all 5 criteria are reached:\n") logger.info("> |Delta-E| < %.2e\n" % params.Convergence_energy) if self.IC.haveConstraints(): logger.info("> RMS-Ortho-Grad < %.2e\n" % params.Convergence_grms) @@ -409,6 +407,15 @@ def SortedEigenvalues(self, H): logger.info("Hessian Eigenvalues: " + ' '.join("%.5e" % i for i in Eig) + '\n') return Eig + def find_lambda(self, Lambda, Heig, Hvec, g_M, p_M): + """ + Equation 26 from Gonzalez & Schlegel (1990) + """ + a = Heig * np.dot(p_M, Hvec) - np.dot(g_M, Hvec) + b = Heig - Lambda + c = (a / b) ** 2 + return np.sum(c) - (0.5 * self.IRC_stepsize) ** 2 + def guess_g(self, g, H, disp): """ guess a gradient using a quadratic expansion @@ -427,9 +434,8 @@ def step(self): raise RuntimeError("Hessian contains nan - check output and temp-files for possible errors") if params.irc: - logger.info("IRC status 0: Finding a pivot point (q*_{k+1})\n") + logger.info("\nIRC sub-step1: Finding a pivot point (q*_{k+1})\n") # Need to take a step towards the pivot point - g_k = self.G.copy() # Internal coordinate gradients self.IC.clearCache() GMat = self.IC.GMatrix(self.X, invMW=True) GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(self.X, sqrt=True, invMW=True) @@ -444,51 +450,47 @@ def step(self): # Getting IC vectors correspond to the imaginary frequency H_M = np.dot(np.dot(GMat_sqrt, self.H), GMat_sqrt.T) _, MW_IC_vecs = np.linalg.eigh(H_M) - v = np.dot(GMat_sqrt_inv, MW_IC_vecs[0]) - N = 1/np.linalg.norm(v) - #v = np.dot(GMat, v) - #N = 1 / np.sqrt(np.dot(v.T, np.dot(GMat, v))) - - # Following Carteisan Hessian - #v = self.IC.calcDiff(self.X + self.TSNormal_modes_x[0], self.X) - #v = v/np.linalg.norm(v) - #N = 1 + invMW_v = np.dot(GMat_sqrt,MW_IC_vecs[0]) + v = np.dot(GMat_sqrt_inv, invMW_v) # Initial direction v *= self.IRC_direction + invMW_v = np.dot(GMat, v) + else: # Else, use the mass-weighted G matrix and internal coordinate gradients to get the vector. # Normalization factor - N = 1 / np.sqrt(np.dot(g_k.T, np.dot(GMat, g_k))) - v = np.dot(GMat, g_k) + v = self.G.copy() # Internal coordinate gradients + invMW_v = np.dot(GMat, v) - stepsize = self.IRC_stepsize + # Normalization factor + N = 1 / np.sqrt(np.dot(v.T, np.dot(GMat, v))) # Step towards the pivot point - dy = -0.5*stepsize*N*v - self.IRC_step_to_pivot = dy - self.IRC_v = v - logger.info("dy in status 0: %.5f\n" %np.linalg.norm(dy)) + dy_to_pivot = -0.5*self.IRC_stepsize*N*invMW_v # Move to the pivot point X0 = self.X.copy() - self.newCartesian(dy) - dy = self.IC.calcDiff(self.X, X0) - self.Y += dy + X_pivot = self.IC.newCartesian(self.X, dy_to_pivot, self.params.verbose) + dy_to_pivot = self.IC.calcDiff(X_pivot, X0) + + # Calculating sqrt(mass) weighted Cartesian coordinate + GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(X_pivot, sqrt=True, invMW=True) + mwdx = np.dot(GMat_sqrt_inv,dy_to_pivot) + logger.info("Half step dy = %.5f\n" %np.linalg.norm(dy_to_pivot)) + logger.info("Half step mw-dx = %.5f\n" %np.linalg.norm(mwdx)) # We are at the pivot point - logger.info("IRC status 1: Finding the next point (q_{k+1})\n") - stepsize = self.IRC_stepsize - v1 = self.IRC_v - X_pivot = self.X.copy() + logger.info('\nIRC sub-step2: Finding the next point (q_{k+1})\n') + v1 = v.copy() irc_sub_iteration = 0 - p_prime = self.IRC_step_to_pivot + p_prime = dy_to_pivot.copy() while True: X = self.IC.newCartesian(X_pivot, p_prime, self.params.verbose) # Now we are at the guessed point, define mass-weighted G matrix at the guessed point self.IC.clearCache() GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(X, sqrt=True, invMW=True) # Mass weighted displacement, gradients, and Hessian - g_M = np.dot(GMat_sqrt, self.guess_g(self.G, self.H, self.IRC_step_to_pivot + p_prime)) + g_M = np.dot(GMat_sqrt, self.guess_g(self.G, self.H, dy_to_pivot + p_prime)) H_M = np.dot(np.dot(GMat_sqrt,self.H), GMat_sqrt.T) p_M = np.dot(GMat_sqrt_inv, p_prime) @@ -497,9 +499,7 @@ def step(self): init_guess = 1.01*Heig[0] if Heig[0] < 0 else 0.99*Heig[0] with warnings.catch_warnings(): warnings.simplefilter("ignore") - min_lambda = scipy.optimize.fsolve(find_lambda, init_guess, (stepsize, Heig, Hvecs, g_M, p_M)) - if min_lambda[0] > init_guess: - logger.warning('Optimized lambda is bigger than the lowest eigenvalue of H_M\n') + min_lambda = scipy.optimize.fsolve(self.find_lambda, init_guess, (Heig, Hvecs, g_M, p_M)) LambdaI = min_lambda[0]*np.eye(len(self.IC.Internals)) del_q_M1 = np.linalg.pinv(H_M - LambdaI) del_q_M2 = g_M - min_lambda[0]*p_M @@ -507,13 +507,15 @@ def step(self): dq_new = np.dot(GMat_sqrt, del_q_M) if np.linalg.norm(dq_new) < 1e-5 or irc_sub_iteration > 500: - dy = p_prime + dy = dy_to_pivot + p_prime v2 = p_prime/np.linalg.norm(p_prime) deg = np.degrees(np.arccos(np.dot(v1/np.linalg.norm(v1),v2))) - self.IRC_angle = deg logger.info('Angle between v1 and v2: %2.f \n' %deg) - logger.info('Final del_q length (should be small): %.8f \n' %np.linalg.norm(dq_new)) - logger.info("Final dy in status 1: %.5f \n" %np.linalg.norm(dy)) + #logger.info('Final del_q length (should be small): %.8f \n' %np.linalg.norm(dq_new)) + logger.info('Total step dy = %.5f \n' %np.linalg.norm(dy)) + mwdx = np.dot(GMat_sqrt_inv, dy) + self.IRC_disp = min(np.linalg.norm(mwdx), np.linalg.norm(dy)) + logger.info('Total step mw-dx = %.5f \n\n' %np.linalg.norm(mwdx)) break irc_sub_iteration += 1 p_prime += dq_new @@ -539,7 +541,7 @@ def step(self): ### OBTAIN AN OPTIMIZATION STEP ### # The trust radius is to be computed in Cartesian coordinates. # First take a full-size optimization step - if params.verbose and not params.irc: logger.info(" Optimizer.step : Attempting full-size optimization step\n") + if params.verbose : logger.info(" Optimizer.step : Attempting full-size optimization step\n") if not params.irc: dy, _, __ = self.get_delta_prime(v0, verbose=self.params.verbose) # Internal coordinate step size @@ -688,31 +690,26 @@ def evaluateStep(self): logger.info(self.prim_msg + '\n') ### Check convergence criteria ### - criteria_met = Converged_energy and Converged_grms and Converged_drms and Converged_gmax and Converged_dmax - - if (criteria_met and params.irc) or self.IRC_converged: + if params.irc and Converged_energy and Converged_drms and Converged_dmax and self.IRC_disp < 1e-5: if self.Iteration > 10: - self.IRC_converged = True - if self.IRC_angle > 175: - if self.IRC_direction == 1: - logger.info("IRC Forward direction converged\n") - logger.info("IRC Backward will be performed\n") - self.IRC_direction = -1 - self.progress = self.progress[::-1][:-1] - self.Iteration = 0 - self.H = self.H0.copy() - self.X = self.X_hist[0] - self.Y = self.IC.calculate(self.X) - self.G = self.IC.calcGrad(self.X, self.progress.qm_grads[-1]).flatten() - self.IRC_converged = False - return - elif self.IRC_direction == -1: - self.SortedEigenvalues(self.H) - logger.info("Converged! =D\n") - self.state = OPT_STATE.CONVERGED - return - - if criteria_met and self.conSatisfied and not params.irc: + if self.IRC_direction == 1: + logger.info("IRC forward direction converged\n") + logger.info("IRC backward direction starts here\n\n") + self.IRC_direction = -1 + self.progress = self.progress[::-1][:-1] + self.Iteration = 0 + self.gradx = self.Gx_hist[0].copy() + self.X = self.X_hist[0].copy() + self.trust = self.params.trust + self.prepareFirstStep() + return + elif self.IRC_direction == -1: + self.SortedEigenvalues(self.H) + logger.info("Converged! =D\n") + self.state = OPT_STATE.CONVERGED + return + + if Converged_energy and Converged_grms and Converged_drms and Converged_gmax and Converged_dmax and self.conSatisfied and not params.irc: self.SortedEigenvalues(self.H) logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED diff --git a/geometric/params.py b/geometric/params.py index dc98c8c0..f75d1435 100644 --- a/geometric/params.py +++ b/geometric/params.py @@ -89,7 +89,7 @@ def __init__(self, **kwargs): self.trust = min(self.tmax, self.trust) self.trust = max(self.tmin, self.trust) # Maximum number of optimization cycles - self.maxiter = kwargs.get('maxiter', 500 if self.irc else 300) + self.maxiter = kwargs.get('maxiter', 300) # Use updated constraint algorithm implemented 2019-03-20 self.conmethod = kwargs.get('conmethod', 0) # Write Hessian matrix at optimized structure to text file @@ -176,13 +176,14 @@ def convergence_criteria(self, **kwargs): 'INTERFRAG_TIGHT': [1e-6, 1e-5, 1.5e-5, 4.0e-4, 6.0e-4], 'GAU_TIGHT': [1e-6, 1e-5, 1.5e-5, 4e-5, 6e-5], 'GAU_VERYTIGHT': [1e-6, 1e-6, 2e-6, 4e-6, 6e-6], - 'IRC': [5e-4, 2e-2, 4e-2, 1e-2, 2e-2]} + } # Q-Chem style convergence criteria (i.e. gradient and either energy or displacement) self.qccnv = kwargs.get('qccnv', False) # Molpro style convergence criteria (i.e. gradient and either energy or displacement, with different defaults) self.molcnv = kwargs.get('molcnv', False) # Check if there is a convergence set passed else use the default - set_name = 'IRC' if self.irc else kwargs.get('convergence_set', 'GAU').upper() + #set_name = 'IRC' if self.irc else kwargs.get('convergence_set', 'GAU').upper() + set_name = kwargs.get('convergence_set', 'GAU').upper() # If we have extra keywords apply them here else use the set # Convergence criteria in a.u. and Angstrom self.Convergence_energy = kwargs.get('convergence_energy', convergence_sets[set_name][0]) From a1a22e58b6ae764bdc61ebcec12b61e512835019 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Tue, 30 May 2023 09:01:38 -0700 Subject: [PATCH 03/35] optimize.step() -> optimizer.IRC_step() and optimizer.optimize_step() --- geometric/optimize.py | 257 ++++++++++++++++++++++-------------------- 1 file changed, 135 insertions(+), 122 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 9537253d..21519693 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -150,12 +150,6 @@ def print_info(self): else: logger.info("> RMS-Grad < %.2e\n" % params.Convergence_grms) logger.info("> RMS-Disp < %.2e\n" % params.Convergence_drms) - elif params.irc: - logger.info("> Will converge when all 4 criteria are reached:\n") - logger.info("> |Delta-E| < %.2e\n" % params.Convergence_energy) - logger.info("> RMS-Disp < %.2e\n" % params.Convergence_drms) - logger.info("> Max-Disp < %.2e\n" % params.Convergence_dmax) - logger.info("> IRC-Disp < 1.00e-05\n") else: logger.info("> Will converge when all 5 criteria are reached:\n") logger.info("> |Delta-E| < %.2e\n" % params.Convergence_energy) @@ -424,102 +418,135 @@ def guess_g(self, g, H, disp): return g_new def step(self): - """ - Perform one step of the optimization. - """ + if self.params.irc: + """ + Perform one step of the IRC. + """ + dy = self.IRC_step() + else: + """ + Perform one step of the optimization. + """ + dy = self.optimize_step() + ### Before updating any of our variables, copy current variables to "previous" + self.Yprev = self.Y.copy() + self.Xprev = self.X.copy() + self.Gxprev = self.gradx.copy() + self.Gprev = self.G.copy() + self.Eprev = self.E + ### Update the Internal Coordinates ### + X0 = self.X.copy() + self.newCartesian(dy) + ## The "actual" dy may be different from the one passed to newCartesian(), + ## for example if we enforce constraints or don't get the step we expect. + dy = self.IC.calcDiff(self.X, X0) + # dyp = self.IC.Prims.calcDiff(self.X, X0) + # print("Actual dy:", dy) + self.Y += dy + self.expect = flat(0.5*multi_dot([row(dy),self.H,col(dy)]))[0] + np.dot(dy,self.G) + # self.expectdG = np.dot(self.H, col(dy).flatten()) + self.state = OPT_STATE.NEEDS_EVALUATION + + def IRC_step(self): + logger.info("\nIRC sub-step1: Finding a pivot point (q*_{k+1})\n") + # Need to take a step towards the pivot point + self.IC.clearCache() + GMat = self.IC.GMatrix(self.X, invMW=True) + GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(self.X, sqrt=True, invMW=True) + + # Vector to the pivot point + if self.Iteration == 0: + # If it's the very first step, pick the eigenvector of the imaginary frequency and pick the direction + logger.info('\nFirst, following the imaginary mode vector\n') + if self.TSWavenum[1] < 0: + raise IRCError("There are more than one imaginary vibrational mode, please optimize the structure and try again.\n") + + # Getting IC vectors correspond to the imaginary frequency + H_M = np.dot(np.dot(GMat_sqrt, self.H), GMat_sqrt.T) + _, MW_IC_vecs = np.linalg.eigh(H_M) + invMW_v = np.dot(GMat_sqrt,MW_IC_vecs[0]) + v = np.dot(GMat_sqrt_inv, invMW_v) + + # Initial direction + v *= self.IRC_direction + + invMW_v = np.dot(GMat, v) + + else: + # Else, use the mass-weighted G matrix and internal coordinate gradients to get the vector. + # Normalization factor + v = self.G.copy() # Internal coordinate gradients + invMW_v = np.dot(GMat, v) + + # Normalization factor + N = 1 / np.sqrt(np.dot(v.T, np.dot(GMat, v))) + # Step towards the pivot point + dy_to_pivot = -0.5*self.IRC_stepsize*N*invMW_v + + # Move to the pivot point + X0 = self.X.copy() + X_pivot = self.IC.newCartesian(self.X, dy_to_pivot, self.params.verbose) + dy_to_pivot = self.IC.calcDiff(X_pivot, X0) + + # Calculating sqrt(mass) weighted Cartesian coordinate + GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(X_pivot, sqrt=True, invMW=True) + mwdx = np.dot(GMat_sqrt_inv,dy_to_pivot) + logger.info("Half step dy = %.5f\n" %np.linalg.norm(dy_to_pivot)) + logger.info("Half step mw-dx = %.5f\n" %np.linalg.norm(mwdx)) + + # We are at the pivot point + logger.info('\nIRC sub-step2: Finding the next point (q_{k+1})\n') + v1 = v.copy() + irc_sub_iteration = 0 + p_prime = dy_to_pivot.copy() + while True: + X = self.IC.newCartesian(X_pivot, p_prime, self.params.verbose) + # Now we are at the guessed point, define mass-weighted G matrix at the guessed point + self.IC.clearCache() + GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(X, sqrt=True, invMW=True) + # Mass weighted displacement, gradients, and Hessian + g_M = np.dot(GMat_sqrt, self.guess_g(self.G, self.H, dy_to_pivot + p_prime)) + H_M = np.dot(np.dot(GMat_sqrt,self.H), GMat_sqrt.T) + p_M = np.dot(GMat_sqrt_inv, p_prime) + + Heig, Hvecs = np.linalg.eigh(H_M) + + init_guess = 1.01*Heig[0] if Heig[0] < 0 else 0.99*Heig[0] + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + min_lambda = scipy.optimize.fsolve(self.find_lambda, init_guess, (Heig, Hvecs, g_M, p_M), xtol=1e-10) + LambdaI = min_lambda[0]*np.eye(len(self.IC.Internals)) + del_q_M1 = np.linalg.pinv(H_M - LambdaI) + del_q_M2 = g_M - min_lambda[0]*p_M + del_q_M = -np.dot(del_q_M1, del_q_M2) + dq_new = np.dot(GMat_sqrt, del_q_M) + + if np.linalg.norm(dq_new) < 1e-5 or irc_sub_iteration > 500: + dy = dy_to_pivot + p_prime + v2 = p_prime/np.linalg.norm(p_prime) + deg = np.degrees(np.arccos(np.dot(v1/np.linalg.norm(v1),v2))) + logger.info('Angle between v1 and v2: %2.f \n' %deg) + #logger.info('Final del_q length (should be small): %.8f \n' %np.linalg.norm(dq_new)) + logger.info('Total step dy = %.5f \n' %np.linalg.norm(dy)) + mwdx = np.dot(GMat_sqrt_inv, dy) + self.IRC_disp = min(np.linalg.norm(mwdx), np.linalg.norm(dy)) + logger.info('Total step mw-dx = %.5f \n\n' %np.linalg.norm(mwdx)) + break + irc_sub_iteration += 1 + p_prime += dq_new + + self.Iteration += 1 + # Cartesian coordinate step size + self.cnorm = self.get_cartesian_norm(dy) + return dy + + def optimize_step(self): params = self.params if np.isnan(self.G).any(): raise RuntimeError("Gradient contains nan - check output and temp-files for possible errors") if np.isnan(self.H).any(): raise RuntimeError("Hessian contains nan - check output and temp-files for possible errors") - if params.irc: - logger.info("\nIRC sub-step1: Finding a pivot point (q*_{k+1})\n") - # Need to take a step towards the pivot point - self.IC.clearCache() - GMat = self.IC.GMatrix(self.X, invMW=True) - GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(self.X, sqrt=True, invMW=True) - - # Vector to the pivot point - if self.Iteration == 0: - # If it's the very first step, pick the eigenvector of the imaginary frequency and pick the direction - logger.info('\nFirst, following the imaginary mode vector\n') - if self.TSWavenum[1] < 0: - raise IRCError("There are more than one imaginary vibrational mode, please optimize the structure and try again.\n") - - # Getting IC vectors correspond to the imaginary frequency - H_M = np.dot(np.dot(GMat_sqrt, self.H), GMat_sqrt.T) - _, MW_IC_vecs = np.linalg.eigh(H_M) - invMW_v = np.dot(GMat_sqrt,MW_IC_vecs[0]) - v = np.dot(GMat_sqrt_inv, invMW_v) - - # Initial direction - v *= self.IRC_direction - invMW_v = np.dot(GMat, v) - - else: - # Else, use the mass-weighted G matrix and internal coordinate gradients to get the vector. - # Normalization factor - v = self.G.copy() # Internal coordinate gradients - invMW_v = np.dot(GMat, v) - - # Normalization factor - N = 1 / np.sqrt(np.dot(v.T, np.dot(GMat, v))) - # Step towards the pivot point - dy_to_pivot = -0.5*self.IRC_stepsize*N*invMW_v - - # Move to the pivot point - X0 = self.X.copy() - X_pivot = self.IC.newCartesian(self.X, dy_to_pivot, self.params.verbose) - dy_to_pivot = self.IC.calcDiff(X_pivot, X0) - - # Calculating sqrt(mass) weighted Cartesian coordinate - GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(X_pivot, sqrt=True, invMW=True) - mwdx = np.dot(GMat_sqrt_inv,dy_to_pivot) - logger.info("Half step dy = %.5f\n" %np.linalg.norm(dy_to_pivot)) - logger.info("Half step mw-dx = %.5f\n" %np.linalg.norm(mwdx)) - - # We are at the pivot point - logger.info('\nIRC sub-step2: Finding the next point (q_{k+1})\n') - v1 = v.copy() - irc_sub_iteration = 0 - p_prime = dy_to_pivot.copy() - while True: - X = self.IC.newCartesian(X_pivot, p_prime, self.params.verbose) - # Now we are at the guessed point, define mass-weighted G matrix at the guessed point - self.IC.clearCache() - GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(X, sqrt=True, invMW=True) - # Mass weighted displacement, gradients, and Hessian - g_M = np.dot(GMat_sqrt, self.guess_g(self.G, self.H, dy_to_pivot + p_prime)) - H_M = np.dot(np.dot(GMat_sqrt,self.H), GMat_sqrt.T) - p_M = np.dot(GMat_sqrt_inv, p_prime) - - Heig, Hvecs = np.linalg.eigh(H_M) - - init_guess = 1.01*Heig[0] if Heig[0] < 0 else 0.99*Heig[0] - with warnings.catch_warnings(): - warnings.simplefilter("ignore") - min_lambda = scipy.optimize.fsolve(self.find_lambda, init_guess, (Heig, Hvecs, g_M, p_M)) - LambdaI = min_lambda[0]*np.eye(len(self.IC.Internals)) - del_q_M1 = np.linalg.pinv(H_M - LambdaI) - del_q_M2 = g_M - min_lambda[0]*p_M - del_q_M = -np.dot(del_q_M1, del_q_M2) - dq_new = np.dot(GMat_sqrt, del_q_M) - - if np.linalg.norm(dq_new) < 1e-5 or irc_sub_iteration > 500: - dy = dy_to_pivot + p_prime - v2 = p_prime/np.linalg.norm(p_prime) - deg = np.degrees(np.arccos(np.dot(v1/np.linalg.norm(v1),v2))) - logger.info('Angle between v1 and v2: %2.f \n' %deg) - #logger.info('Final del_q length (should be small): %.8f \n' %np.linalg.norm(dq_new)) - logger.info('Total step dy = %.5f \n' %np.linalg.norm(dy)) - mwdx = np.dot(GMat_sqrt_inv, dy) - self.IRC_disp = min(np.linalg.norm(mwdx), np.linalg.norm(dy)) - logger.info('Total step mw-dx = %.5f \n\n' %np.linalg.norm(mwdx)) - break - irc_sub_iteration += 1 - p_prime += dq_new - self.Iteration += 1 if (self.Iteration%5) == 0: self.engine.clearCalcs() @@ -542,8 +569,7 @@ def step(self): # The trust radius is to be computed in Cartesian coordinates. # First take a full-size optimization step if params.verbose : logger.info(" Optimizer.step : Attempting full-size optimization step\n") - if not params.irc: - dy, _, __ = self.get_delta_prime(v0, verbose=self.params.verbose) + dy, _, __ = self.get_delta_prime(v0, verbose=self.params.verbose) # Internal coordinate step size inorm = np.linalg.norm(dy) # Cartesian coordinate step size @@ -554,7 +580,7 @@ def step(self): if params.verbose: logger.info(" Optimizer.step : Internal-step: %.4f Cartesian-step: %.4f Trust-radius: %.4f\n" % (inorm, self.cnorm, self.trust)) # If the step is above the trust radius in Cartesian coordinates, then # do the following to reduce the step length: - if self.cnorm > 1.1 * self.trust and not params.irc: + if self.cnorm > 1.1 * self.trust: # This is the function f(inorm) = cnorm-target that we find a root # for obtaining a step with the desired Cartesian step size. froot = self.createFroot(v0) @@ -607,24 +633,7 @@ def step(self): # Dot = -np.dot(dy/np.linalg.norm(dy), self.G/np.linalg.norm(self.G)) # Whether the Cartesian norm comes close to the trust radius # bump = cnorm > 0.8 * self.trust - ### Before updating any of our variables, copy current variables to "previous" - self.Yprev = self.Y.copy() - self.Xprev = self.X.copy() - self.Gxprev = self.gradx.copy() - self.Gprev = self.G.copy() - self.Eprev = self.E - ### Update the Internal Coordinates ### - X0 = self.X.copy() - self.newCartesian(dy) - ## The "actual" dy may be different from the one passed to newCartesian(), - ## for example if we enforce constraints or don't get the step we expect. - dy = self.IC.calcDiff(self.X, X0) - # dyp = self.IC.Prims.calcDiff(self.X, X0) - # print("Actual dy:", dy) - self.Y += dy - self.expect = flat(0.5*multi_dot([row(dy),self.H,col(dy)]))[0] + np.dot(dy,self.G) - # self.expectdG = np.dot(self.H, col(dy).flatten()) - self.state = OPT_STATE.NEEDS_EVALUATION + return dy def evaluateStep(self): ### At this point, the state should be NEEDS_EVALUATION @@ -690,17 +699,18 @@ def evaluateStep(self): logger.info(self.prim_msg + '\n') ### Check convergence criteria ### - if params.irc and Converged_energy and Converged_drms and Converged_dmax and self.IRC_disp < 1e-5: - if self.Iteration > 10: + criterima_met = Converged_energy and Converged_grms and Converged_drms and Converged_gmax and Converged_dmax + if params.irc: + if criterima_met and self.Iteration > 10: if self.IRC_direction == 1: - logger.info("IRC forward direction converged\n") + logger.info("\nIRC forward direction converged\n") logger.info("IRC backward direction starts here\n\n") self.IRC_direction = -1 self.progress = self.progress[::-1][:-1] self.Iteration = 0 self.gradx = self.Gx_hist[0].copy() self.X = self.X_hist[0].copy() - self.trust = self.params.trust + self.IRC_stepsize = self.params.trust self.prepareFirstStep() return elif self.IRC_direction == -1: @@ -708,8 +718,11 @@ def evaluateStep(self): logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED return + elif Converged_energy and Converged_drms and Converged_dmax and self.IRC_disp < 1e-4: + logger.info("Decreasing IRC step-size\n") + self.IRC_stepsize /= 4 - if Converged_energy and Converged_grms and Converged_drms and Converged_gmax and Converged_dmax and self.conSatisfied and not params.irc: + if criterima_met and self.conSatisfied and not params.irc: self.SortedEigenvalues(self.H) logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED From 797af27727dfce18b543232d8a58644d9e1548fe Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Tue, 30 May 2023 12:18:38 -0700 Subject: [PATCH 04/35] minor IRC modification --- geometric/optimize.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 21519693..91e9e29b 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -706,7 +706,7 @@ def evaluateStep(self): logger.info("\nIRC forward direction converged\n") logger.info("IRC backward direction starts here\n\n") self.IRC_direction = -1 - self.progress = self.progress[::-1][:-1] + self.progress = self.progress[::-1] self.Iteration = 0 self.gradx = self.Gx_hist[0].copy() self.X = self.X_hist[0].copy() @@ -720,7 +720,7 @@ def evaluateStep(self): return elif Converged_energy and Converged_drms and Converged_dmax and self.IRC_disp < 1e-4: logger.info("Decreasing IRC step-size\n") - self.IRC_stepsize /= 4 + self.IRC_stepsize /= 2 if criterima_met and self.conSatisfied and not params.irc: self.SortedEigenvalues(self.H) From 42efeed47692ab97deb119fa2f6f219f2226e4d6 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Fri, 2 Jun 2023 11:21:29 -0700 Subject: [PATCH 05/35] mw wilsonB matrix fixed --- geometric/internal.py | 2 +- geometric/optimize.py | 39 +++++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/geometric/internal.py b/geometric/internal.py index 3cc01a96..0562b9ea 100644 --- a/geometric/internal.py +++ b/geometric/internal.py @@ -1725,7 +1725,7 @@ def wilsonB(self, xyz, invMW=False): CacheWarning = True ans = np.array(WilsonB) if invMW: - ans /= np.tile(self.mass, (len(self.Internals), 1)) + ans /= np.tile(np.sqrt(self.mass), (len(self.Internals), 1)) return ans def GMatrix(self, xyz, invMW=False): diff --git a/geometric/optimize.py b/geometric/optimize.py index 91e9e29b..66078bfb 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -428,7 +428,20 @@ def step(self): Perform one step of the optimization. """ dy = self.optimize_step() + ### Before updating any of our variables, copy current variables to "previous" + self.cnorm = self.get_cartesian_norm(dy) + ### DONE OBTAINING THE STEP ### + if isinstance(self.IC, PrimitiveInternalCoordinates): + idx = np.argmax(np.abs(dy)) + iunit = np.zeros_like(dy) + iunit[idx] = 1.0 + self.prim_msg = "Along %s %.3f" % (self.IC.Internals[idx], np.dot(dy/np.linalg.norm(dy), iunit)) + ### These quantities, computed previously, are no longer used. + # Dot product of the gradient with the step direction + # Dot = -np.dot(dy/np.linalg.norm(dy), self.G/np.linalg.norm(self.G)) + # Whether the Cartesian norm comes close to the trust radius + # bump = cnorm > 0.8 * self.trust self.Yprev = self.Y.copy() self.Xprev = self.X.copy() self.Gxprev = self.gradx.copy() @@ -534,10 +547,7 @@ def IRC_step(self): break irc_sub_iteration += 1 p_prime += dq_new - self.Iteration += 1 - # Cartesian coordinate step size - self.cnorm = self.get_cartesian_norm(dy) return dy def optimize_step(self): @@ -621,18 +631,7 @@ def optimize_step(self): ##### End Rebuild # Finally, take an internal coordinate step of the desired length. dy, _ = self.trust_step(iopt, v0, verbose=(self.params.verbose+1 if self.params.verbose >= 2 else 0)) - self.cnorm = self.get_cartesian_norm(dy) - ### DONE OBTAINING THE STEP ### - if isinstance(self.IC, PrimitiveInternalCoordinates): - idx = np.argmax(np.abs(dy)) - iunit = np.zeros_like(dy) - iunit[idx] = 1.0 - self.prim_msg = "Along %s %.3f" % (self.IC.Internals[idx], np.dot(dy/np.linalg.norm(dy), iunit)) - ### These quantities, computed previously, are no longer used. - # Dot product of the gradient with the step direction - # Dot = -np.dot(dy/np.linalg.norm(dy), self.G/np.linalg.norm(self.G)) - # Whether the Cartesian norm comes close to the trust radius - # bump = cnorm > 0.8 * self.trust + return dy def evaluateStep(self): @@ -703,7 +702,10 @@ def evaluateStep(self): if params.irc: if criterima_met and self.Iteration > 10: if self.IRC_direction == 1: - logger.info("\nIRC forward direction converged\n") + if self.Iteration > params.maxiter: + logger.info("\nIRC forward direction reached maximum iteration number\n") + else: + logger.info("\nIRC forward direction converged\n") logger.info("IRC backward direction starts here\n\n") self.IRC_direction = -1 self.progress = self.progress[::-1] @@ -720,9 +722,10 @@ def evaluateStep(self): return elif Converged_energy and Converged_drms and Converged_dmax and self.IRC_disp < 1e-4: logger.info("Decreasing IRC step-size\n") - self.IRC_stepsize /= 2 + self.IRC_stepsize *= 0.5 + return - if criterima_met and self.conSatisfied and not params.irc: + if criterima_met and self.conSatisfied: self.SortedEigenvalues(self.H) logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED From 5a65bd090d1fc8d302403655edbce049c369e786 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Fri, 2 Jun 2023 12:04:08 -0700 Subject: [PATCH 06/35] convergence criteria for IRC modified --- geometric/optimize.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 66078bfb..831cc4a0 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -542,7 +542,7 @@ def IRC_step(self): #logger.info('Final del_q length (should be small): %.8f \n' %np.linalg.norm(dq_new)) logger.info('Total step dy = %.5f \n' %np.linalg.norm(dy)) mwdx = np.dot(GMat_sqrt_inv, dy) - self.IRC_disp = min(np.linalg.norm(mwdx), np.linalg.norm(dy)) + self.IRC_disp = np.linalg.norm(mwdx) logger.info('Total step mw-dx = %.5f \n\n' %np.linalg.norm(mwdx)) break irc_sub_iteration += 1 @@ -720,7 +720,7 @@ def evaluateStep(self): logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED return - elif Converged_energy and Converged_drms and Converged_dmax and self.IRC_disp < 1e-4: + elif self.IRC_disp < 0.5*self.IRC_stepsize: logger.info("Decreasing IRC step-size\n") self.IRC_stepsize *= 0.5 return From 54d5b2fd4846c4e7c107658d36971490f79baa14 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Sun, 11 Jun 2023 12:59:41 -0700 Subject: [PATCH 07/35] IRC will reject a system with no imaginary mode. IRC will print DFT/single fragment warning. --- geometric/optimize.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 831cc4a0..47f57d6e 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -472,7 +472,9 @@ def IRC_step(self): # If it's the very first step, pick the eigenvector of the imaginary frequency and pick the direction logger.info('\nFirst, following the imaginary mode vector\n') if self.TSWavenum[1] < 0: - raise IRCError("There are more than one imaginary vibrational mode, please optimize the structure and try again.\n") + raise IRCError("There are more than one imaginary vibrational mode. Please optimize the structure and try again.\n") + elif self.TSWavenum[0] > 0: + raise IRCError("No imaginary mode detected. Please optimize the structure and try again.\n") # Getting IC vectors correspond to the imaginary frequency H_M = np.dot(np.dot(GMat_sqrt, self.H), GMat_sqrt.T) @@ -1044,8 +1046,10 @@ def run_optimizer(**kwargs): coordsys = kwargs.get('coordsys', 'tric') # TRIC IRC will fail when there is only one molecule due to the small Hessian eigenvalues. + print_dft_warning = False if params.irc and len(M.molecules) == 1 and coordsys == 'tric': coordsys = 'dlc' + print_dft_warning = True CoordClass, connect, addcart = CoordSysDict[coordsys.lower()] @@ -1101,7 +1105,7 @@ def run_optimizer(**kwargs): logger.info("\n") # Print out a note if DFT is used for non-fragmented systems; recommend --dlc and --subfrctor 2. - if engine.detect_dft() and coordsys != "dlc" and len(IC.frags) == 1: + if engine.detect_dft() and coordsys != "dlc" and len(IC.frags) == 1 or print_dft_warning: logger.info("#===================================================================================#\n") logger.info("#| \x1b[91mNote: Detected the use of DFT for a system containing only one fragment.\x1b[0m |#\n") logger.info("#| |#\n") From 2ecdda102f9e30684f3c46c9c5fcf6f0b1878cde Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Sun, 11 Jun 2023 13:57:12 -0700 Subject: [PATCH 08/35] evaluateStep for IRC is fixed --- geometric/optimize.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 47f57d6e..65db67da 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -701,21 +701,22 @@ def evaluateStep(self): ### Check convergence criteria ### criterima_met = Converged_energy and Converged_grms and Converged_drms and Converged_gmax and Converged_dmax + + def reset_irc(): + self.IRC_direction = -1 + self.progress = self.progress[::-1] + self.Iteration = 0 + self.gradx = self.Gx_hist[0].copy() + self.X = self.X_hist[0].copy() + self.IRC_stepsize = self.params.trust + self.prepareFirstStep() + if params.irc: if criterima_met and self.Iteration > 10: if self.IRC_direction == 1: - if self.Iteration > params.maxiter: - logger.info("\nIRC forward direction reached maximum iteration number\n") - else: - logger.info("\nIRC forward direction converged\n") + logger.info("\nIRC forward direction converged\n") logger.info("IRC backward direction starts here\n\n") - self.IRC_direction = -1 - self.progress = self.progress[::-1] - self.Iteration = 0 - self.gradx = self.Gx_hist[0].copy() - self.X = self.X_hist[0].copy() - self.IRC_stepsize = self.params.trust - self.prepareFirstStep() + reset_irc() return elif self.IRC_direction == -1: self.SortedEigenvalues(self.H) @@ -727,6 +728,12 @@ def evaluateStep(self): self.IRC_stepsize *= 0.5 return + elif self.Iteration > params.maxiter: + logger.info("\nIRC forward direction reached maximum iteration number\n") + logger.info("IRC backward direction starts here\n\n") + reset_irc() + return + if criterima_met and self.conSatisfied: self.SortedEigenvalues(self.H) logger.info("Converged! =D\n") From bde62c46b0e5d8b1ca02a7055369ece1581fcfeb Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Sun, 11 Jun 2023 14:31:11 -0700 Subject: [PATCH 09/35] minor fix for irc --- geometric/optimize.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 65db67da..0c2080f6 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -723,7 +723,7 @@ def reset_irc(): logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED return - elif self.IRC_disp < 0.5*self.IRC_stepsize: + elif self.IRC_disp < 0.5*self.IRC_stepsize and self.Iteration > 5: logger.info("Decreasing IRC step-size\n") self.IRC_stepsize *= 0.5 return From c3707d8b5032eae93fe8cdd6ee27dd77a3deca74 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Wed, 14 Jun 2023 15:56:27 -0700 Subject: [PATCH 10/35] Adjusting input trust for IRC --- geometric/optimize.py | 59 +++++++++++++++++++++++++++++-------------- geometric/params.py | 8 +++--- 2 files changed, 44 insertions(+), 23 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 0c2080f6..4b46cb1c 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -124,7 +124,7 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru self.recalcHess = False # IRC related attributes self.IRC_direction = 1 - self.IRC_stepsize = self.params.trust + self.IRC_stepsize = self.params.trust*ang2bohr if print_info: self.print_info() @@ -461,12 +461,14 @@ def step(self): self.state = OPT_STATE.NEEDS_EVALUATION def IRC_step(self): - logger.info("\nIRC sub-step1: Finding a pivot point (q*_{k+1})\n") + logger.info("\nIRC sub-step 1: Finding a pivot point (q*_{k+1})\n") # Need to take a step towards the pivot point self.IC.clearCache() GMat = self.IC.GMatrix(self.X, invMW=True) GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(self.X, sqrt=True, invMW=True) + # Save the initial Cartesian coordinate + X0 = self.X.copy() # Vector to the pivot point if self.Iteration == 0: # If it's the very first step, pick the eigenvector of the imaginary frequency and pick the direction @@ -484,9 +486,25 @@ def IRC_step(self): # Initial direction v *= self.IRC_direction - invMW_v = np.dot(GMat, v) + # Move towards the imaginary vector to see how much Cartesian coordinate moves + N = 1 / np.sqrt(np.dot(v.T, np.dot(GMat, v))) + dy_to_temp = -self.IRC_stepsize*N*invMW_v + X_temp = self.IC.newCartesian(X0, dy_to_temp, self.params.verbose) + + dy_to_temp = self.IC.calcDiff(X_temp, X0) + GMat_sqrt_inv_temp, GMat_sqrt_temp = self.IC.GInverse_SVD(X_temp, sqrt=True, invMW=True) + + mwdx_temp = np.dot(GMat_sqrt_inv_temp, dy_to_temp) + + mw_cnorm = self.get_cartesian_norm(mwdx_temp) + cnorm = self.get_cartesian_norm(dy_to_temp) + + # Adjust the stepsize + self.IRC_stepsize *= mw_cnorm/cnorm + self.params.tmax = self.IRC_stepsize*3 + else: # Else, use the mass-weighted G matrix and internal coordinate gradients to get the vector. # Normalization factor @@ -499,21 +517,24 @@ def IRC_step(self): dy_to_pivot = -0.5*self.IRC_stepsize*N*invMW_v # Move to the pivot point - X0 = self.X.copy() - X_pivot = self.IC.newCartesian(self.X, dy_to_pivot, self.params.verbose) + X_pivot = self.IC.newCartesian(X0, dy_to_pivot, self.params.verbose) dy_to_pivot = self.IC.calcDiff(X_pivot, X0) # Calculating sqrt(mass) weighted Cartesian coordinate GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(X_pivot, sqrt=True, invMW=True) mwdx = np.dot(GMat_sqrt_inv,dy_to_pivot) - logger.info("Half step dy = %.5f\n" %np.linalg.norm(dy_to_pivot)) - logger.info("Half step mw-dx = %.5f\n" %np.linalg.norm(mwdx)) + dx = self.get_cartesian_norm(dy_to_pivot) + logger.info("Half step dy = %.5f\n" %np.linalg.norm(dy_to_pivot)) + logger.info("Half step mw-dx = %.5f Bohr*sqrt(amu)\n" %np.linalg.norm(mwdx)) + logger.info("Half step dx = %.5f Bohr\n" %dx) # We are at the pivot point - logger.info('\nIRC sub-step2: Finding the next point (q_{k+1})\n') + logger.info('\nIRC sub-step 2: Finding the next point (q_{k+1})\n') v1 = v.copy() irc_sub_iteration = 0 p_prime = dy_to_pivot.copy() + + # Finding the next point while True: X = self.IC.newCartesian(X_pivot, p_prime, self.params.verbose) # Now we are at the guessed point, define mass-weighted G matrix at the guessed point @@ -542,10 +563,12 @@ def IRC_step(self): deg = np.degrees(np.arccos(np.dot(v1/np.linalg.norm(v1),v2))) logger.info('Angle between v1 and v2: %2.f \n' %deg) #logger.info('Final del_q length (should be small): %.8f \n' %np.linalg.norm(dq_new)) - logger.info('Total step dy = %.5f \n' %np.linalg.norm(dy)) - mwdx = np.dot(GMat_sqrt_inv, dy) - self.IRC_disp = np.linalg.norm(mwdx) - logger.info('Total step mw-dx = %.5f \n\n' %np.linalg.norm(mwdx)) + mwdx = np.linalg.norm(np.dot(GMat_sqrt_inv, dy)) + dx = self.get_cartesian_norm(dy) + logger.info('Total step dy = %.5f \n' %np.linalg.norm(dy)) + logger.info('Total step mw-dx = %.5f Bohr*sqrt(amu)\n' %mwdx) + logger.info('Total step dx = %.5f Bohr\n' %dx) + self.IRC_disp = mwdx break irc_sub_iteration += 1 p_prime += dq_new @@ -688,7 +711,7 @@ def evaluateStep(self): msg = "\n Step %4i :" % self.Iteration msg += " Displace = %s%.3e\x1b[0m/%s%.3e\x1b[0m (rms/max)" % (colors['drms'], rms_displacement, colors['dmax'], max_displacement) if params.irc: - msg += " Trust = %.3e" % (self.IRC_stepsize) + msg += " Stepsize = %.3e Bohr*sqrt(amu)" % (self.IRC_stepsize) else: msg += " Trust = %.3e (%s)" % (self.trust, self.trustprint) msg += " Grad%s = %s%.3e\x1b[0m/%s%.3e\x1b[0m (rms/max)" % ("_T" if self.IC.haveConstraints() else "", colors['grms'], rms_gradient, colors['gmax'], max_gradient) @@ -708,14 +731,14 @@ def reset_irc(): self.Iteration = 0 self.gradx = self.Gx_hist[0].copy() self.X = self.X_hist[0].copy() - self.IRC_stepsize = self.params.trust + self.IRC_stepsize = self.params.trust*ang2bohr self.prepareFirstStep() if params.irc: if criterima_met and self.Iteration > 10: if self.IRC_direction == 1: - logger.info("\nIRC forward direction converged\n") - logger.info("IRC backward direction starts here\n\n") + logger.info("\nIRC forward direction converged") + logger.info("\nIRC backward direction starts here\n\n") reset_irc() return elif self.IRC_direction == -1: @@ -1053,10 +1076,8 @@ def run_optimizer(**kwargs): coordsys = kwargs.get('coordsys', 'tric') # TRIC IRC will fail when there is only one molecule due to the small Hessian eigenvalues. - print_dft_warning = False if params.irc and len(M.molecules) == 1 and coordsys == 'tric': coordsys = 'dlc' - print_dft_warning = True CoordClass, connect, addcart = CoordSysDict[coordsys.lower()] @@ -1112,7 +1133,7 @@ def run_optimizer(**kwargs): logger.info("\n") # Print out a note if DFT is used for non-fragmented systems; recommend --dlc and --subfrctor 2. - if engine.detect_dft() and coordsys != "dlc" and len(IC.frags) == 1 or print_dft_warning: + if engine.detect_dft() and coordsys != "dlc" and len(IC.frags) == 1: logger.info("#===================================================================================#\n") logger.info("#| \x1b[91mNote: Detected the use of DFT for a system containing only one fragment.\x1b[0m |#\n") logger.info("#| |#\n") diff --git a/geometric/params.py b/geometric/params.py index f75d1435..da8091e7 100644 --- a/geometric/params.py +++ b/geometric/params.py @@ -63,9 +63,9 @@ def __init__(self, **kwargs): # More verbose printout self.verbose = kwargs.get('verbose', False) # Starting value of the trust radius - # Because TS optimization and IRC are experimental, use conservative trust radii + # Because TS optimization is experimental, use conservative trust radii self.trust = kwargs.get('trust', 0.01 if self.transition else 0.1) - # Maximum value of trust radius (HP: I don't think self.irc is needed inside the if statement) + # Maximum value of trust radius self.tmax = kwargs.get('tmax', 0.03 if self.transition else 0.3) # Minimum value of the trust radius # Also sets the maximum step size that can be rejected @@ -358,8 +358,8 @@ def parse_optimizer_args(*args): grp_optparam.add_argument('--converge', type=str, nargs="+", help='Custom convergence criteria as key/value pairs.\n' 'Provide the name of a criteria set as "set GAU_LOOSE" or "set TURBOMOLE",\n' 'and/or set specific criteria using key/value pairs e.g. "energy 1e-5 grms 1e-3"\n ') - grp_optparam.add_argument('--trust', type=float, help='Starting trust radius, defaults to 0.1 (energy minimization) or 0.01 (TS optimization).\n ') - grp_optparam.add_argument('--tmax', type=float, help='Maximum trust radius, defaults to 0.3 (energy minimization) or 0.03 (TS optimization).\n ') + grp_optparam.add_argument('--trust', type=float, help='Starting trust radius, defaults to 0.1 Angstrom (energy minimization) or 0.01 Angstrom (TS optimization).\n ') + grp_optparam.add_argument('--tmax', type=float, help='Maximum trust radius, defaults to 0.3 Angstrom (energy minimization) or 0.03 Angstrom (TS optimization).\n ') grp_optparam.add_argument('--tmin', type=float, help='Minimum trust radius, do not reject steps trust radius is below this threshold (method-dependent).\n ') grp_optparam.add_argument('--usedmax', type=str2bool, help='Use maximum component instead of RMS displacement when applying trust radius.\n ') grp_optparam.add_argument('--enforce', type=float, help='Enforce exact constraints when within provided tolerance (in a.u./radian, default 0.0)\n ') From 11f62c0c987f07f64bd010e9527f7120c13706e7 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Thu, 15 Jun 2023 11:01:21 -0700 Subject: [PATCH 11/35] minor change for IRC --- geometric/optimize.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 4b46cb1c..6dd5bee3 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -748,7 +748,7 @@ def reset_irc(): return elif self.IRC_disp < 0.5*self.IRC_stepsize and self.Iteration > 5: logger.info("Decreasing IRC step-size\n") - self.IRC_stepsize *= 0.5 + self.IRC_stepsize *= 0.8 return elif self.Iteration > params.maxiter: From 29b352587db110c0f9571d448c01f72b63edf9b0 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Fri, 16 Jun 2023 11:38:53 -0700 Subject: [PATCH 12/35] IRC stepsize --- geometric/optimize.py | 80 +++++++++++++++++++------------------------ 1 file changed, 36 insertions(+), 44 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 6dd5bee3..7c5c1236 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -125,6 +125,7 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru # IRC related attributes self.IRC_direction = 1 self.IRC_stepsize = self.params.trust*ang2bohr + self.IRC_adjstep = False if print_info: self.print_info() @@ -176,9 +177,8 @@ def print_info(self): logger.info("> \n") logger.info("> Constraints are requested. The following criterion is added:\n") logger.info("> Max Constraint Violation (in Angstroms/degrees) < %.2e \n" % self.params.Convergence_cmax) - logger.info("> === End Optimization Info ===\n") - + def get_cartesian_norm(self, dy, verbose=None): if not verbose: verbose = self.params.verbose return get_cartesian_norm(self.X, dy, self.IC, self.params.enforce, self.params.verbose, self.params.usedmax) @@ -461,11 +461,11 @@ def step(self): self.state = OPT_STATE.NEEDS_EVALUATION def IRC_step(self): - logger.info("\nIRC sub-step 1: Finding a pivot point (q*_{k+1})\n") + logger.info("IRC sub-step 1: Finding a pivot point (q*_{k+1})\n") # Need to take a step towards the pivot point self.IC.clearCache() - GMat = self.IC.GMatrix(self.X, invMW=True) - GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(self.X, sqrt=True, invMW=True) + MWGMat = self.IC.GMatrix(self.X, invMW=True) + MWGMat_sqrt_inv, MWGMat_sqrt = self.IC.GInverse_SVD(self.X, sqrt=True, invMW=True) # Save the initial Cartesian coordinate X0 = self.X.copy() @@ -479,40 +479,26 @@ def IRC_step(self): raise IRCError("No imaginary mode detected. Please optimize the structure and try again.\n") # Getting IC vectors correspond to the imaginary frequency - H_M = np.dot(np.dot(GMat_sqrt, self.H), GMat_sqrt.T) + H_M = np.dot(np.dot(MWGMat_sqrt, self.H), MWGMat_sqrt.T) _, MW_IC_vecs = np.linalg.eigh(H_M) - invMW_v = np.dot(GMat_sqrt,MW_IC_vecs[0]) - v = np.dot(GMat_sqrt_inv, invMW_v) + invMW_v = np.dot(MWGMat_sqrt, MW_IC_vecs[0]) + v = np.dot(MWGMat_sqrt_inv, invMW_v) # Initial direction v *= self.IRC_direction - invMW_v = np.dot(GMat, v) - - # Move towards the imaginary vector to see how much Cartesian coordinate moves - N = 1 / np.sqrt(np.dot(v.T, np.dot(GMat, v))) - dy_to_temp = -self.IRC_stepsize*N*invMW_v - X_temp = self.IC.newCartesian(X0, dy_to_temp, self.params.verbose) - - dy_to_temp = self.IC.calcDiff(X_temp, X0) - GMat_sqrt_inv_temp, GMat_sqrt_temp = self.IC.GInverse_SVD(X_temp, sqrt=True, invMW=True) + invMW_v = np.dot(MWGMat, v) - mwdx_temp = np.dot(GMat_sqrt_inv_temp, dy_to_temp) - - mw_cnorm = self.get_cartesian_norm(mwdx_temp) - cnorm = self.get_cartesian_norm(dy_to_temp) - - # Adjust the stepsize - self.IRC_stepsize *= mw_cnorm/cnorm - self.params.tmax = self.IRC_stepsize*3 + adj_factor = np.linalg.norm(self.TSNormal_modes_x[0] * np.sqrt(self.IC.mass)) + self.IRC_stepsize *= adj_factor + logger.info("Step-size: %.5f Bohr*sqrt(amu)\n" %self.IRC_stepsize) else: # Else, use the mass-weighted G matrix and internal coordinate gradients to get the vector. - # Normalization factor v = self.G.copy() # Internal coordinate gradients - invMW_v = np.dot(GMat, v) + invMW_v = np.dot(MWGMat, v) # Normalization factor - N = 1 / np.sqrt(np.dot(v.T, np.dot(GMat, v))) + N = 1 / np.sqrt(np.dot(v.T, np.dot(MWGMat, v))) # Step towards the pivot point dy_to_pivot = -0.5*self.IRC_stepsize*N*invMW_v @@ -521,12 +507,10 @@ def IRC_step(self): dy_to_pivot = self.IC.calcDiff(X_pivot, X0) # Calculating sqrt(mass) weighted Cartesian coordinate - GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(X_pivot, sqrt=True, invMW=True) - mwdx = np.dot(GMat_sqrt_inv,dy_to_pivot) - dx = self.get_cartesian_norm(dy_to_pivot) + MWGMat_sqrt_inv, MWGMat_sqrt = self.IC.GInverse_SVD(X_pivot, sqrt=True, invMW=True) + mwdx = np.dot(MWGMat_sqrt_inv, dy_to_pivot) logger.info("Half step dy = %.5f\n" %np.linalg.norm(dy_to_pivot)) logger.info("Half step mw-dx = %.5f Bohr*sqrt(amu)\n" %np.linalg.norm(mwdx)) - logger.info("Half step dx = %.5f Bohr\n" %dx) # We are at the pivot point logger.info('\nIRC sub-step 2: Finding the next point (q_{k+1})\n') @@ -539,23 +523,23 @@ def IRC_step(self): X = self.IC.newCartesian(X_pivot, p_prime, self.params.verbose) # Now we are at the guessed point, define mass-weighted G matrix at the guessed point self.IC.clearCache() - GMat_sqrt_inv, GMat_sqrt = self.IC.GInverse_SVD(X, sqrt=True, invMW=True) + MWGMat_sqrt_inv, MWGMat_sqrt = self.IC.GInverse_SVD(X, sqrt=True, invMW=True) # Mass weighted displacement, gradients, and Hessian - g_M = np.dot(GMat_sqrt, self.guess_g(self.G, self.H, dy_to_pivot + p_prime)) - H_M = np.dot(np.dot(GMat_sqrt,self.H), GMat_sqrt.T) - p_M = np.dot(GMat_sqrt_inv, p_prime) + g_M = np.dot(MWGMat_sqrt, self.guess_g(self.G, self.H, dy_to_pivot + p_prime)) + H_M = np.dot(np.dot(MWGMat_sqrt, self.H), MWGMat_sqrt.T) + p_M = np.dot(MWGMat_sqrt_inv, p_prime) Heig, Hvecs = np.linalg.eigh(H_M) init_guess = 1.01*Heig[0] if Heig[0] < 0 else 0.99*Heig[0] with warnings.catch_warnings(): warnings.simplefilter("ignore") - min_lambda = scipy.optimize.fsolve(self.find_lambda, init_guess, (Heig, Hvecs, g_M, p_M), xtol=1e-10) + min_lambda = scipy.optimize.fsolve(self.find_lambda, init_guess, (Heig, Hvecs, g_M, p_M), xtol=1e-12, maxfev=500) LambdaI = min_lambda[0]*np.eye(len(self.IC.Internals)) del_q_M1 = np.linalg.pinv(H_M - LambdaI) del_q_M2 = g_M - min_lambda[0]*p_M del_q_M = -np.dot(del_q_M1, del_q_M2) - dq_new = np.dot(GMat_sqrt, del_q_M) + dq_new = np.dot(MWGMat_sqrt, del_q_M) if np.linalg.norm(dq_new) < 1e-5 or irc_sub_iteration > 500: dy = dy_to_pivot + p_prime @@ -563,11 +547,9 @@ def IRC_step(self): deg = np.degrees(np.arccos(np.dot(v1/np.linalg.norm(v1),v2))) logger.info('Angle between v1 and v2: %2.f \n' %deg) #logger.info('Final del_q length (should be small): %.8f \n' %np.linalg.norm(dq_new)) - mwdx = np.linalg.norm(np.dot(GMat_sqrt_inv, dy)) - dx = self.get_cartesian_norm(dy) + mwdx = np.linalg.norm(np.dot(MWGMat_sqrt_inv, dy)) logger.info('Total step dy = %.5f \n' %np.linalg.norm(dy)) logger.info('Total step mw-dx = %.5f Bohr*sqrt(amu)\n' %mwdx) - logger.info('Total step dx = %.5f Bohr\n' %dx) self.IRC_disp = mwdx break irc_sub_iteration += 1 @@ -732,6 +714,8 @@ def reset_irc(): self.gradx = self.Gx_hist[0].copy() self.X = self.X_hist[0].copy() self.IRC_stepsize = self.params.trust*ang2bohr + self.IRC_adjstep = False + self.calcEnergyForce() self.prepareFirstStep() if params.irc: @@ -746,9 +730,16 @@ def reset_irc(): logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED return - elif self.IRC_disp < 0.5*self.IRC_stepsize and self.Iteration > 5: - logger.info("Decreasing IRC step-size\n") - self.IRC_stepsize *= 0.8 + elif self.IRC_disp < 0.65*self.IRC_stepsize or Quality < 0.65: + if self.Iteration > 5: + logger.info("Decreasing IRC step-size\n") + self.IRC_stepsize *= 0.50 + self.IRC_adjstep = True + return + + elif self.IRC_adjstep and Quality > 0.99: + logger.info("Increasing IRC step-size\n") + self.IRC_stepsize *= 1.25 return elif self.Iteration > params.maxiter: @@ -756,6 +747,7 @@ def reset_irc(): logger.info("IRC backward direction starts here\n\n") reset_irc() return + return if criterima_met and self.conSatisfied: self.SortedEigenvalues(self.H) From 8eec8a483a61b4fe7e7a466ed3017070670d2688 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Sun, 18 Jun 2023 13:10:54 -0700 Subject: [PATCH 13/35] IRC switches to optimizatio near end points --- geometric/optimize.py | 44 ++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 7c5c1236..f72a5b9b 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -125,7 +125,7 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru # IRC related attributes self.IRC_direction = 1 self.IRC_stepsize = self.params.trust*ang2bohr - self.IRC_adjstep = False + self.IRC_opt = False if print_info: self.print_info() @@ -422,7 +422,10 @@ def step(self): """ Perform one step of the IRC. """ - dy = self.IRC_step() + if self.IRC_opt: + dy = self.optimize_step() + else: + dy = self.IRC_step() else: """ Perform one step of the optimization. @@ -550,8 +553,11 @@ def IRC_step(self): mwdx = np.linalg.norm(np.dot(MWGMat_sqrt_inv, dy)) logger.info('Total step dy = %.5f \n' %np.linalg.norm(dy)) logger.info('Total step mw-dx = %.5f Bohr*sqrt(amu)\n' %mwdx) - self.IRC_disp = mwdx + ang_disp = self.get_cartesian_norm(dy)* bohr2ang + if ang_disp > 1e-5: + self.trust = ang_disp break + irc_sub_iteration += 1 p_prime += dq_new self.Iteration += 1 @@ -678,7 +684,7 @@ def evaluateStep(self): else: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[91m" colors['quality'] = "\x1b[91m" - step_state = StepState.Reject if (Quality < -1.0 or params.transition) and not params.irc else StepState.Poor + step_state = StepState.Reject if (Quality < -1.0 or params.transition) and (not params.irc or self.IRC_opt) else StepState.Poor if 'energy' not in colors: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[0m" if 'quality' not in colors: colors['quality'] = "\x1b[0m" colors['grms'] = "\x1b[92m" if Converged_grms else "\x1b[0m" @@ -693,7 +699,10 @@ def evaluateStep(self): msg = "\n Step %4i :" % self.Iteration msg += " Displace = %s%.3e\x1b[0m/%s%.3e\x1b[0m (rms/max)" % (colors['drms'], rms_displacement, colors['dmax'], max_displacement) if params.irc: - msg += " Stepsize = %.3e Bohr*sqrt(amu)" % (self.IRC_stepsize) + if self.IRC_opt: + msg += " Trust = %.3e (%s)" % (self.trust, self.trustprint) + else: + msg += " Stepsize = %.3e Bohr*sqrt(amu)" % (self.IRC_stepsize) else: msg += " Trust = %.3e (%s)" % (self.trust, self.trustprint) msg += " Grad%s = %s%.3e\x1b[0m/%s%.3e\x1b[0m (rms/max)" % ("_T" if self.IC.haveConstraints() else "", colors['grms'], rms_gradient, colors['gmax'], max_gradient) @@ -706,6 +715,7 @@ def evaluateStep(self): ### Check convergence criteria ### criterima_met = Converged_energy and Converged_grms and Converged_drms and Converged_gmax and Converged_dmax + near_convergence = Converged_energy and Converged_drms and Converged_dmax def reset_irc(): self.IRC_direction = -1 @@ -714,7 +724,8 @@ def reset_irc(): self.gradx = self.Gx_hist[0].copy() self.X = self.X_hist[0].copy() self.IRC_stepsize = self.params.trust*ang2bohr - self.IRC_adjstep = False + self.IRC_opt = False + self.trust = self.params.trust self.calcEnergyForce() self.prepareFirstStep() @@ -730,24 +741,19 @@ def reset_irc(): logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED return - elif self.IRC_disp < 0.65*self.IRC_stepsize or Quality < 0.65: - if self.Iteration > 5: - logger.info("Decreasing IRC step-size\n") - self.IRC_stepsize *= 0.50 - self.IRC_adjstep = True - return - - elif self.IRC_adjstep and Quality > 0.99: - logger.info("Increasing IRC step-size\n") - self.IRC_stepsize *= 1.25 - return - + elif (Quality < 0.0 or near_convergence) and not self.IRC_opt: + if self.Iteration > 10: + logger.info("Switching to optimization\n") + self.IRC_opt = True elif self.Iteration > params.maxiter: logger.info("\nIRC forward direction reached maximum iteration number\n") logger.info("IRC backward direction starts here\n\n") reset_irc() return - return + elif self.IRC_opt: + pass + else: + return if criterima_met and self.conSatisfied: self.SortedEigenvalues(self.H) From 67c8bb816a8afe81326467adcdfe78b76653d679 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Tue, 27 Jun 2023 14:57:44 -0700 Subject: [PATCH 14/35] IRC changes its stepsize based on the quality --- geometric/optimize.py | 126 ++++++++++++++++++++++-------------------- geometric/params.py | 2 +- 2 files changed, 66 insertions(+), 62 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index f72a5b9b..a8a8e8b8 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -124,8 +124,8 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru self.recalcHess = False # IRC related attributes self.IRC_direction = 1 - self.IRC_stepsize = self.params.trust*ang2bohr self.IRC_opt = False + self.IRC_init_v = None if print_info: self.print_info() @@ -412,7 +412,7 @@ def find_lambda(self, Lambda, Heig, Hvec, g_M, p_M): def guess_g(self, g, H, disp): """ - guess a gradient using a quadratic expansion + Guess the gradient using the quadratic expansion """ g_new = g + np.dot(H, disp) return g_new @@ -423,7 +423,7 @@ def step(self): Perform one step of the IRC. """ if self.IRC_opt: - dy = self.optimize_step() + dy = self.optimize_step() else: dy = self.IRC_step() else: @@ -464,6 +464,7 @@ def step(self): self.state = OPT_STATE.NEEDS_EVALUATION def IRC_step(self): + self.farConstraints = self.IC.haveConstraints() and self.IC.maxConstraintViolation(self.X) > 1e-1 logger.info("IRC sub-step 1: Finding a pivot point (q*_{k+1})\n") # Need to take a step towards the pivot point self.IC.clearCache() @@ -481,19 +482,20 @@ def IRC_step(self): elif self.TSWavenum[0] > 0: raise IRCError("No imaginary mode detected. Please optimize the structure and try again.\n") - # Getting IC vectors correspond to the imaginary frequency - H_M = np.dot(np.dot(MWGMat_sqrt, self.H), MWGMat_sqrt.T) - _, MW_IC_vecs = np.linalg.eigh(H_M) - invMW_v = np.dot(MWGMat_sqrt, MW_IC_vecs[0]) - v = np.dot(MWGMat_sqrt_inv, invMW_v) - - # Initial direction - v *= self.IRC_direction - invMW_v = np.dot(MWGMat, v) - - adj_factor = np.linalg.norm(self.TSNormal_modes_x[0] * np.sqrt(self.IC.mass)) - self.IRC_stepsize *= adj_factor - logger.info("Step-size: %.5f Bohr*sqrt(amu)\n" %self.IRC_stepsize) + # Getting mass-weighted displacement following the imaginary frequency + if self.IRC_init_v is None: + H_M = np.dot(np.dot(MWGMat_sqrt, self.H), MWGMat_sqrt.T) + _, MW_IC_vecs = np.linalg.eigh(H_M) + invMW_v = np.dot(MWGMat_sqrt, MW_IC_vecs[0]) + v = np.dot(MWGMat_sqrt_inv, invMW_v) + invMW_v = np.dot(MWGMat, v) + self.IRC_init_v = v + self.IRC_adjfactor = np.linalg.norm(self.TSNormal_modes_x[0] * np.sqrt(self.IC.mass)) + self.IRC_init_step = self.params.trust * ang2bohr * self.IRC_adjfactor + else: + v = -self.IRC_init_v + invMW_v = np.dot(MWGMat, v) + logger.info("Initial step-size: %.5f Bohr*sqrt(amu)\n" %(self.IRC_init_step)) else: # Else, use the mass-weighted G matrix and internal coordinate gradients to get the vector. @@ -502,13 +504,13 @@ def IRC_step(self): # Normalization factor N = 1 / np.sqrt(np.dot(v.T, np.dot(MWGMat, v))) + self.IRC_stepsize = self.trust * ang2bohr * self.IRC_adjfactor # Step towards the pivot point dy_to_pivot = -0.5*self.IRC_stepsize*N*invMW_v # Move to the pivot point X_pivot = self.IC.newCartesian(X0, dy_to_pivot, self.params.verbose) dy_to_pivot = self.IC.calcDiff(X_pivot, X0) - # Calculating sqrt(mass) weighted Cartesian coordinate MWGMat_sqrt_inv, MWGMat_sqrt = self.IC.GInverse_SVD(X_pivot, sqrt=True, invMW=True) mwdx = np.dot(MWGMat_sqrt_inv, dy_to_pivot) @@ -520,7 +522,6 @@ def IRC_step(self): v1 = v.copy() irc_sub_iteration = 0 p_prime = dy_to_pivot.copy() - # Finding the next point while True: X = self.IC.newCartesian(X_pivot, p_prime, self.params.verbose) @@ -548,18 +549,25 @@ def IRC_step(self): dy = dy_to_pivot + p_prime v2 = p_prime/np.linalg.norm(p_prime) deg = np.degrees(np.arccos(np.dot(v1/np.linalg.norm(v1),v2))) - logger.info('Angle between v1 and v2: %2.f \n' %deg) - #logger.info('Final del_q length (should be small): %.8f \n' %np.linalg.norm(dq_new)) mwdx = np.linalg.norm(np.dot(MWGMat_sqrt_inv, dy)) - logger.info('Total step dy = %.5f \n' %np.linalg.norm(dy)) - logger.info('Total step mw-dx = %.5f Bohr*sqrt(amu)\n' %mwdx) - ang_disp = self.get_cartesian_norm(dy)* bohr2ang - if ang_disp > 1e-5: - self.trust = ang_disp + half_mwdx = np.linalg.norm(np.dot(MWGMat_sqrt_inv, p_prime)) + if mwdx < 0.8*self.IRC_init_step and self.Iteration == 0: + logger.info("\nAdjusting step-size for the first step..\n") + self.trust *= self.IRC_init_step / mwdx + self.IRC_init_v *= -1 + dy = self.IRC_step() + return dy break irc_sub_iteration += 1 p_prime += dq_new + + logger.info('Angle between v1 and v2: %2.f \n' % deg) + logger.info('Half step mw-dx = %.5f Bohr*sqrt(amu)\n' % half_mwdx) + logger.info('Total step dy = %.5f \n' % np.linalg.norm(dy)) + logger.info('Total step mw-dx = %.5f Bohr*sqrt(amu)\n' % mwdx) + if self.Iteration == 0: + self.trust = self.params.trust self.Iteration += 1 return dy @@ -684,7 +692,7 @@ def evaluateStep(self): else: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[91m" colors['quality'] = "\x1b[91m" - step_state = StepState.Reject if (Quality < -1.0 or params.transition) and (not params.irc or self.IRC_opt) else StepState.Poor + step_state = StepState.Reject if (Quality < -1.0 or params.transition) and not params.irc else StepState.Poor if 'energy' not in colors: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[0m" if 'quality' not in colors: colors['quality'] = "\x1b[0m" colors['grms'] = "\x1b[92m" if Converged_grms else "\x1b[0m" @@ -698,13 +706,7 @@ def evaluateStep(self): # Print status msg = "\n Step %4i :" % self.Iteration msg += " Displace = %s%.3e\x1b[0m/%s%.3e\x1b[0m (rms/max)" % (colors['drms'], rms_displacement, colors['dmax'], max_displacement) - if params.irc: - if self.IRC_opt: - msg += " Trust = %.3e (%s)" % (self.trust, self.trustprint) - else: - msg += " Stepsize = %.3e Bohr*sqrt(amu)" % (self.IRC_stepsize) - else: - msg += " Trust = %.3e (%s)" % (self.trust, self.trustprint) + msg += " Trust = %.3e (%s)" % (self.trust, self.trustprint) msg += " Grad%s = %s%.3e\x1b[0m/%s%.3e\x1b[0m (rms/max)" % ("_T" if self.IC.haveConstraints() else "", colors['grms'], rms_gradient, colors['gmax'], max_gradient) logger.info(msg + " E (change) = % .10f (%s%+.3e\x1b[0m) Quality = %s%.3f\x1b[0m" % (self.E, colors['energy'], self.E-self.Eprev, colors['quality'], Quality) + "\n") @@ -714,8 +716,8 @@ def evaluateStep(self): logger.info(self.prim_msg + '\n') ### Check convergence criteria ### - criterima_met = Converged_energy and Converged_grms and Converged_drms and Converged_gmax and Converged_dmax - near_convergence = Converged_energy and Converged_drms and Converged_dmax + criteria_met = Converged_energy and Converged_grms and Converged_drms and Converged_gmax and Converged_dmax + IRC_converged = Converged_energy and Converged_grms and Converged_gmax def reset_irc(): self.IRC_direction = -1 @@ -723,39 +725,41 @@ def reset_irc(): self.Iteration = 0 self.gradx = self.Gx_hist[0].copy() self.X = self.X_hist[0].copy() - self.IRC_stepsize = self.params.trust*ang2bohr - self.IRC_opt = False self.trust = self.params.trust self.calcEnergyForce() + self.IRC_opt = False self.prepareFirstStep() if params.irc: - if criterima_met and self.Iteration > 10: - if self.IRC_direction == 1: - logger.info("\nIRC forward direction converged") - logger.info("\nIRC backward direction starts here\n\n") - reset_irc() - return - elif self.IRC_direction == -1: - self.SortedEigenvalues(self.H) - logger.info("Converged! =D\n") - self.state = OPT_STATE.CONVERGED - return - elif (Quality < 0.0 or near_convergence) and not self.IRC_opt: - if self.Iteration > 10: - logger.info("Switching to optimization\n") + if self.Iteration > 10: + if criteria_met : + if self.IRC_direction == 1: + logger.info("\nIRC forward direction converged") + logger.info("\nIRC backward direction starts here\n\n") + reset_irc() + return + elif self.IRC_direction == -1: + self.SortedEigenvalues(self.H) + logger.info("Converged! =D\n") + self.state = OPT_STATE.CONVERGED + return + elif (IRC_converged or self.cnorm < 1e-5) and not self.IRC_opt: self.IRC_opt = True - elif self.Iteration > params.maxiter: - logger.info("\nIRC forward direction reached maximum iteration number\n") - logger.info("IRC backward direction starts here\n\n") - reset_irc() - return - elif self.IRC_opt: - pass - else: - return + if self.cnorm > 1e-5: + self.trust = self.cnorm + logger.info("Switching to optimization\n") + + elif self.Iteration > params.maxiter: + logger.info("\nIRC forward direction reached maximum iteration number\n") + if self.IRC_direction == -1: + logger.info("Terminating IRC\n") + self.state = OPT_STATE.FAILED + else: + logger.info("IRC backward direction starts here\n\n") + reset_irc() + return - if criterima_met and self.conSatisfied: + if criteria_met and self.conSatisfied: self.SortedEigenvalues(self.H) logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED diff --git a/geometric/params.py b/geometric/params.py index da8091e7..2176fd2c 100644 --- a/geometric/params.py +++ b/geometric/params.py @@ -66,7 +66,7 @@ def __init__(self, **kwargs): # Because TS optimization is experimental, use conservative trust radii self.trust = kwargs.get('trust', 0.01 if self.transition else 0.1) # Maximum value of trust radius - self.tmax = kwargs.get('tmax', 0.03 if self.transition else 0.3) + self.tmax = kwargs.get('tmax', 0.03 if self.transition else self.trust if self.irc else 0.3) # Minimum value of the trust radius # Also sets the maximum step size that can be rejected # LPW: Add to documentation later: From 663e4465f043a217f0d085913fe54076d356ae1e Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Fri, 30 Jun 2023 14:10:49 -0700 Subject: [PATCH 15/35] Initial IRC step follows Cartesian vectors from the imaginary mode --- geometric/optimize.py | 76 +++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index a8a8e8b8..01856c34 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -465,11 +465,10 @@ def step(self): def IRC_step(self): self.farConstraints = self.IC.haveConstraints() and self.IC.maxConstraintViolation(self.X) > 1e-1 - logger.info("IRC sub-step 1: Finding a pivot point (q*_{k+1})\n") + logger.info("IRC sub-step 1: Finding the pivot point (q*_{k+1})\n") # Need to take a step towards the pivot point self.IC.clearCache() MWGMat = self.IC.GMatrix(self.X, invMW=True) - MWGMat_sqrt_inv, MWGMat_sqrt = self.IC.GInverse_SVD(self.X, sqrt=True, invMW=True) # Save the initial Cartesian coordinate X0 = self.X.copy() @@ -482,26 +481,25 @@ def IRC_step(self): elif self.TSWavenum[0] > 0: raise IRCError("No imaginary mode detected. Please optimize the structure and try again.\n") - # Getting mass-weighted displacement following the imaginary frequency + self.IRC_adjfactor = np.linalg.norm(self.TSNormal_modes_x[0] * np.sqrt(self.IC.mass)) + logger.info("Initial step-size: %.5f \n" %(self.trust * ang2bohr * self.IRC_adjfactor)) + + # Following the imaginary mode vector if self.IRC_init_v is None: - H_M = np.dot(np.dot(MWGMat_sqrt, self.H), MWGMat_sqrt.T) - _, MW_IC_vecs = np.linalg.eigh(H_M) - invMW_v = np.dot(MWGMat_sqrt, MW_IC_vecs[0]) - v = np.dot(MWGMat_sqrt_inv, invMW_v) - invMW_v = np.dot(MWGMat, v) - self.IRC_init_v = v - self.IRC_adjfactor = np.linalg.norm(self.TSNormal_modes_x[0] * np.sqrt(self.IC.mass)) - self.IRC_init_step = self.params.trust * ang2bohr * self.IRC_adjfactor + #MWGMat_sqrt_inv, MWGMat_sqrt = self.IC.GInverse_SVD(self.X, sqrt=True, invMW=True) + #H_M = np.dot(np.dot(MWGMat_sqrt, self.H), MWGMat_sqrt.T) + #_, MW_IC_vecs = np.linalg.eigh(H_M) + #v = MW_IC_vecs[0] + Im_mode = self.TSNormal_modes_x[0] + v = self.IC.calcDiff(X0 + Im_mode, X0) + self.IRC_init_v = self.IC.calcDiff(X0 - Im_mode, X0) else: - v = -self.IRC_init_v - invMW_v = np.dot(MWGMat, v) - logger.info("Initial step-size: %.5f Bohr*sqrt(amu)\n" %(self.IRC_init_step)) + v = self.IRC_init_v else: - # Else, use the mass-weighted G matrix and internal coordinate gradients to get the vector. v = self.G.copy() # Internal coordinate gradients - invMW_v = np.dot(MWGMat, v) + invMW_v = np.dot(MWGMat, v)# Inverse mass-weighted vector # Normalization factor N = 1 / np.sqrt(np.dot(v.T, np.dot(MWGMat, v))) self.IRC_stepsize = self.trust * ang2bohr * self.IRC_adjfactor @@ -534,40 +532,39 @@ def IRC_step(self): p_M = np.dot(MWGMat_sqrt_inv, p_prime) Heig, Hvecs = np.linalg.eigh(H_M) - init_guess = 1.01*Heig[0] if Heig[0] < 0 else 0.99*Heig[0] with warnings.catch_warnings(): warnings.simplefilter("ignore") - min_lambda = scipy.optimize.fsolve(self.find_lambda, init_guess, (Heig, Hvecs, g_M, p_M), xtol=1e-12, maxfev=500) + min_lambda = scipy.optimize.fsolve(self.find_lambda, init_guess, (Heig, Hvecs, g_M, p_M), xtol=1e-14, maxfev=500) LambdaI = min_lambda[0]*np.eye(len(self.IC.Internals)) del_q_M1 = np.linalg.pinv(H_M - LambdaI) del_q_M2 = g_M - min_lambda[0]*p_M del_q_M = -np.dot(del_q_M1, del_q_M2) dq_new = np.dot(MWGMat_sqrt, del_q_M) - if np.linalg.norm(dq_new) < 1e-5 or irc_sub_iteration > 500: + if np.linalg.norm(dq_new) < 1e-6 or irc_sub_iteration > 100: dy = dy_to_pivot + p_prime v2 = p_prime/np.linalg.norm(p_prime) deg = np.degrees(np.arccos(np.dot(v1/np.linalg.norm(v1),v2))) mwdx = np.linalg.norm(np.dot(MWGMat_sqrt_inv, dy)) half_mwdx = np.linalg.norm(np.dot(MWGMat_sqrt_inv, p_prime)) - if mwdx < 0.8*self.IRC_init_step and self.Iteration == 0: - logger.info("\nAdjusting step-size for the first step..\n") - self.trust *= self.IRC_init_step / mwdx - self.IRC_init_v *= -1 - dy = self.IRC_step() - return dy + self.IRC_dystep = np.linalg.norm(p_prime) + const = self.find_lambda(min_lambda, Heig, Hvecs, g_M, p_M) + if const > 1e-5 or min_lambda > Heig[0]: + logger.info("Something is wrong in the IRC second sub-step\n") + logger.info('Check constraint: %.9f \n' %const) + logger.info('dq_new: %.9f \n' %np.linalg.norm(dq_new)) + logger.info('IRC sub iteration %i\n' %irc_sub_iteration) break irc_sub_iteration += 1 p_prime += dq_new logger.info('Angle between v1 and v2: %2.f \n' % deg) - logger.info('Half step mw-dx = %.5f Bohr*sqrt(amu)\n' % half_mwdx) - logger.info('Total step dy = %.5f \n' % np.linalg.norm(dy)) - logger.info('Total step mw-dx = %.5f Bohr*sqrt(amu)\n' % mwdx) - if self.Iteration == 0: - self.trust = self.params.trust + logger.info('Half step dy = %.5f \n' % np.linalg.norm(p_prime)) + logger.info('Half step mw-dx = %.5f Bohr*sqrt(amu)\n\n' % half_mwdx) + logger.info('=> Total step dy = %.5f \n' % np.linalg.norm(dy)) + logger.info('=> Total step mw-dx = %.5f Bohr*sqrt(amu)\n' % mwdx) self.Iteration += 1 return dy @@ -729,6 +726,8 @@ def reset_irc(): self.calcEnergyForce() self.IRC_opt = False self.prepareFirstStep() + self.trustprint = "=" + self.params.tmax = self.trust if params.irc: if self.Iteration > 10: @@ -743,10 +742,11 @@ def reset_irc(): logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED return - elif (IRC_converged or self.cnorm < 1e-5) and not self.IRC_opt: + elif (IRC_converged or self.IRC_dystep < 1e-4) and not self.IRC_opt: self.IRC_opt = True - if self.cnorm > 1e-5: + if self.cnorm > 1e-4: self.trust = self.cnorm + self.params.tmax = self.params.trust*3 logger.info("Switching to optimization\n") elif self.Iteration > params.maxiter: @@ -1077,12 +1077,6 @@ def run_optimizer(**kwargs): 'tric':(DelocalizedInternalCoordinates, False, False)} coordsys = kwargs.get('coordsys', 'tric') - # TRIC IRC will fail when there is only one molecule due to the small Hessian eigenvalues. - if params.irc and len(M.molecules) == 1 and coordsys == 'tric': - coordsys = 'dlc' - - CoordClass, connect, addcart = CoordSysDict[coordsys.lower()] - # Perform an initial single-point QM calculation to determine bonding & fragments, if using TRIC if hasattr(engine, 'calc_bondorder') and coordsys.lower() in ['hdlc', 'tric'] and params.bothre > 1e-3: bothre = params.bothre @@ -1105,6 +1099,12 @@ def run_optimizer(**kwargs): logger.info("Requested bond order-based connectivity but it is not available in the current engine\n") logger.info("Bonds will be generated from interatomic distances less than %.2f times sum of covalent radii\n" % M.top_settings['Fac']) + # TRIC IRC will fail when there is only one molecule due to the small Hessian eigenvalues. + if params.irc and len(M.molecules) == 1 and coordsys == 'tric': + coordsys = 'dlc' + + CoordClass, connect, addcart = CoordSysDict[coordsys.lower()] + IC = CoordClass(M, build=True, connect=connect, addcart=addcart, constraints=Cons, cvals=CVals[0] if CVals is not None else None, conmethod=params.conmethod) From fe0559ae9844f30c68bf21844e8e60f04476d945 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Mon, 3 Jul 2023 13:08:15 -0700 Subject: [PATCH 16/35] IRC step-size varies more conservatively. Its step quality criteria is same as the TS optimization. --- .../hcn_hnc_irc/gaussian/command.sh | 2 + .../hcn_hnc_irc/gaussian/start.gjf | 10 + .../gaussian/start_irc.vdata_first | 69 ++ .../hcn_hnc_irc/gaussian/start_irc.xyz | 400 +++++++++ .../hcn_hnc_irc/psi4/command.sh | 3 +- .../hcn_hnc_irc/psi4/hcn_irc.vdata_first | 32 +- .../hcn_hnc_irc/psi4/hcn_irc.xyz | 843 ++++++++--------- .../hcn_hnc_irc/qchem/command.sh | 3 +- .../hcn_hnc_irc/qchem/hcn_irc.vdata_first | 30 +- .../hcn_hnc_irc/qchem/hcn_irc.xyz | 848 ++++++++---------- .../hcn_hnc_irc/terachem/command.sh | 4 +- .../terachem/{tera.in => hcn.terain} | 0 ...ra_irc.vdata_first => hcn_irc.vdata_first} | 32 +- .../hcn_hnc_irc/terachem/hcn_irc.xyz | 400 +++++++++ .../hcn_hnc_irc/terachem/tera_irc.xyz | 450 ---------- geometric/data/hcn_irc.psi4in | 9 + geometric/optimize.py | 53 +- geometric/tests/test_irc.py | 37 + 18 files changed, 1815 insertions(+), 1410 deletions(-) create mode 100644 examples/1-simple-examples/hcn_hnc_irc/gaussian/command.sh create mode 100644 examples/1-simple-examples/hcn_hnc_irc/gaussian/start.gjf create mode 100644 examples/1-simple-examples/hcn_hnc_irc/gaussian/start_irc.vdata_first create mode 100644 examples/1-simple-examples/hcn_hnc_irc/gaussian/start_irc.xyz rename examples/1-simple-examples/hcn_hnc_irc/terachem/{tera.in => hcn.terain} (100%) rename examples/1-simple-examples/hcn_hnc_irc/terachem/{tera_irc.vdata_first => hcn_irc.vdata_first} (84%) create mode 100644 examples/1-simple-examples/hcn_hnc_irc/terachem/hcn_irc.xyz delete mode 100644 examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz create mode 100644 geometric/data/hcn_irc.psi4in create mode 100644 geometric/tests/test_irc.py diff --git a/examples/1-simple-examples/hcn_hnc_irc/gaussian/command.sh b/examples/1-simple-examples/hcn_hnc_irc/gaussian/command.sh new file mode 100644 index 00000000..a0dd454d --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/gaussian/command.sh @@ -0,0 +1,2 @@ +geometric-optimize start.gjf --irc yes --nt 6 --trust 0.05 --engine gaussian --converge set GAU_LOOSE + diff --git a/examples/1-simple-examples/hcn_hnc_irc/gaussian/start.gjf b/examples/1-simple-examples/hcn_hnc_irc/gaussian/start.gjf new file mode 100644 index 00000000..9b75bd24 --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/gaussian/start.gjf @@ -0,0 +1,10 @@ +%Mem=4GB +# hf/3-21g Force=NoStep SCF=(XQC, VeryTightLinEq) + +Downloaded from PubChem + +0 1 +C -0.1088783634 -0.6365101639 0.0043221742 +N -0.6393457902 0.4205365638 0.0052498438 +H 0.7532976101 0.2173493463 -0.0090384631 + diff --git a/examples/1-simple-examples/hcn_hnc_irc/gaussian/start_irc.vdata_first b/examples/1-simple-examples/hcn_hnc_irc/gaussian/start_irc.vdata_first new file mode 100644 index 00000000..6ed1d28b --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/gaussian/start_irc.vdata_first @@ -0,0 +1,69 @@ + #==========================================# + #| File containing vibrational modes |# + #| generated by geomeTRIC and |# + #| readable by ForceBalance |# + #| |# + #| Octothorpes are comments |# + #| This file should be formatted like so: |# + #| (Full XYZ file for the molecule) |# + #| Number of atoms |# + #| Comment line |# + #| a1 x1 y1 z1 (xyz for atom 1) |# + #| a2 x2 y2 z2 (xyz for atom 2) |# + #| |# + #| These coords will be actually used |# + #| |# + #| (Followed by vibrational modes) |# + #| Do not use mass-weighted coordinates |# + #| ... |# + #| v (Eigenvalue in wavenumbers) |# + #| dx1 dy1 dz1 (Eigenvector for atom 1) |# + #| dx2 dy2 dz2 (Eigenvector for atom 2) |# + #| ... |# + #| (Empty line is optional) |# + #| v (Eigenvalue) |# + #| dx1 dy1 dz1 (Eigenvector for atom 1) |# + #| dx2 dy2 dz2 (Eigenvector for atom 2) |# + #| ... |# + #| and so on |# + #| |# + #| Please list freqs in increasing order |# + #==========================================# + +# +# == Summary of harmonic free energy analysis == +# Note: Rotational symmetry is set to 1 regardless of true symmetry +# 1 Imaginary Frequencies (cm^-1): 1215.859i +# Note: Free energy does not include contribution from imaginary mode(s) +# +# Free energy contributions calculated at @ 300.00 K: +# Zero-point vibrational energy: 6.5453 kcal/mol +# H (Trans + Rot + Vib = Tot): 1.4904 + 0.8942 + 0.0003 = 2.3849 kcal/mol +# S (Trans + Rot + Vib = Tot): 35.8748 + 16.3847 + 0.0010 = 52.2605 cal/mol/K +# TS (Trans + Rot + Vib = Tot): 10.7624 + 4.9154 + 0.0003 = 15.6782 kcal/mol +# +# Ground State Electronic Energy : E0 = -92.24604266 au ( -57885.2657 kcal/mol) +# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075349 au ( -6.7479 kcal/mol) +# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25679615 au ( -57892.0136 kcal/mol) +# + +3 +Iteration 0 Energy -92.24604266 + C -0.1088783634 -0.6365101639 0.0043221742 + N -0.6393457902 0.4205365638 0.0052498438 + H 0.7532976101 0.2173493463 -0.0090384631 + +-1215.858933 +-0.043293 -0.081607 0.000849 + 0.075287 0.009576 -0.000867 +-0.530324 0.839319 0.001930 + + 2126.655388 +-0.335109 0.647241 0.000681 + 0.302446 -0.563902 -0.000708 +-0.209774 0.123745 0.001723 + + 2451.859833 +-0.057515 -0.023525 0.000737 +-0.012776 -0.015886 0.000213 + 0.862859 0.501058 -0.011742 diff --git a/examples/1-simple-examples/hcn_hnc_irc/gaussian/start_irc.xyz b/examples/1-simple-examples/hcn_hnc_irc/gaussian/start_irc.xyz new file mode 100644 index 00000000..faeffcbf --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/gaussian/start_irc.xyz @@ -0,0 +1,400 @@ +3 +Iteration 36 Energy -92.35408361 +C 0.0304547377 -0.0047966901 -0.0001123794 +N -1.0881202836 0.1995749938 0.0111742858 +H 1.0627390025 -0.1934025575 -0.0105283515 +3 +Iteration 35 Energy -92.35408361 +C 0.0304547298 -0.0047967486 -0.0001123790 +N -1.0881202757 0.1995750211 0.0111742856 +H 1.0627390025 -0.1934025263 -0.0105283516 +3 +Iteration 34 Energy -92.35407142 +C 0.0303414946 -0.0089879905 -0.0000918253 +N -1.0872142844 0.2014291798 0.0111558359 +H 1.0619462464 -0.1910654430 -0.0105304558 +3 +Iteration 33 Energy -92.35383808 +C 0.0249853218 -0.0286608122 0.0000573944 +N -1.0863272978 0.2111644642 0.0111012729 +H 1.0664154324 -0.1811279058 -0.0106251124 +3 +Iteration 32 Energy -92.35324622 +C 0.0233233557 -0.0494153425 0.0001712132 +N -1.0812676992 0.2204011508 0.0110033917 +H 1.0630178000 -0.1696100621 -0.0106410500 +3 +Iteration 31 Energy -92.35231299 +C 0.0197881975 -0.0699686838 0.0003045831 +N -1.0772161825 0.2298285448 0.0109156522 +H 1.0625014415 -0.1584841149 -0.0106866804 +3 +Iteration 30 Energy -92.35102584 +C 0.0162111079 -0.0907868950 0.0004396320 +N -1.0723310553 0.2392354930 0.0108188937 +H 1.0611934039 -0.1470728518 -0.0107249708 +3 +Iteration 29 Energy -92.34939532 +C 0.0126359485 -0.1117097538 0.0005751421 +N -1.0666123892 0.2485427379 0.0107134823 +H 1.0590498972 -0.1354572378 -0.0107550695 +3 +Iteration 28 Energy -92.34743462 +C 0.0090822041 -0.1326485969 0.0007104918 +N -1.0600729684 0.2577093559 0.0105997462 +H 1.0560642208 -0.1236850128 -0.0107766831 +3 +Iteration 27 Energy -92.34515698 +C 0.0055583461 -0.1535472576 0.0008453295 +N -1.0527307921 0.2667115481 0.0104779920 +H 1.0522459025 -0.1117885443 -0.0107897666 +3 +Iteration 26 Energy -92.34257464 +C 0.0020673806 -0.1743667002 0.0009794426 +N -1.0446079633 0.2755346393 0.0103485290 +H 1.0476140392 -0.0997921929 -0.0107944166 +3 +Iteration 25 Energy -92.33969871 +C -0.0013905966 -0.1950779033 0.0011126962 +N -1.0357288402 0.2841691494 0.0102116670 +H 1.0421928933 -0.0877154999 -0.0107908083 +3 +Iteration 24 Energy -92.33653954 +C -0.0048172951 -0.2156583084 0.0012450051 +N -1.0261190389 0.2926088215 0.0100677150 +H 1.0360097905 -0.0755747669 -0.0107791651 +3 +Iteration 23 Energy -92.33310721 +C -0.0082158998 -0.2360898335 0.0013763207 +N -1.0158046906 0.3008494670 0.0099169780 +H 1.0290940469 -0.0633838873 -0.0107597437 +3 +Iteration 22 Energy -92.32941230 +C -0.0115911453 -0.2563576369 0.0015066264 +N -1.0048118536 0.3088881854 0.0097597541 +H 1.0214764555 -0.0511548024 -0.0107328256 +3 +Iteration 21 Energy -92.32546649 +C -0.0149495766 -0.2764492651 0.0016359363 +N -0.9931660230 0.3167227586 0.0095963324 +H 1.0131890562 -0.0388977473 -0.0106987139 +3 +Iteration 20 Energy -92.32128329 +C -0.0182998416 -0.2963540104 0.0017642957 +N -0.9808917114 0.3243511327 0.0094269903 +H 1.0042650096 -0.0266213761 -0.0106577312 +3 +Iteration 19 Energy -92.31687868 +C -0.0216529066 -0.3160623924 0.0018917808 +N -0.9680120871 0.3317709538 0.0092519920 +H 0.9947384502 -0.0143328153 -0.0106102178 +3 +Iteration 18 Energy -92.31227192 +C -0.0250221153 -0.3355657173 0.0020184973 +N -0.9545486707 0.3389791523 0.0090715867 +H 0.9846442425 -0.0020376888 -0.0105565291 +3 +Iteration 17 Energy -92.30748631 +C -0.0284230452 -0.3548556942 0.0021445773 +N -0.9405211045 0.3459715881 0.0088860084 +H 0.9740176062 0.0102598523 -0.0104970308 +3 +Iteration 16 Energy -92.30254998 +C -0.0318731648 -0.3739240985 0.0022701740 +N -0.9259470226 0.3527427763 0.0086954751 +H 0.9628936439 0.0225570684 -0.0104320942 +3 +Iteration 15 Energy -92.29749673 +C -0.0353913454 -0.3927624948 0.0023954547 +N -0.9108420586 0.3592857111 0.0085001900 +H 0.9513068605 0.0348525299 -0.0103620898 +3 +Iteration 14 Energy -92.29236675 +C -0.0389973302 -0.4113620370 0.0025205945 +N -0.8952200291 0.3655917974 0.0083003437 +H 0.9392908158 0.0471459857 -0.0102873833 +3 +Iteration 13 Energy -92.28720717 +C -0.0427112886 -0.4297133788 0.0026457708 +N -0.8790933132 0.3716508855 0.0080961184 +H 0.9268780583 0.0594382394 -0.0102083344 +3 +Iteration 12 Energy -92.28207226 +C -0.0465535666 -0.4478067177 0.0027711610 +N -0.8624734265 0.3774513845 0.0078876934 +H 0.9141004497 0.0717310794 -0.0101252995 +3 +Iteration 11 Energy -92.27702326 +C -0.0505447059 -0.4656319856 0.0028969430 +N -0.8453717533 0.3829804170 0.0076752525 +H 0.9009899156 0.0840273149 -0.0100386406 +3 +Iteration 10 Energy -92.27212752 +C -0.0547057393 -0.4831791786 0.0030233009 +N -0.8278003773 0.3882239712 0.0074589923 +H 0.8875795731 0.0963309536 -0.0099487383 +3 +Iteration 9 Energy -92.26745701 +C -0.0590587240 -0.5004387997 0.0031504319 +N -0.8097729474 0.3931670078 0.0072391314 +H 0.8739051279 0.1086475381 -0.0098560084 +3 +Iteration 8 Energy -92.26308611 +C -0.0636274433 -0.5174023829 0.0032785570 +N -0.7913055245 0.3977934903 0.0070159193 +H 0.8600064243 0.1209846388 -0.0097609214 +3 +Iteration 7 Energy -92.25908871 +C -0.0684382043 -0.5340630685 0.0034079323 +N -0.7724173902 0.4020863224 0.0067896455 +H 0.8459290509 0.1333524923 -0.0096640229 +3 +Iteration 6 Energy -92.25553477 +C -0.0735206205 -0.5504161952 0.0035388599 +N -0.7531317991 0.4060271978 0.0065606487 +H 0.8317258761 0.1457647437 -0.0095659537 +3 +Iteration 5 Energy -92.25248669 +C -0.0789078636 -0.5664597297 0.0036716932 +N -0.7334764695 0.4095964440 0.0063293224 +H 0.8174577895 0.1582390319 -0.0094674608 +3 +Iteration 4 Energy -92.24999567 +C -0.0846311576 -0.5821924619 0.0038067679 +N -0.7134811847 0.4127737425 0.0060960861 +H 0.8031857987 0.1707944656 -0.0093692991 +3 +Iteration 3 Energy -92.24809801 +C -0.0904462211 -0.5974963542 0.0039408695 +N -0.6930391448 0.4155829873 0.0058596619 +H 0.7885588224 0.1832891131 -0.0092669765 +3 +Iteration 2 Energy -92.24681884 +C -0.0988590874 -0.6134399899 0.0041063193 +N -0.6737911812 0.4175896099 0.0056399907 +H 0.7777237250 0.1972261262 -0.0092127550 +3 +Iteration 1 Energy -92.24617538 +C -0.1012350298 -0.6247084322 0.0041842257 +N -0.6526922206 0.4198642748 0.0053988486 +H 0.7590007068 0.2062199036 -0.0090495193 +3 +Iteration 0 Energy -92.24604266 +C -0.1088783634 -0.6365101639 0.0043221742 +N -0.6393457902 0.4205365638 0.0052498438 +H 0.7532976101 0.2173493463 -0.0090384631 +3 +Iteration 1 Energy -92.24632344 +C -0.1162922000 -0.6510126806 0.0044700607 +N -0.6186302518 0.4219453514 0.0050168839 +H 0.7399959083 0.2304430753 -0.0089533897 +3 +Iteration 2 Energy -92.24714690 +C -0.1243467197 -0.6645535181 0.0046205194 +N -0.5970864716 0.4222150633 0.0047801190 +H 0.7265066478 0.2437142010 -0.0088670834 +3 +Iteration 3 Energy -92.24845903 +C -0.1331061973 -0.6784673048 0.0047804035 +N -0.5759813617 0.4222997644 0.0045490023 +H 0.7141610155 0.2575432866 -0.0087958510 +3 +Iteration 4 Energy -92.25019378 +C -0.1426737516 -0.6921206132 0.0049479213 +N -0.5550103372 0.4216439164 0.0043227645 +H 0.7027575453 0.2718524430 -0.0087371310 +3 +Iteration 5 Energy -92.25228251 +C -0.1531768269 -0.7056462946 0.0051250783 +N -0.5344245820 0.4202308762 0.0041042281 +H 0.6926748654 0.2867911646 -0.0086957516 +3 +Iteration 6 Energy -92.25466118 +C -0.1647167245 -0.7190875166 0.0053131809 +N -0.5144369790 0.4179858762 0.0038960651 +H 0.6842271600 0.3024773866 -0.0086756911 +3 +Iteration 7 Energy -92.25727888 +C -0.1773526866 -0.7324637688 0.0055129664 +N -0.4952675375 0.4148394090 0.0037010009 +H 0.6776936806 0.3190001061 -0.0086804125 +3 +Iteration 8 Energy -92.26010283 +C -0.1910681263 -0.7457625607 0.0057241961 +N -0.4770958109 0.4107502259 0.0035211886 +H 0.6732373937 0.3363880810 -0.0087118299 +3 +Iteration 9 Energy -92.26311595 +C -0.2057526743 -0.7589364432 0.0059454447 +N -0.4599947995 0.4057246628 0.0033573971 +H 0.6708209303 0.3545875267 -0.0087692869 +3 +Iteration 10 Energy -92.26630768 +C -0.2212192289 -0.7719120454 0.0061743285 +N -0.4438900044 0.3998203081 0.0032085465 +H 0.6701826898 0.3734674835 -0.0088493201 +3 +Iteration 11 Energy -92.26966448 +C -0.2372511294 -0.7846062584 0.0064080961 +N -0.4285839298 0.3931283300 0.0030720575 +H 0.6709085157 0.3928536746 -0.0089465987 +3 +Iteration 12 Energy -92.27316548 +C -0.2536498496 -0.7969401782 0.0066442133 +N -0.4138317359 0.3857458793 0.0029448058 +H 0.6725550420 0.4125700451 -0.0090554643 +3 +Iteration 13 Energy -92.27678288 +C -0.2702590265 -0.8088461219 0.0068806589 +N -0.3994120401 0.3777558165 0.0028239894 +H 0.6747445231 0.4324660516 -0.0091710934 +3 +Iteration 14 Energy -92.28048414 +C -0.2869647255 -0.8202688162 0.0071159327 +N -0.3851583915 0.3692203642 0.0027075017 +H 0.6771965734 0.4524241982 -0.0092898794 +3 +Iteration 15 Energy -92.28423428 +C -0.3036848916 -0.8311637311 0.0073489322 +N -0.3709581197 0.3601841458 0.0025939053 +H 0.6797164678 0.4723553315 -0.0094092826 +3 +Iteration 16 Energy -92.28799775 +C -0.3203582184 -0.8414948261 0.0075788212 +N -0.3567386783 0.3506801030 0.0024822555 +H 0.6821703532 0.4921904693 -0.0095275218 +3 +Iteration 17 Energy -92.29174026 +C -0.3369361011 -0.8512327566 0.0078049332 +N -0.3424538971 0.3407348292 0.0023719247 +H 0.6844634547 0.5118736736 -0.0096433030 +3 +Iteration 18 Energy -92.29543013 +C -0.3533777195 -0.8603537720 0.0080267123 +N -0.3280738291 0.3303724493 0.0022624746 +H 0.6865250051 0.5313570688 -0.0097556321 +3 +Iteration 19 Energy -92.29903949 +C -0.3696473553 -0.8688391789 0.0082436821 +N -0.3135780369 0.3196171855 0.0021535700 +H 0.6882988486 0.5505977395 -0.0098636972 +3 +Iteration 20 Energy -92.30254488 +C -0.3857131375 -0.8766751560 0.0084554302 +N -0.2989513747 0.3084948876 0.0020449262 +H 0.6897379688 0.5695560147 -0.0099668015 +3 +Iteration 21 Energy -92.30592753 +C -0.4015466440 -0.8838526948 0.0086616046 +N -0.2841814746 0.2970337217 0.0019362783 +H 0.6908015750 0.5881947193 -0.0100643279 +3 +Iteration 22 Energy -92.30917316 +C -0.4171229364 -0.8903674562 0.0088619125 +N -0.2692573859 0.2852641589 0.0018273659 +H 0.6914537788 0.6064790435 -0.0101557236 +3 +Iteration 23 Energy -92.31227157 +C -0.4324207020 -0.8962193709 0.0090561207 +N -0.2541689813 0.2732184109 0.0017179301 +H 0.6916631398 0.6243767062 -0.0102404959 +3 +Iteration 24 Energy -92.31521600 +C -0.4474222559 -0.9014118861 0.0092440518 +N -0.2389068343 0.2609295024 0.0016077155 +H 0.6914025467 0.6418581299 -0.0103182124 +3 +Iteration 25 Energy -92.31800234 +C -0.4621132658 -0.9059508667 0.0094255760 +N -0.2234623565 0.2484301911 0.0014964773 +H 0.6906490788 0.6588964218 -0.0103884984 +3 +Iteration 26 Energy -92.32062846 +C -0.4764821763 -0.9098432680 0.0096005990 +N -0.2078280463 0.2357519388 0.0013839885 +H 0.6893836791 0.6754670755 -0.0104510326 +3 +Iteration 27 Energy -92.32309349 +C -0.4905194118 -0.9130957724 0.0097690471 +N -0.1919977675 0.2229240875 0.0012700467 +H 0.6875906358 0.6915474311 -0.0105055389 +3 +Iteration 28 Energy -92.32539717 +C -0.5042164893 -0.9157135931 0.0099308515 +N -0.1759670080 0.2099733343 0.0011544797 +H 0.6852569538 0.7071160050 -0.0105517762 +3 +Iteration 29 Energy -92.32753935 +C -0.5175651843 -0.9176996078 0.0100859355 +N -0.1597331083 0.1969235225 0.0010371483 +H 0.6823717490 0.7221518315 -0.0105895290 +3 +Iteration 30 Energy -92.32951954 +C -0.5305568452 -0.9190539048 0.0102342050 +N -0.1432954605 0.1837957298 0.0009179490 +H 0.6789257622 0.7366339211 -0.0106185991 +3 +Iteration 31 Energy -92.33133651 +C -0.5431819019 -0.9197737415 0.0103755427 +N -0.1266557142 0.1706085910 0.0007968138 +H 0.6749110725 0.7505408967 -0.0106388015 +3 +Iteration 32 Energy -92.33298807 +C -0.5554295367 -0.9198538525 0.0105098060 +N -0.1098180316 0.1573788196 0.0006737111 +H 0.6703210249 0.7638507792 -0.0106499622 +3 +Iteration 33 Energy -92.33447092 +C -0.5672874303 -0.9192870290 0.0106368272 +N -0.0927895159 0.1441219276 0.0005486472 +H 0.6651504028 0.7765408476 -0.0106519195 +3 +Iteration 34 Energy -92.33578064 +C -0.5787413896 -0.9180649132 0.0107564124 +N -0.0755810375 0.1308532907 0.0004216701 +H 0.6593958837 0.7885873687 -0.0106445275 +3 +Iteration 35 Energy -92.33691177 +C -0.5897744935 -0.9161790799 0.0108683379 +N -0.0582090697 0.1175899904 0.0002928810 +H 0.6530570197 0.7999648357 -0.0106276640 +3 +Iteration 36 Energy -92.33785815 +C -0.6003648575 -0.9136227600 0.0109723333 +N -0.0407001049 0.1043547094 0.0001624651 +H 0.6461384189 0.8106437968 -0.0106012435 +3 +Iteration 37 Energy -92.33861327 +C -0.6104795434 -0.9103945099 0.0110680317 +N -0.0231024299 0.0911853819 0.0000307755 +H 0.6386554298 0.8205848742 -0.0105652523 +3 +Iteration 38 Energy -92.33917112 +C -0.6200563721 -0.9065083206 0.0111548180 +N -0.0055211230 0.0781632378 -0.0001014135 +H 0.6306509516 0.8297208290 -0.0105198495 +3 +Iteration 39 Energy -92.33953198 +C -0.6284490196 -0.9011481239 0.0112218653 +N 0.0124545513 0.0659413291 -0.0002416019 +H 0.6210679248 0.8365825411 -0.0104467086 +3 +Iteration 40 Energy -92.33962653 +C -0.6374545848 -0.8975152771 0.0113035739 +N 0.0267905704 0.0509093588 -0.0003290500 +H 0.6157374709 0.8479816645 -0.0104409690 +3 +Iteration 41 Energy -92.33970706 +C -0.6398663393 -0.8937887530 0.0113127657 +N 0.0365721959 0.0490783001 -0.0004275465 +H 0.6083675999 0.8460861991 -0.0103516643 +3 +Iteration 42 Energy -92.33971311 +C -0.6400260656 -0.8940156736 0.0113155577 +N 0.0361265632 0.0484572764 -0.0004198127 +H 0.6089729589 0.8469341435 -0.0103621901 +3 +Iteration 43 Energy -92.33971311 +C -0.6400260762 -0.8940156657 0.0113155577 +N 0.0361265868 0.0484572597 -0.0004198129 +H 0.6089729459 0.8469341521 -0.0103621900 diff --git a/examples/1-simple-examples/hcn_hnc_irc/psi4/command.sh b/examples/1-simple-examples/hcn_hnc_irc/psi4/command.sh index 838167a5..41c5fc90 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/psi4/command.sh +++ b/examples/1-simple-examples/hcn_hnc_irc/psi4/command.sh @@ -1 +1,2 @@ -geometric-optimize --irc yes --engine psi4 hcn.psi4in +geometric-optimize hcn.psi4in --irc yes --nt 6 --trust 0.05 --engine psi4 --converge set GAU_LOOSE + diff --git a/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first index 1930f0a2..2f86edec 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first +++ b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.vdata_first @@ -33,18 +33,18 @@ # # == Summary of harmonic free energy analysis == # Note: Rotational symmetry is set to 1 regardless of true symmetry -# 1 Imaginary Frequencies (cm^-1): 1215.761i +# 1 Imaginary Frequencies (cm^-1): 1216.628i # Note: Free energy does not include contribution from imaginary mode(s) # # Free energy contributions calculated at @ 300.00 K: -# Zero-point vibrational energy: 6.5454 kcal/mol +# Zero-point vibrational energy: 6.5462 kcal/mol # H (Trans + Rot + Vib = Tot): 1.4904 + 0.8942 + 0.0003 = 2.3849 kcal/mol # S (Trans + Rot + Vib = Tot): 35.8748 + 16.3847 + 0.0010 = 52.2605 cal/mol/K # TS (Trans + Rot + Vib = Tot): 10.7624 + 4.9154 + 0.0003 = 15.6782 kcal/mol # # Ground State Electronic Energy : E0 = -92.24601961 au ( -57885.2512 kcal/mol) -# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075331 au ( -6.7478 kcal/mol) -# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25677291 au ( -57891.9991 kcal/mol) +# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075215 au ( -6.7471 kcal/mol) +# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25677176 au ( -57891.9983 kcal/mol) # 3 @@ -53,17 +53,17 @@ Iteration 0 Energy -92.24601961 N -0.6393457902 0.4205365638 0.0052498438 H 0.7532976101 0.2173493463 -0.0090384631 --1215.761008 --0.043230 -0.081825 0.000850 - 0.075193 0.009739 -0.000867 --0.529777 0.839653 0.001922 +-1216.627655 +-0.043241 -0.081698 0.000849 + 0.075247 0.009658 -0.000867 +-0.530394 0.839272 0.001931 - 2126.256784 --0.335574 0.646848 0.000687 - 0.302608 -0.563961 -0.000709 --0.206505 0.129252 0.001662 + 2126.843363 +-0.336110 0.647430 0.000691 + 0.302679 -0.564562 -0.000707 +-0.201098 0.130675 0.001596 - 2452.339052 - 0.057321 0.023799 -0.000736 - 0.012966 0.015610 -0.000214 --0.863190 -0.500500 0.011743 + 2452.260196 +-0.057189 -0.024156 0.000737 +-0.013060 -0.015338 0.000213 + 0.862926 0.500960 -0.011742 diff --git a/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz index 091dd247..736a9aa9 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz +++ b/examples/1-simple-examples/hcn_hnc_irc/psi4/hcn_irc.xyz @@ -1,445 +1,400 @@ 3 -Iteration 48 Energy -92.33969025 -C -0.6430494858 -0.8915380650 0.0113376419 -N 0.0360230936 0.0479589797 -0.0004173651 -H 0.6120998487 0.8449548315 -0.0103867218 -3 -Iteration 47 Energy -92.33969025 -C -0.6430491780 -0.8915365739 0.0113371818 -N 0.0360233998 0.0479570820 -0.0004163797 -H 0.6120992348 0.8449552380 -0.0103872473 -3 -Iteration 46 Energy -92.33968667 -C -0.6422853461 -0.8930541302 0.0113358253 -N 0.0333099011 0.0498115016 -0.0003952614 -H 0.6140489015 0.8446183748 -0.0104070090 -3 -Iteration 45 Energy -92.33958681 -C -0.6359210610 -0.8983010963 0.0112904306 -N 0.0193644884 0.0611288055 -0.0002949639 -H 0.6216300292 0.8385480370 -0.0104619119 -3 -Iteration 44 Energy -92.33935602 -C -0.6301072676 -0.9033941257 0.0112503447 -N 0.0059373435 0.0712044860 -0.0001946100 -H 0.6292433807 0.8335653860 -0.0105221797 -3 -Iteration 43 Energy -92.33897303 -C -0.6229874592 -0.9076867323 0.0111922922 -N -0.0080156143 0.0826610064 -0.0000948717 -H 0.6360765300 0.8264014721 -0.0105638656 -3 -Iteration 42 Energy -92.33846090 -C -0.6161941843 -0.9121034127 0.0111383812 -N -0.0222328738 0.0931752064 0.0000120989 -H 0.6435005146 0.8203039526 -0.0106169253 -3 -Iteration 41 Energy -92.33780697 -C -0.6081766864 -0.9152250426 0.0110651184 -N -0.0360834975 0.1048257055 0.0001098246 -H 0.6493336404 0.8117750833 -0.0106413881 -3 -Iteration 40 Energy -92.33706037 -C -0.6013653373 -0.9191595815 0.0110087879 -N -0.0505019516 0.1143417481 0.0002235948 -H 0.6569407454 0.8061935796 -0.0106988278 -3 -Iteration 39 Energy -92.33618622 -C -0.5919002454 -0.9199328998 0.0109088771 -N -0.0626604222 0.1269176291 0.0002985567 -H 0.6596341242 0.7943910169 -0.0106738789 -3 -Iteration 38 Energy -92.33517406 -C -0.5839122977 -0.9231212450 0.0108362448 -N -0.0782837385 0.1369715634 0.0004230198 -H 0.6672694927 0.7875254278 -0.0107257097 -3 -Iteration 37 Energy -92.33403666 -C -0.5741026403 -0.9238479248 0.0107323522 -N -0.0918167325 0.1488977476 0.0005160025 -H 0.6709928293 0.7763259234 -0.0107147998 -3 -Iteration 36 Energy -92.33277524 -C -0.5645483870 -0.9249695392 0.0106330718 -N -0.1065020240 0.1599519390 0.0006256012 -H 0.6761238675 0.7663933464 -0.0107251181 -3 -Iteration 35 Energy -92.33139911 -C -0.5542725600 -0.9250812476 0.0105212488 -N -0.1206481978 0.1713821993 0.0007275728 -H 0.6799942144 0.7550747945 -0.0107152667 -3 -Iteration 34 Energy -92.32990743 -C -0.5437318003 -0.9248019766 0.0104047275 -N -0.1350142961 0.1826054639 0.0008329028 -H 0.6838195529 0.7435722590 -0.0107040754 -3 -Iteration 33 Energy -92.32830076 -C -0.5327173203 -0.9238326964 0.0102798475 -N -0.1492153471 0.1938725482 0.0009362264 -H 0.6870061239 0.7313358945 -0.0106825190 -3 -Iteration 32 Energy -92.32657701 -C -0.5213476325 -0.9223179214 0.0101485702 -N -0.1634350026 0.2050351086 0.0010402351 -H 0.6898560916 0.7186585590 -0.0106552504 -3 -Iteration 31 Energy -92.32473382 -C -0.5095755636 -0.9201803731 0.0100100239 -N -0.1775585232 0.2161453387 0.0011434340 -H 0.6922075433 0.7054107806 -0.0106199031 -3 -Iteration 30 Energy -92.32276771 -C -0.4974494325 -0.9174669034 0.0098649527 -N -0.1916392676 0.2271455867 0.0012466722 -H 0.6941621566 0.6916970629 -0.0105780700 -3 -Iteration 29 Energy -92.32067494 -C -0.4849650216 -0.9141567892 0.0097132150 -N -0.2056306479 0.2380408883 0.0013494171 -H 0.6956691260 0.6774916471 -0.0105290772 -3 -Iteration 28 Energy -92.31845162 -C -0.4721550647 -0.9102756040 0.0095552865 -N -0.2195523010 0.2487969789 0.0014520412 -H 0.6967808222 0.6628543713 -0.0104737728 -3 -Iteration 27 Energy -92.31609439 -C -0.4590294423 -0.9058215133 0.0093912667 -N -0.2333787043 0.2594071330 0.0015542967 -H 0.6974816032 0.6477901265 -0.0104120085 -3 -Iteration 26 Energy -92.31360084 -C -0.4456184618 -0.9008175755 0.0092215933 -N -0.2471235466 0.2698443786 0.0016564573 -H 0.6978154649 0.6323489430 -0.0103444957 -3 -Iteration 25 Energy -92.31097020 -C -0.4319361060 -0.8952688880 0.0090464426 -N -0.2607693959 0.2801006479 0.0017583698 -H 0.6977789584 0.6165439864 -0.0102712575 -3 -Iteration 24 Energy -92.30820387 -C -0.4180121744 -0.8891989485 0.0088662487 -N -0.2743317538 0.2901528206 0.0018603102 -H 0.6974173847 0.6004218741 -0.0101930039 -3 -Iteration 23 Energy -92.30530601 -C -0.4038607468 -0.8826149304 0.0086811985 -N -0.2877972423 0.2999944776 0.0019621617 -H 0.6967314456 0.5839961990 -0.0101098053 -3 -Iteration 22 Energy -92.30228400 -C -0.3895122159 -0.8755412075 0.0084917367 -N -0.3011879003 0.3096038131 0.0020642659 -H 0.6957735726 0.5673131406 -0.0100224477 -3 -Iteration 21 Energy -92.29914877 -C -0.3749762090 -0.8679816081 0.0082979862 -N -0.3144865121 0.3189792452 0.0021664417 -H 0.6945361776 0.5503781092 -0.0099308730 -3 -Iteration 20 Energy -92.29591499 -C -0.3602891153 -0.8599649771 0.0081004776 -N -0.3277325656 0.3280945865 0.0022692417 -H 0.6930951374 0.5332461368 -0.0098361644 -3 -Iteration 19 Energy -92.29260094 -C -0.3454473078 -0.8514829922 0.0078991330 -N -0.3408863628 0.3369593130 0.0023721880 -H 0.6914071271 0.5158994253 -0.0097377662 -3 -Iteration 18 Energy -92.28922831 -C -0.3304989011 -0.8425736370 0.0076946535 -N -0.3540143170 0.3455403654 0.0024761592 -H 0.6895866746 0.4984090178 -0.0096372578 -3 -Iteration 17 Energy -92.28582160 -C -0.3154549345 -0.8332388454 0.0074871686 -N -0.3671095112 0.3538330485 0.0025811012 -H 0.6876379022 0.4807815432 -0.0095347149 -3 -Iteration 16 Energy -92.28240730 -C -0.3003436055 -0.8234944400 0.0072770596 -N -0.3801991705 0.3618206549 0.0026873887 -H 0.6856162325 0.4630495313 -0.0094308934 -3 -Iteration 15 Energy -92.27901291 -C -0.2851981652 -0.8133573515 0.0070647678 -N -0.3933195611 0.3694831445 0.0027955105 -H 0.6835911827 0.4452499532 -0.0093267235 -3 -Iteration 14 Energy -92.27566585 -C -0.2700602984 -0.8028470749 0.0068508390 -N -0.4065206461 0.3767952716 0.0029061292 -H 0.6816544009 0.4274275495 -0.0092234133 -3 -Iteration 13 Energy -92.27239219 -C -0.2549841200 -0.7919869979 0.0066359725 -N -0.4198705979 0.3837246797 0.0030201391 -H 0.6799281743 0.4096380645 -0.0091225568 -3 -Iteration 12 Energy -92.26921556 -C -0.2400418002 -0.7808062885 0.0064210917 -N -0.4334610359 0.3902294948 0.0031387349 -H 0.6785762926 0.3919525399 -0.0090262717 -3 -Iteration 11 Energy -92.26615623 -C -0.2253293305 -0.7693415958 0.0062074149 -N -0.4474088417 0.3962566577 0.0032634388 -H 0.6778116288 0.3744606843 -0.0089372988 -3 -Iteration 10 Energy -92.26323078 -C -0.2109707506 -0.7576384685 0.0059965081 -N -0.4618511892 0.4017421885 0.0033960453 -H 0.6778953963 0.3572720261 -0.0088589986 -3 -Iteration 9 Energy -92.26045279 -C -0.1971169568 -0.7457516137 0.0057902730 -N -0.4769294426 0.4066153667 0.0035384259 -H 0.6791198559 0.3405119933 -0.0087951440 -3 -Iteration 8 Energy -92.25783498 -C -0.1839314097 -0.7337411490 0.0055907736 -N -0.4927575838 0.4108097398 0.0036921327 -H 0.6817624500 0.3243071554 -0.0087493514 -3 -Iteration 7 Energy -92.25539276 -C -0.1715585740 -0.7216623251 0.0053998440 -N -0.5093827767 0.4142802237 0.0038578893 -H 0.6860148072 0.3087578476 -0.0087241783 -3 -Iteration 6 Energy -92.25314832 -C -0.1600903932 -0.7095535159 0.0052186661 -N -0.5267667829 0.4170162697 0.0040353261 -H 0.6919306326 0.2939129924 -0.0087204373 -3 -Iteration 5 Energy -92.25113320 -C -0.1495508884 -0.6974293095 0.0050475697 -N -0.5448009847 0.4190424250 0.0042231426 -H 0.6994253296 0.2797626307 -0.0087371574 -3 -Iteration 4 Energy -92.24938797 -C -0.1399078619 -0.6852834865 0.0048861742 -N -0.5633433562 0.4204064657 0.0044195661 -H 0.7083246746 0.2662527671 -0.0087721854 -3 -Iteration 3 Energy -92.24795860 -C -0.1310860418 -0.6730899693 0.0047335366 -N -0.5822490417 0.4211680618 0.0046227378 -H 0.7184085400 0.2532976537 -0.0088227194 -3 -Iteration 2 Energy -92.24689275 -C -0.1225950869 -0.6606510826 0.0045833852 -N -0.6010531509 0.4215203978 0.0048266851 -H 0.7287216943 0.2405064309 -0.0088765154 -3 -Iteration 1 Energy -92.24623642 -C -0.1163043868 -0.6488143548 0.0044600627 -N -0.6209489004 0.4209155005 0.0050469781 -H 0.7423267437 0.2292746006 -0.0089734859 -3 -Iteration 1 Energy -92.24624150 -C -0.1014881395 -0.6238562442 0.0041830653 -N -0.6574653685 0.4198785935 0.0054509638 -H 0.7640269645 0.2053533969 -0.0091004742 -3 -Iteration 2 Energy -92.24693987 -C -0.0968298258 -0.6117399755 0.0040763001 -N -0.6770790259 0.4181794637 0.0056732158 -H 0.7789823083 0.1949362580 -0.0092159610 -3 -Iteration 3 Energy -92.24813091 -C -0.0903854467 -0.5984024542 0.0039443810 -N -0.6955443575 0.4165592884 0.0058825501 -H 0.7910032606 0.1832189120 -0.0092933762 -3 -Iteration 4 Energy -92.24980472 -C -0.0850731553 -0.5851896478 0.0038254128 -N -0.7143311582 0.4144680396 0.0060975698 -H 0.8044777700 0.1720973544 -0.0093894278 -3 -Iteration 5 Energy -92.25194051 -C -0.0798888956 -0.5717046511 0.0037065900 -N -0.7327918036 0.4121013598 0.0063102933 -H 0.8177541557 0.1609790375 -0.0094833284 -3 -Iteration 6 Energy -92.25450911 -C -0.0749633823 -0.5580058918 0.0035896106 -N -0.7509944422 0.4094467454 0.0065215231 -H 0.8310312809 0.1499348926 -0.0095775789 -3 -Iteration 7 Energy -92.25747221 -C -0.0702484743 -0.5440813084 0.0034738929 -N -0.7688983359 0.4065194415 0.0067307438 -H 0.8442202668 0.1389376131 -0.0096710818 -3 -Iteration 8 Energy -92.26078499 -C -0.0657254349 -0.5299307816 0.0033592315 -N -0.7864812915 0.4033294713 0.0069376663 -H 0.8572801829 0.1279770565 -0.0097633429 -3 -Iteration 9 Energy -92.26439824 -C -0.0613770501 -0.5155551296 0.0032454419 -N -0.8037224780 0.3998858405 0.0071420216 -H 0.8701729845 0.1170450353 -0.0098539086 -3 -Iteration 10 Energy -92.26826056 -C -0.0571889590 -0.5009565546 0.0031323773 -N -0.8206029266 0.3961965342 0.0073435655 -H 0.8828653422 0.1061357666 -0.0099423879 -3 -Iteration 11 Energy -92.27232036 -C -0.0531499514 -0.4861387692 0.0030199323 -N -0.8371057423 0.3922687506 0.0075420800 -H 0.8953291502 0.0952457647 -0.0100284574 -3 -Iteration 12 Energy -92.27652752 -C -0.0492513610 -0.4711067585 0.0029080350 -N -0.8532157614 0.3881091506 0.0077373687 -H 0.9075405789 0.0843733541 -0.0101118489 -3 -Iteration 13 Energy -92.28083476 -C -0.0454847788 -0.4558659541 0.0027966187 -N -0.8689180606 0.3837240565 0.0079292394 -H 0.9194762959 0.0735176438 -0.0101923032 -3 -Iteration 14 Energy -92.28519859 -C -0.0418432931 -0.4404226502 0.0026856367 -N -0.8841987858 0.3791194957 0.0081175127 -H 0.9311155354 0.0626789007 -0.0102695945 -3 -Iteration 15 Energy -92.28957981 -C -0.0383199651 -0.4247834400 0.0025750436 -N -0.8990438351 0.3743011986 0.0083020081 -H 0.9424372567 0.0518579876 -0.0103434968 -3 -Iteration 16 Energy -92.29394382 -C -0.0349026957 -0.4089539833 0.0024647331 -N -0.9134375870 0.3692750669 0.0084825277 -H 0.9534137392 0.0410546626 -0.0104137060 -3 -Iteration 17 Energy -92.29826057 -C -0.0315880118 -0.3929425540 0.0023547055 -N -0.9273680213 0.3640463803 0.0086589157 -H 0.9640294896 0.0302719198 -0.0104800664 -3 -Iteration 18 Energy -92.30250429 -C -0.0283644892 -0.3767556582 0.0022448659 -N -0.9408187899 0.3586202592 0.0088309698 -H 0.9742567356 0.0195111452 -0.0105422808 -3 -Iteration 19 Energy -92.30665316 -C -0.0252236985 -0.3604010277 0.0021351576 -N -0.9537757215 0.3530017368 0.0089985118 -H 0.9840728765 0.0087750371 -0.0106001146 -3 -Iteration 20 Energy -92.31068889 -C -0.0221566639 -0.3438866490 0.0020255195 -N -0.9662243684 0.3471956563 0.0091613615 -H 0.9934544888 -0.0019332612 -0.0106533261 -3 -Iteration 21 Energy -92.31459622 -C -0.0191539995 -0.3272208201 0.0019158871 -N -0.9781500359 0.3412066699 0.0093193368 -H 1.0023774919 -0.0126101035 -0.0107016690 -3 -Iteration 22 Energy -92.31836249 -C -0.0162056568 -0.3104121459 0.0018061902 -N -0.9895373835 0.3350391984 0.0094722497 -H 1.0108164968 -0.0232513063 -0.0107448850 -3 -Iteration 23 Energy -92.32197720 -C -0.0133044950 -0.2934702993 0.0016963954 -N -1.0003734620 0.3286978355 0.0096199373 -H 1.0187514135 -0.0338517900 -0.0107827778 -3 -Iteration 24 Energy -92.32543161 -C -0.0104431878 -0.2764053482 0.0015864690 -N -1.0106452765 0.3221871041 0.0097622368 -H 1.0261619208 -0.0444060097 -0.0108151509 -3 -Iteration 25 Energy -92.32871839 -C -0.0076152797 -0.2592279969 0.0014763896 -N -1.0203404677 0.3155115808 0.0098989920 -H 1.0330292039 -0.0549078377 -0.0108418267 -3 -Iteration 26 Energy -92.33183128 -C -0.0048150316 -0.2419495590 0.0013661468 -N -1.0294472757 0.3086759350 0.0100300528 -H 1.0393357637 -0.0653506298 -0.0108626447 -3 -Iteration 27 Energy -92.33476482 -C -0.0020381190 -0.2245820833 0.0012557487 -N -1.0379550739 0.3016850640 0.0101552805 -H 1.0450666494 -0.0757272345 -0.0108774743 -3 -Iteration 28 Energy -92.33751400 -C 0.0007195846 -0.2071382734 0.0011452089 -N -1.0458531967 0.2945439897 0.0102745352 -H 1.0502070686 -0.0860299701 -0.0108861892 -3 -Iteration 29 Energy -92.34007404 -C 0.0034602646 -0.1896317376 0.0010345661 -N -1.0531324602 0.2872581681 0.0103876915 -H 1.0547456521 -0.0962506843 -0.0108887027 -3 -Iteration 30 Energy -92.34244008 -C 0.0061866691 -0.1720770156 0.0009238572 -N -1.0597825623 0.2798332197 0.0104946109 -H 1.0586693498 -0.1063804578 -0.0108849132 -3 -Iteration 31 Energy -92.34460692 -C 0.0088983123 -0.1544901094 0.0008131614 -N -1.0657952344 0.2722756233 0.0105951730 -H 1.0619703786 -0.1164097677 -0.0108747795 -3 -Iteration 32 Energy -92.34656878 -C 0.0115969327 -0.1368889628 0.0007025424 -N -1.0711583788 0.2645921050 0.0106892147 -H 1.0646349026 -0.1263273960 -0.0108582021 -3 -Iteration 33 Energy -92.34831919 -C 0.0142758098 -0.1192943798 0.0005921694 -N -1.0758654591 0.2567916553 0.0107766230 -H 1.0666631058 -0.1361215293 -0.0108352375 -3 -Iteration 34 Energy -92.34985089 -C 0.0169366925 -0.1017321808 0.0004821424 -N -1.0798974589 0.2488834646 0.0108571476 -H 1.0680342229 -0.1457755375 -0.0108057352 -3 -Iteration 35 Energy -92.35115608 -C 0.0195597076 -0.0842358184 0.0003728328 -N -1.0832483188 0.2408831294 0.0109306506 -H 1.0687620677 -0.1552715648 -0.0107699285 -3 -Iteration 36 Energy -92.35222683 -C 0.0221440476 -0.0668542857 0.0002644752 -N -1.0858822045 0.2328080871 0.0109966597 -H 1.0688116134 -0.1645780552 -0.0107275801 -3 -Iteration 37 Energy -92.35305576 -C 0.0246310072 -0.0496640439 0.0001580638 -N -1.0877932249 0.2246970864 0.0110549320 -H 1.0682356742 -0.1736572962 -0.0106794409 -3 -Iteration 38 Energy -92.35363726 -C 0.0270261200 -0.0328248848 0.0000542745 -N -1.0888592198 0.2166052045 0.0111038782 -H 1.0669065563 -0.1824045735 -0.0106245978 -3 -Iteration 39 Energy -92.35396904 -C 0.0290158235 -0.0167607305 -0.0000415111 -N -1.0890726755 0.2087575444 0.0111423786 -H 1.0651303085 -0.1906210677 -0.0105673127 -3 -Iteration 40 Energy -92.35405912 -C 0.0301112976 -0.0048148946 -0.0001085409 -N -1.0872940563 0.2025936805 0.0111513413 -H 1.0622562152 -0.1964030397 -0.0105092455 -3 -Iteration 41 Energy -92.35405911 -C 0.0301107679 -0.0048158663 -0.0001085307 -N -1.0872917138 0.2025937595 0.0111513153 -H 1.0622544024 -0.1964021470 -0.0105092297 +Iteration 36 Energy -92.35405962 +C 0.0304606046 -0.0047978383 -0.0001124382 +N -1.0881083548 0.1995751570 0.0111741546 +H 1.0627212067 -0.1934015725 -0.0105281615 +3 +Iteration 35 Energy -92.35405962 +C 0.0304605970 -0.0047978815 -0.0001124380 +N -1.0881083506 0.1995751776 0.0111741545 +H 1.0627212101 -0.1934015500 -0.0105281616 +3 +Iteration 34 Energy -92.35404753 +C 0.0303437515 -0.0089724513 -0.0000919215 +N -1.0872088192 0.2014228307 0.0111558054 +H 1.0619385242 -0.1910746332 -0.0105303290 +3 +Iteration 33 Energy -92.35381443 +C 0.0249915049 -0.0286478058 0.0000572668 +N -1.0863202255 0.2111587335 0.0111012220 +H 1.0664021771 -0.1811351815 -0.0106249339 +3 +Iteration 32 Energy -92.35322286 +C 0.0233281262 -0.0494013658 0.0001710967 +N -1.0812628005 0.2203953585 0.0110033649 +H 1.0630081308 -0.1696182465 -0.0106409066 +3 +Iteration 31 Energy -92.35228989 +C 0.0197931812 -0.0699540279 0.0003044610 +N -1.0772113824 0.2298223868 0.0109156281 +H 1.0624916577 -0.1584926128 -0.0106865343 +3 +Iteration 30 Energy -92.35100292 +C 0.0162156265 -0.0907723526 0.0004395156 +N -1.0723277679 0.2392296379 0.0108188848 +H 1.0611855979 -0.1470815391 -0.0107248454 +3 +Iteration 29 Energy -92.34937246 +C 0.0126403083 -0.1116954426 0.0005750285 +N -1.0666097528 0.2485370770 0.0107134795 +H 1.0590429010 -0.1354658882 -0.0107549531 +3 +Iteration 28 Energy -92.34741172 +C 0.0090861754 -0.1326347796 0.0007103847 +N -1.0600715271 0.2577041174 0.0105997546 +H 1.0560588082 -0.1236935916 -0.0107765844 +3 +Iteration 27 Energy -92.34513397 +C 0.0055621022 -0.1535339468 0.0008452271 +N -1.0527300940 0.2667066555 0.0104780069 +H 1.0522414483 -0.1117969624 -0.0107896792 +3 +Iteration 26 Energy -92.34255149 +C 0.0020710603 -0.1743539724 0.0009793437 +N -1.0446079894 0.2755301281 0.0103485500 +H 1.0476103856 -0.0998004095 -0.0107943388 +3 +Iteration 25 Energy -92.33967544 +C -0.0013871647 -0.1950658952 0.0011126033 +N -1.0357299132 0.2841651382 0.0102116972 +H 1.0421905344 -0.0877234968 -0.0107907456 +3 +Iteration 24 Energy -92.33651614 +C -0.0048140412 -0.2156469423 0.0012449171 +N -1.0261207011 0.2926051915 0.0100677499 +H 1.0360081989 -0.0755825030 -0.0107791121 +3 +Iteration 23 Energy -92.33308372 +C -0.0082129265 -0.2360791433 0.0013762389 +N -1.0158069408 0.3008462268 0.0099170175 +H 1.0290933238 -0.0633913373 -0.0107597015 +3 +Iteration 22 Energy -92.32938872 +C -0.0115883382 -0.2563475218 0.0015065490 +N -1.0048142810 0.3088852192 0.0097597943 +H 1.0214760758 -0.0511619512 -0.0107327885 +3 +Iteration 21 Energy -92.32544282 +C -0.0149469578 -0.2764397674 0.0016358639 +N -0.9931686708 0.3167200924 0.0095963737 +H 1.0131890851 -0.0389045787 -0.0106986827 +3 +Iteration 20 Energy -92.32125951 +C -0.0182974573 -0.2963451444 0.0017642288 +N -0.9808945571 0.3243487635 0.0094270324 +H 1.0042654709 -0.0266278728 -0.0106577063 +3 +Iteration 19 Energy -92.31685478 +C -0.0216505784 -0.3160540058 0.0018917167 +N -0.9680147020 0.3317687509 0.0092520307 +H 0.9947387369 -0.0143389990 -0.0106101925 +3 +Iteration 18 Energy -92.31224787 +C -0.0250197900 -0.3355578786 0.0020184357 +N -0.9545511699 0.3389771791 0.0090716231 +H 0.9846444164 -0.0020435543 -0.0105565039 +3 +Iteration 17 Energy -92.30746209 +C -0.0284207173 -0.3548484164 0.0021445183 +N -0.9405234817 0.3459698509 0.0088860424 +H 0.9740176554 0.0102543117 -0.0104970058 +3 +Iteration 16 Energy -92.30252557 +C -0.0318707459 -0.3739173276 0.0022701163 +N -0.9259491352 0.3527412384 0.0086955053 +H 0.9628933376 0.0225518353 -0.0104320667 +3 +Iteration 15 Energy -92.29747213 +C -0.0353888004 -0.3927562432 0.0023953981 +N -0.9108439062 0.3592843864 0.0085002163 +H 0.9513061631 0.0348476030 -0.0103620594 +3 +Iteration 14 Energy -92.29234194 +C -0.0389944804 -0.4113561499 0.0025205362 +N -0.8952213039 0.3655905914 0.0083003632 +H 0.9392892407 0.0471413048 -0.0102873445 +3 +Iteration 13 Energy -92.28718215 +C -0.0427082311 -0.4297079888 0.0026457126 +N -0.8790942337 0.3716498826 0.0080961331 +H 0.9268759213 0.0594338524 -0.0102082908 +3 +Iteration 12 Energy -92.28204705 +C -0.0465503482 -0.4478018236 0.0027711032 +N -0.8624739746 0.3774505687 0.0078877032 +H 0.9140977792 0.0717270011 -0.0101252515 +3 +Iteration 11 Energy -92.27699787 +C -0.0505416081 -0.4656277754 0.0028968898 +N -0.8453722127 0.3829798568 0.0076752601 +H 0.9009872773 0.0840236647 -0.0100385950 +3 +Iteration 10 Energy -92.27210199 +C -0.0547025939 -0.4831754587 0.0030232494 +N -0.8278004393 0.3882235619 0.0074589949 +H 0.8875764896 0.0963276430 -0.0099486893 +3 +Iteration 9 Energy -92.26743142 +C -0.0590557188 -0.5004357221 0.0031503849 +N -0.8097728192 0.3931668051 0.0072391309 +H 0.8739019945 0.1086446632 -0.0098559609 +3 +Iteration 8 Energy -92.26306056 +C -0.0636247906 -0.5174000842 0.0032785174 +N -0.7913053802 0.3977935230 0.0070159176 +H 0.8600036272 0.1209823074 -0.0097608801 +3 +Iteration 7 Energy -92.25906330 +C -0.0684359947 -0.5340615377 0.0034079011 +N -0.7724172047 0.4020865455 0.0067896424 +H 0.8459266559 0.1333507383 -0.0096639886 +3 +Iteration 6 Energy -92.25550963 +C -0.0735188100 -0.5504153761 0.0035388364 +N -0.7531314910 0.4060275846 0.0065606435 +H 0.8317237574 0.1457635377 -0.0095659250 +3 +Iteration 5 Energy -92.25246192 +C -0.0789066124 -0.5664596947 0.0036716794 +N -0.7334761199 0.4095969790 0.0063293162 +H 0.8174561888 0.1582384619 -0.0094674406 +3 +Iteration 4 Energy -92.24997133 +C -0.0846305605 -0.5821932069 0.0038067648 +N -0.7134807863 0.4127743778 0.0060960788 +H 0.8031848032 0.1707945753 -0.0093692887 +3 +Iteration 3 Energy -92.24807412 +C -0.0904463739 -0.5974979338 0.0039408785 +N -0.6930387352 0.4155837131 0.0058596541 +H 0.7885585656 0.1832899669 -0.0092669777 +3 +Iteration 2 Energy -92.24679535 +C -0.0988590732 -0.6134428021 0.0041063321 +N -0.6737912794 0.4175912225 0.0056399843 +H 0.7777238091 0.1972273258 -0.0092127615 +3 +Iteration 1 Energy -92.24615221 +C -0.1012376006 -0.6247098479 0.0041842603 +N -0.6526926958 0.4198636443 0.0053988567 +H 0.7590037528 0.2062219497 -0.0090495621 +3 +Iteration 0 Energy -92.24601961 +C -0.1088783634 -0.6365101639 0.0043221742 +N -0.6393457902 0.4205365638 0.0052498438 +H 0.7532976101 0.2173493463 -0.0090384631 +3 +Iteration 1 Energy -92.24630043 +C -0.1162905585 -0.6510144745 0.0044700511 +N -0.6186302717 0.4219474719 0.0050168743 +H 0.7399942867 0.2304427488 -0.0089533705 +3 +Iteration 2 Energy -92.24712382 +C -0.1243507190 -0.6645573751 0.0046205808 +N -0.5970897120 0.4222151982 0.0047801538 +H 0.7265138875 0.2437179231 -0.0088671797 +3 +Iteration 3 Energy -92.24843579 +C -0.1331094018 -0.6784715777 0.0047804583 +N -0.5759838710 0.4223007379 0.0045490253 +H 0.7141667293 0.2575465861 -0.0087959286 +3 +Iteration 4 Energy -92.25017035 +C -0.1426777777 -0.6921253546 0.0049479872 +N -0.5550129307 0.4216446922 0.0043227893 +H 0.7027641649 0.2718564086 -0.0087372216 +3 +Iteration 5 Energy -92.25225888 +C -0.1531815362 -0.7056514642 0.0051251536 +N -0.5344272407 0.4202315282 0.0041042542 +H 0.6926822334 0.2867956823 -0.0086958529 +3 +Iteration 6 Energy -92.25463737 +C -0.1647218581 -0.7190928611 0.0053132616 +N -0.5144394463 0.4179864070 0.0038960896 +H 0.6842347608 0.3024822003 -0.0086757963 +3 +Iteration 7 Energy -92.25725494 +C -0.1773580206 -0.7324692344 0.0055130499 +N -0.4952696770 0.4148399527 0.0037010218 +H 0.6777011541 0.3190050279 -0.0086805168 +3 +Iteration 8 Energy -92.26007879 +C -0.1910734044 -0.7457679803 0.0057242788 +N -0.4770973079 0.4107508584 0.0035212021 +H 0.6732441689 0.3363928680 -0.0087119260 +3 +Iteration 9 Energy -92.26309184 +C -0.2057576360 -0.7589414460 0.0059455220 +N -0.4599950892 0.4057253068 0.0033573973 +H 0.6708261816 0.3545918854 -0.0087693644 +3 +Iteration 10 Energy -92.26628353 +C -0.2212239259 -0.7719168620 0.0061744021 +N -0.4438892576 0.3998210921 0.0032085347 +H 0.6701866400 0.3734715161 -0.0088493819 +3 +Iteration 11 Energy -92.26964033 +C -0.2372554960 -0.7846106585 0.0064081641 +N -0.4285818319 0.3931291229 0.0030720309 +H 0.6709107844 0.3928572818 -0.0089466401 +3 +Iteration 12 Energy -92.27314135 +C -0.2536540556 -0.7969443876 0.0066442787 +N -0.4138286457 0.3857466799 0.0029447684 +H 0.6725561578 0.4125734538 -0.0090554922 +3 +Iteration 13 Energy -92.27675880 +C -0.2702631172 -0.8088501200 0.0068807221 +N -0.3994079804 0.3777565507 0.0028239416 +H 0.6747445541 0.4324693155 -0.0091711088 +3 +Iteration 14 Energy -92.28046012 +C -0.2869686877 -0.8202724266 0.0071159926 +N -0.3851532331 0.3692208935 0.0027074428 +H 0.6771953773 0.4524272793 -0.0092898806 +3 +Iteration 15 Energy -92.28421032 +C -0.3036888330 -0.8311670127 0.0073489904 +N -0.3709521038 0.3601843714 0.0025938385 +H 0.6797143933 0.4723583875 -0.0094092740 +3 +Iteration 16 Energy -92.28797384 +C -0.3203621668 -0.8414977353 0.0075788778 +N -0.3567318720 0.3506799379 0.0024821818 +H 0.6821674953 0.4921935436 -0.0095275047 +3 +Iteration 17 Energy -92.29171636 +C -0.3369401436 -0.8512353808 0.0078049895 +N -0.3424465357 0.3407342100 0.0023718471 +H 0.6844601358 0.5118769170 -0.0096432817 +3 +Iteration 18 Energy -92.29540622 +C -0.3533818971 -0.8603561375 0.0080267689 +N -0.3280660416 0.3303713229 0.0022623947 +H 0.6865213952 0.5313605608 -0.0097556087 +3 +Iteration 19 Energy -92.29901553 +C -0.3696517033 -0.8688413052 0.0082437394 +N -0.3135699468 0.3196154954 0.0021534894 +H 0.6882951066 0.5506015559 -0.0098636738 +3 +Iteration 20 Energy -92.30252086 +C -0.3857175537 -0.8766768199 0.0084554862 +N -0.2989428248 0.3084925765 0.0020448434 +H 0.6897338350 0.5695599897 -0.0099667747 +3 +Iteration 21 Energy -92.30590343 +C -0.4015513701 -0.8838542760 0.0086616635 +N -0.2841730174 0.2970307009 0.0019361997 +H 0.6907978440 0.5881993213 -0.0100643083 +3 +Iteration 22 Energy -92.30914898 +C -0.4171278835 -0.8903688746 0.0088619731 +N -0.2692487925 0.2852605397 0.0018272887 +H 0.6914501325 0.6064840811 -0.0101557069 +3 +Iteration 23 Energy -92.31224735 +C -0.4324258006 -0.8962204945 0.0090561817 +N -0.2541601494 0.2732141822 0.0017178530 +H 0.6916594065 0.6243820585 -0.0102404798 +3 +Iteration 24 Energy -92.31519176 +C -0.4474275973 -0.9014128634 0.0092441147 +N -0.2388979327 0.2609246311 0.0016076406 +H 0.6913989865 0.6418639786 -0.0103182004 +3 +Iteration 25 Energy -92.31797814 +C -0.4621187868 -0.9059516370 0.0094256399 +N -0.2234531874 0.2484247887 0.0014964020 +H 0.6906454307 0.6589025946 -0.0103884869 +3 +Iteration 26 Energy -92.32060435 +C -0.4764877729 -0.9098436528 0.0096006620 +N -0.2078184404 0.2357460352 0.0013839107 +H 0.6893796698 0.6754733638 -0.0104510178 +3 +Iteration 27 Energy -92.32306952 +C -0.4905253414 -0.9130962075 0.0097691139 +N -0.1919880598 0.2229176319 0.0012699703 +H 0.6875868576 0.6915543218 -0.0105055294 +3 +Iteration 28 Energy -92.32537341 +C -0.5042224106 -0.9157135729 0.0099309161 +N -0.1759565181 0.2099666370 0.0011543958 +H 0.6852523851 0.7071226821 -0.0105517571 +3 +Iteration 29 Energy -92.32751587 +C -0.5175711877 -0.9176991930 0.0100859992 +N -0.1597222299 0.1969162727 0.0010370628 +H 0.6823668741 0.7221586666 -0.0105895072 +3 +Iteration 30 Energy -92.32949638 +C -0.5305630702 -0.9190533873 0.0102342707 +N -0.1432841019 0.1837881328 0.0009178598 +H 0.6789206286 0.7366410006 -0.0106185756 +3 +Iteration 31 Energy -92.33131371 +C -0.5431880592 -0.9197726549 0.0103756050 +N -0.1266435387 0.1706007739 0.0007967167 +H 0.6749050545 0.7505476272 -0.0106387668 +3 +Iteration 32 Energy -92.33296563 +C -0.5554356863 -0.9198522600 0.0105098659 +N -0.1098053323 0.1573705470 0.0006736104 +H 0.6703144751 0.7638574592 -0.0106499214 +3 +Iteration 33 Energy -92.33444883 +C -0.5672933696 -0.9192846713 0.0106368812 +N -0.0927758739 0.1441135602 0.0005485366 +H 0.6651427001 0.7765468572 -0.0106518630 +3 +Iteration 34 Energy -92.33575883 +C -0.5787476503 -0.9180625919 0.0107564701 +N -0.0755671801 0.1308443429 0.0004215598 +H 0.6593882869 0.7885939951 -0.0106444750 +3 +Iteration 35 Energy -92.33689014 +C -0.5897796208 -0.9161747580 0.0108683740 +N -0.0581931306 0.1175820852 0.0002927432 +H 0.6530462079 0.7999684190 -0.0106275623 +3 +Iteration 36 Energy -92.33783653 +C -0.6003713458 -0.9136198407 0.0109723907 +N -0.0406860953 0.1043439361 0.0001623616 +H 0.6461308976 0.8106516508 -0.0106011974 +3 +Iteration 37 Energy -92.33859152 +C -0.6104821747 -0.9103866594 0.0110680243 +N -0.0230818453 0.0911820990 0.0000305656 +H 0.6386374765 0.8205803067 -0.0105650349 +3 +Iteration 38 Energy -92.33914904 +C -0.6200692458 -0.9065110550 0.0111549713 +N -0.0055141898 0.0781375680 -0.0001013710 +H 0.6306568921 0.8297492333 -0.0105200454 +3 +Iteration 39 Energy -92.33950844 +C -0.6284124188 -0.9011084395 0.0112212823 +N 0.0125147772 0.0660312450 -0.0002426746 +H 0.6209710981 0.8364529407 -0.0104450528 +3 +Iteration 40 Energy -92.33958948 +C -0.6372940750 -0.8977421866 0.0113028650 +N 0.0261654805 0.0510280306 -0.0003227633 +H 0.6162020510 0.8480899022 -0.0104465467 +3 +Iteration 41 Energy -92.33968810 +C -0.6399654645 -0.8939233016 0.0113144694 +N 0.0363663572 0.0487910926 -0.0004239726 +H 0.6086725638 0.8465079552 -0.0103569419 +3 +Iteration 42 Energy -92.33969017 +C -0.6400234248 -0.8940052115 0.0113159518 +N 0.0361610040 0.0485049185 -0.0004204341 +H 0.6089358773 0.8468760392 -0.0103619629 +3 +Iteration 43 Energy -92.33969017 +C -0.6400234163 -0.8940052175 0.0113159593 +N 0.0361609865 0.0485049329 -0.0004204503 +H 0.6089358863 0.8468760308 -0.0103619541 diff --git a/examples/1-simple-examples/hcn_hnc_irc/qchem/command.sh b/examples/1-simple-examples/hcn_hnc_irc/qchem/command.sh index d85c4147..ae639138 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/qchem/command.sh +++ b/examples/1-simple-examples/hcn_hnc_irc/qchem/command.sh @@ -1 +1,2 @@ -geometric-optimize --irc yes --engine qchem hcn.qcin +geometric-optimize hcn.qcin --irc yes --nt 6 --trust 0.05 --engine qchem --converge set GAU_LOOSE + diff --git a/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.vdata_first b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.vdata_first index 2dac3c1e..d9683786 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.vdata_first +++ b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.vdata_first @@ -33,7 +33,7 @@ # # == Summary of harmonic free energy analysis == # Note: Rotational symmetry is set to 1 regardless of true symmetry -# 1 Imaginary Frequencies (cm^-1): 1215.913i +# 1 Imaginary Frequencies (cm^-1): 1215.900i # Note: Free energy does not include contribution from imaginary mode(s) # # Free energy contributions calculated at @ 300.00 K: @@ -43,8 +43,8 @@ # TS (Trans + Rot + Vib = Tot): 10.7624 + 4.9154 + 0.0003 = 15.6782 kcal/mol # # Ground State Electronic Energy : E0 = -92.24604268 au ( -57885.2657 kcal/mol) -# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075345 au ( -6.7479 kcal/mol) -# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25679613 au ( -57892.0136 kcal/mol) +# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075346 au ( -6.7479 kcal/mol) +# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25679614 au ( -57892.0136 kcal/mol) # 3 @@ -53,17 +53,17 @@ Iteration 0 Energy -92.24604268 N -0.6393457902 0.4205365638 0.0052498438 H 0.7532976101 0.2173493463 -0.0090384631 --1215.913129 --0.043292 -0.081608 0.000849 - 0.075287 0.009578 -0.000867 --0.530338 0.839311 0.001930 +-1215.900475 +-0.043294 -0.081606 0.000849 + 0.075287 0.009576 -0.000867 +-0.530321 0.839321 0.001929 - 2126.645765 --0.335092 0.647229 0.000680 - 0.302442 -0.563886 -0.000708 --0.209932 0.123671 0.001725 + 2126.644652 +-0.335090 0.647234 0.000680 + 0.302441 -0.563887 -0.000708 +-0.209940 0.123630 0.001725 - 2451.888293 - 0.057521 0.023516 -0.000737 - 0.012770 0.015894 -0.000213 --0.862850 -0.501073 0.011742 + 2451.882983 +-0.057521 -0.023513 0.000737 +-0.012771 -0.015896 0.000213 + 0.862859 0.501058 -0.011742 diff --git a/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz index 2882142c..809650e0 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz +++ b/examples/1-simple-examples/hcn_hnc_irc/qchem/hcn_irc.xyz @@ -1,450 +1,400 @@ 3 -Iteration 48 Energy -92.33971298 -C -0.6430492752 -0.8915383656 0.0113371879 -N 0.0360194399 0.0479516754 -0.0004163044 -H 0.6121032918 0.8449624364 -0.0103873286 -3 -Iteration 47 Energy -92.33971298 -C -0.6430492757 -0.8915383740 0.0113371912 -N 0.0360194360 0.0479516869 -0.0004163115 -H 0.6121032962 0.8449624334 -0.0103873248 -3 -Iteration 46 Energy -92.33970967 -C -0.6423324929 -0.8930046437 0.0113361126 -N 0.0334267539 0.0497196177 -0.0003961154 -H 0.6139791956 0.8446607722 -0.0104064424 -3 -Iteration 45 Energy -92.33961119 -C -0.6359904271 -0.8982587190 0.0112909937 -N 0.0194996960 0.0610110174 -0.0002958992 -H 0.6215641876 0.8386234478 -0.0104615396 -3 -Iteration 44 Energy -92.33938054 -C -0.6301406334 -0.9033568814 0.0112505378 -N 0.0060303940 0.0711463221 -0.0001953592 -H 0.6291836960 0.8335863055 -0.0105216236 -3 -Iteration 43 Energy -92.33899816 -C -0.6230417855 -0.9076774766 0.0111928434 -N -0.0079416869 0.0825782513 -0.0000952985 -H 0.6360569288 0.8264749715 -0.0105639901 -3 -Iteration 42 Energy -92.33848522 -C -0.6161967066 -0.9120679077 0.0111382452 -N -0.0221700879 0.0931668261 0.0000114511 -H 0.6434402510 0.8202768278 -0.0106161414 -3 -Iteration 41 Energy -92.33783116 -C -0.6082170537 -0.9152467470 0.0110656597 -N -0.0360746389 0.1047697178 0.0001099858 -H 0.6493651492 0.8118527754 -0.0106420906 -3 -Iteration 40 Energy -92.33708203 -C -0.6013143721 -0.9191218213 0.0110080567 -N -0.0504825035 0.1144160774 0.0002230396 -H 0.6568703321 0.8060814901 -0.0106975414 -3 -Iteration 39 Energy -92.33620650 -C -0.5918788647 -0.9199337685 0.0109086474 -N -0.0626862396 0.1269469207 0.0002987039 -H 0.6596385608 0.7943625939 -0.0106737964 -3 -Iteration 38 Energy -92.33519566 -C -0.5839401311 -0.9231679678 0.0108367644 -N -0.0783421929 0.1369337713 0.0004238330 -H 0.6673557805 0.7876099427 -0.0107270425 -3 -Iteration 37 Energy -92.33405975 -C -0.5740876273 -0.9238286913 0.0107320994 -N -0.0917940894 0.1489156144 0.0005156727 -H 0.6709551733 0.7762888231 -0.0107142172 -3 -Iteration 36 Energy -92.33279880 -C -0.5645561963 -0.9249812653 0.0106332112 -N -0.1065157836 0.1599406899 0.0006258034 -H 0.6761454364 0.7664163216 -0.0107254598 -3 -Iteration 35 Energy -92.33142315 -C -0.5542697531 -0.9250780746 0.0105212035 -N -0.1206430035 0.1713842802 0.0007275065 -H 0.6799862131 0.7550695406 -0.0107151550 -3 -Iteration 34 Energy -92.32993183 -C -0.5437342416 -0.9248058921 0.0104047723 -N -0.1350181056 0.1826011072 0.0008329645 -H 0.6838258036 0.7435805311 -0.0107041819 -3 -Iteration 33 Energy -92.32832551 -C -0.5327169503 -0.9238328317 0.0102798441 -N -0.1492139354 0.1938716237 0.0009362152 -H 0.6870043422 0.7313369542 -0.0106825044 -3 -Iteration 32 Energy -92.32660205 -C -0.5213489474 -0.9223202735 0.0101485954 -N -0.1634365927 0.2050321834 0.0010402660 -H 0.6898589966 0.7186638363 -0.0106553065 -3 -Iteration 31 Energy -92.32475913 -C -0.5095758687 -0.9201814403 0.0100100322 -N -0.1775582518 0.2161435518 0.0011434393 -H 0.6922075770 0.7054136347 -0.0106199166 -3 -Iteration 30 Energy -92.32279322 -C -0.4974504390 -0.9174688684 0.0098649728 -N -0.1916403954 0.2271429244 0.0012466968 -H 0.6941642909 0.6917016902 -0.0105781147 -3 -Iteration 29 Energy -92.32070060 -C -0.4849654878 -0.9141580987 0.0097132261 -N -0.2056309007 0.2380387101 0.0013494299 -H 0.6956698450 0.6774951348 -0.0105291011 -3 -Iteration 28 Energy -92.31847738 -C -0.4721557688 -0.9102772031 0.0095553015 -N -0.2195530415 0.2487944863 0.0014520608 -H 0.6967822668 0.6628584630 -0.0104738074 -3 -Iteration 27 Energy -92.31612021 -C -0.4590301609 -0.9058231187 0.0093912820 -N -0.2333795821 0.2594045081 0.0015543184 -H 0.6974831995 0.6477943568 -0.0104120454 -3 -Iteration 26 Energy -92.31362667 -C -0.4456191067 -0.9008190891 0.0092216073 -N -0.2471243236 0.2698417473 0.0016564779 -H 0.6978168868 0.6323530880 -0.0103445304 -3 -Iteration 25 Energy -92.31099601 -C -0.4319370023 -0.8952706636 0.0090464606 -N -0.2607707042 0.2800976701 0.0017583978 -H 0.6977811629 0.6165487397 -0.0102713035 -3 -Iteration 24 Energy -92.30822962 -C -0.4180130356 -0.8892006675 0.0088662660 -N -0.2743330131 0.2901497777 0.0018603380 -H 0.6974195052 0.6004266361 -0.0101930491 -3 -Iteration 23 Energy -92.30533169 -C -0.4038618496 -0.8826168688 0.0086812195 -N -0.2877989984 0.2999910892 0.0019621965 -H 0.6967343046 0.5840015258 -0.0101098611 -3 -Iteration 22 Energy -92.30230959 -C -0.3895130511 -0.8755428618 0.0084917535 -N -0.3011890999 0.3096005801 0.0020642939 -H 0.6957756075 0.5673180279 -0.0100224925 -3 -Iteration 21 Energy -92.29917428 -C -0.3749774086 -0.8679836041 0.0082980085 -N -0.3144884091 0.3189756114 0.0021664792 -H 0.6945392743 0.5503837389 -0.0099309328 -3 -Iteration 20 Energy -92.29594043 -C -0.3602901499 -0.8599667880 0.0081004973 -N -0.3277340838 0.3280909856 0.0022692748 -H 0.6930976901 0.5332515486 -0.0098362172 -3 -Iteration 19 Energy -92.29262632 -C -0.3454482007 -0.8514846654 0.0078991505 -N -0.3408875351 0.3369557566 0.0023722172 -H 0.6914091922 0.5159046550 -0.0097378128 -3 -Iteration 18 Energy -92.28925366 -C -0.3304997216 -0.8425752415 0.0076946699 -N -0.3540152783 0.3455368081 0.0024761861 -H 0.6895884564 0.4984141796 -0.0096373011 -3 -Iteration 17 Energy -92.28584693 -C -0.3154555308 -0.8332402616 0.0074871817 -N -0.3671099514 0.3538296144 0.0025811219 -H 0.6876389387 0.4807863934 -0.0095347486 -3 -Iteration 16 Energy -92.28243261 -C -0.3003439699 -0.8234956735 0.0072770692 -N -0.3801990780 0.3618173606 0.0026874029 -H 0.6856165044 0.4630540590 -0.0094309172 -3 -Iteration 15 Energy -92.27903821 -C -0.2851981740 -0.8133583210 0.0070647724 -N -0.3933186987 0.3694800864 0.0027955152 -H 0.6835903292 0.4452539808 -0.0093267327 -3 -Iteration 14 Energy -92.27569113 -C -0.2700598182 -0.8028477137 0.0068508367 -N -0.4065187853 0.3767925608 0.0029061213 -H 0.6816520601 0.4274308991 -0.0092234032 -3 -Iteration 13 Energy -92.27241743 -C -0.2549832171 -0.7919873786 0.0066359644 -N -0.4198679179 0.3837222948 0.0030201208 -H 0.6799245915 0.4096408300 -0.0091225303 -3 -Iteration 12 Energy -92.26924075 -C -0.2400404967 -0.7808064379 0.0064210782 -N -0.4334576251 0.3902274299 0.0031387071 -H 0.6785715783 0.3919547542 -0.0090262304 -3 -Iteration 11 Energy -92.26618133 -C -0.2253274668 -0.7693414314 0.0062073938 -N -0.4474044788 0.3962550094 0.0032633987 -H 0.6778054021 0.3744621682 -0.0089372376 -3 -Iteration 10 Energy -92.26325577 -C -0.2109682535 -0.7576379654 0.0059964785 -N -0.4618458500 0.4017410055 0.0033959924 -H 0.6778875601 0.3572727061 -0.0088589160 -3 -Iteration 9 Energy -92.26047765 -C -0.1971139541 -0.7457508518 0.0057902366 -N -0.4769234351 0.4066145917 0.0035383638 -H 0.6791108458 0.3405120063 -0.0087950455 -3 -Iteration 8 Energy -92.25785966 -C -0.1839278706 -0.7337401058 0.0055907301 -N -0.4927509528 0.4108093798 0.0036920619 -H 0.6817522799 0.3243064722 -0.0087492371 -3 -Iteration 7 Energy -92.25541725 -C -0.1715546480 -0.7216610706 0.0053997953 -N -0.5093757999 0.4142802080 0.0038578131 -H 0.6860039044 0.3087566088 -0.0087240534 -3 -Iteration 6 Energy -92.25317258 -C -0.1600863269 -0.7095521679 0.0052186154 -N -0.5267597973 0.4170164920 0.0040352487 -H 0.6919195807 0.2939114221 -0.0087203092 -3 -Iteration 5 Energy -92.25115719 -C -0.1495470629 -0.6974280552 0.0050475221 -N -0.5447943975 0.4190427366 0.0042230692 -H 0.6994149169 0.2797610648 -0.0087370364 -3 -Iteration 4 Energy -92.24941168 -C -0.1399044695 -0.6852824201 0.0048861322 -N -0.5633373285 0.4204067917 0.0044194987 -H 0.7083152544 0.2662513747 -0.0087720760 -3 -Iteration 3 Energy -92.24798205 -C -0.1310833104 -0.6730892175 0.0047335032 -N -0.5822436929 0.4211683260 0.0046226781 -H 0.7184004597 0.2532966377 -0.0088226264 -3 -Iteration 2 Energy -92.24691598 -C -0.1225923571 -0.6606504413 0.0045833524 -N -0.6010481035 0.4215208860 0.0048266277 -H 0.7287139172 0.2405053015 -0.0088764252 -3 -Iteration 1 Energy -92.24625952 -C -0.1163025051 -0.6488143436 0.0044600421 -N -0.6209449115 0.4209160649 0.0050469319 -H 0.7423208731 0.2292740249 -0.0089734191 -3 -Iteration 1 Energy -92.24626478 -C -0.1014874782 -0.6238545503 0.0041830503 -N -0.6574678335 0.4198783103 0.0054509921 -H 0.7640287682 0.2053519861 -0.0091004874 -3 -Iteration 2 Energy -92.24696351 -C -0.0968280724 -0.6117371030 0.0040762677 -N -0.6770816655 0.4181791273 0.0056732462 -H 0.7789831944 0.1949337219 -0.0092159590 -3 -Iteration 3 Energy -92.24815501 -C -0.0903851905 -0.5984000921 0.0039443673 -N -0.6955479178 0.4165585864 0.0058825923 -H 0.7910065649 0.1832172519 -0.0092934047 -3 -Iteration 4 Energy -92.24982932 -C -0.0850734210 -0.5851874542 0.0038254056 -N -0.7143349385 0.4144671779 0.0060976151 -H 0.8044818160 0.1720960225 -0.0093894659 -3 -Iteration 5 Energy -92.25196563 -C -0.0798897013 -0.5717026693 0.0037065896 -N -0.7327958387 0.4121003611 0.0063103420 -H 0.8177589965 0.1609780544 -0.0094833768 -3 -Iteration 6 Energy -92.25453472 -C -0.0749648303 -0.5580041898 0.0035896186 -N -0.7509988286 0.4094456177 0.0065215763 -H 0.8310371154 0.1499343183 -0.0095776400 -3 -Iteration 7 Energy -92.25749824 -C -0.0702503227 -0.5440797956 0.0034739061 -N -0.7689029233 0.4065182178 0.0067307995 -H 0.8442267025 0.1389373240 -0.0096711508 -3 -Iteration 8 Energy -92.26081135 -C -0.0657276364 -0.5299294481 0.0033592494 -N -0.7864860600 0.4033281637 0.0069377245 -H 0.8572871529 0.1279770307 -0.0097634190 -3 -Iteration 9 Energy -92.26442485 -C -0.0613791214 -0.5155537810 0.0032454583 -N -0.8037270940 0.3998844783 0.0071420784 -H 0.8701796719 0.1170450489 -0.0098539818 -3 -Iteration 10 Energy -92.26828734 -C -0.0571910277 -0.5009552344 0.0031323938 -N -0.8206074637 0.3961951069 0.0073436216 -H 0.8828719479 0.1061358737 -0.0099424606 -3 -Iteration 11 Energy -92.27234723 -C -0.0531522196 -0.4861375554 0.0030199515 -N -0.8371103415 0.3922672540 0.0075421372 -H 0.8953360176 0.0952460476 -0.0100285337 -3 -Iteration 12 Energy -92.27655442 -C -0.0492535039 -0.4711055396 0.0029080529 -N -0.8532202120 0.3881075974 0.0077374245 -H 0.9075471724 0.0843736883 -0.0101119225 -3 -Iteration 13 Energy -92.28086165 -C -0.0454869057 -0.4558647654 0.0027966365 -N -0.8689224323 0.3837224444 0.0079292946 -H 0.9194827945 0.0735180672 -0.0101923762 -3 -Iteration 14 Energy -92.28522543 -C -0.0418450800 -0.4404213842 0.0026856504 -N -0.8842028558 0.3791178248 0.0081175649 -H 0.9311213924 0.0626793055 -0.0102696604 -3 -Iteration 15 Energy -92.28960659 -C -0.0383216787 -0.4247821792 0.0025750565 -N -0.8990477925 0.3742994731 0.0083020594 -H 0.9424429277 0.0518584523 -0.0103435610 -3 -Iteration 16 Energy -92.29397052 -C -0.0349042781 -0.4089527109 0.0024647446 -N -0.9134414027 0.3692732887 0.0084825776 -H 0.9534191372 0.0410551684 -0.0104137673 -3 -Iteration 17 Energy -92.29828718 -C -0.0315889509 -0.3929411153 0.0023547092 -N -0.9273712901 0.3640445206 0.0086589600 -H 0.9640336974 0.0302723409 -0.0104801143 -3 -Iteration 18 Energy -92.30253080 -C -0.0283653839 -0.3767542164 0.0022448690 -N -0.9408219656 0.3586183508 0.0088310133 -H 0.9742608060 0.0195116118 -0.0105423274 -3 -Iteration 19 Energy -92.30667957 -C -0.0252246927 -0.3603996217 0.0021351620 -N -0.9537789302 0.3529997936 0.0089985558 -H 0.9840770794 0.0087755743 -0.0106001630 -3 -Iteration 20 Energy -92.31071520 -C -0.0221573220 -0.3438851707 0.0020255199 -N -0.9662272652 0.3471936448 0.0091614025 -H 0.9934580437 -0.0019327279 -0.0106533674 -3 -Iteration 21 Energy -92.31462244 -C -0.0191540639 -0.3272192104 0.0019158804 -N -0.9781523615 0.3412045591 0.0093193720 -H 1.0023798819 -0.0126096025 -0.0107016975 -3 -Iteration 22 Energy -92.31838863 -C -0.0162060697 -0.3104106030 0.0018061876 -N -0.9895399236 0.3350370822 0.0094722872 -H 1.0108194498 -0.0232507330 -0.0107449199 -3 -Iteration 23 Energy -92.32200326 -C -0.0133051740 -0.2934688013 0.0016963959 -N -1.0003762133 0.3286957149 0.0096199772 -H 1.0187548439 -0.0338511675 -0.0107828182 -3 -Iteration 24 Energy -92.32545759 -C -0.0104440139 -0.2764038722 0.0015864712 -N -1.0106481463 0.3221849671 0.0097622781 -H 1.0261656167 -0.0444053487 -0.0108151943 -3 -Iteration 25 Energy -92.32874429 -C -0.0076161375 -0.2592265182 0.0014763922 -N -1.0203433809 0.3155094156 0.0098990339 -H 1.0330329750 -0.0549071513 -0.0108418711 -3 -Iteration 26 Energy -92.33185709 -C -0.0048160286 -0.2419480882 0.0013661509 -N -1.0294503306 0.3086737552 0.0100300963 -H 1.0393398158 -0.0653499208 -0.0108626923 -3 -Iteration 27 Energy -92.33479051 -C -0.0020390998 -0.2245806008 0.0012557526 -N -1.0379581289 0.3016828484 0.0101553241 -H 1.0450706851 -0.0757265014 -0.0108775218 -3 -Iteration 28 Energy -92.33753955 -C 0.0007183371 -0.2071367941 0.0011452157 -N -1.0458565336 0.2945417779 0.0102745819 -H 1.0502116530 -0.0860292376 -0.0108862427 -3 -Iteration 29 Energy -92.34009942 -C 0.0034590850 -0.1896302313 0.0010345720 -N -1.0531357804 0.2872559113 0.0103877382 -H 1.0547501519 -0.0962499338 -0.0108887553 -3 -Iteration 30 Energy -92.34246526 -C 0.0061850246 -0.1720754975 0.0009238682 -N -1.0597863763 0.2798309959 0.0104946628 -H 1.0586748082 -0.1063797522 -0.0108849761 -3 -Iteration 31 Energy -92.34463188 -C 0.0088969772 -0.1544885482 0.0008131688 -N -1.0657988293 0.2722733127 0.0105952229 -H 1.0619753086 -0.1164090183 -0.0108748369 -3 -Iteration 32 Energy -92.34659354 -C 0.0115944032 -0.1368873034 0.0007025624 -N -1.0711632901 0.2645899351 0.0106892783 -H 1.0646423433 -0.1263268854 -0.0108582858 -3 -Iteration 33 Energy -92.34834374 -C 0.0142748622 -0.1192926600 0.0005921719 -N -1.0758690400 0.2567891756 0.0107766735 -H 1.0666676344 -0.1361207693 -0.0108352905 -3 -Iteration 34 Energy -92.34987527 -C 0.0169330985 -0.1017302592 0.0004821729 -N -1.0799037006 0.2488813721 0.0108572255 -H 1.0680440586 -0.1457753668 -0.0108058435 -3 -Iteration 35 Energy -92.35118034 -C 0.0195595231 -0.0842337497 0.0003728253 -N -1.0832518425 0.2408803406 0.0109307020 -H 1.0687657759 -0.1552708447 -0.0107699724 -3 -Iteration 36 Energy -92.35225100 -C 0.0221374962 -0.0668514099 0.0002645336 -N -1.0858922266 0.2328063009 0.0109967775 -H 1.0688281869 -0.1645791448 -0.0107277562 -3 -Iteration 37 Energy -92.35307989 -C 0.0246375378 -0.0496616635 0.0001579815 -N -1.0877916210 0.2246927139 0.0110549346 -H 1.0682275397 -0.1736553042 -0.0106793612 -3 -Iteration 38 Energy -92.35366133 -C 0.0270015816 -0.0328189003 0.0000545152 -N -1.0888876746 0.2166065022 0.0111041833 -H 1.0669595495 -0.1824118558 -0.0106251436 -3 -Iteration 39 Energy -92.35399314 -C 0.0290768065 -0.0167610126 -0.0000421764 -N -1.0890217370 0.2087409437 0.0111418983 -H 1.0650183870 -0.1906041849 -0.0105661669 -3 -Iteration 40 Energy -92.35408315 -C 0.0299533613 -0.0048163463 -0.0001068076 -N -1.0874294816 0.2026303942 0.0111526526 -H 1.0625495768 -0.1964383016 -0.0105122900 -3 -Iteration 41 Energy -92.35408315 -C 0.0299584588 -0.0047882735 -0.0001069927 -N -1.0874314916 0.2026168300 0.0111527371 -H 1.0625464893 -0.1964528103 -0.0105121894 -3 -Iteration 42 Energy -92.35408315 -C 0.0299584727 -0.0047882767 -0.0001069920 -N -1.0874315135 0.2026168344 0.0111527369 -H 1.0625464974 -0.1964528115 -0.0105121899 +Iteration 36 Energy -92.35408361 +C 0.0304548833 -0.0047967302 -0.0001123808 +N -1.0881201190 0.1995750316 0.0111742838 +H 1.0627386922 -0.1934025552 -0.0105283481 +3 +Iteration 35 Energy -92.35408361 +C 0.0304548443 -0.0047967712 -0.0001123802 +N -1.0881201456 0.1995750596 0.0111742840 +H 1.0627387578 -0.1934025422 -0.0105283489 +3 +Iteration 34 Energy -92.35407142 +C 0.0303414127 -0.0089884139 -0.0000918224 +N -1.0872142652 0.2014294478 0.0111558345 +H 1.0619463090 -0.1910652877 -0.0105304572 +3 +Iteration 33 Energy -92.35383808 +C 0.0249852329 -0.0286612815 0.0000573975 +N -1.0863272231 0.2111647445 0.0111012708 +H 1.0664154466 -0.1811277167 -0.0106251134 +3 +Iteration 32 Energy -92.35324621 +C 0.0233232931 -0.0494157759 0.0001712159 +N -1.0812675223 0.2204013937 0.0110033887 +H 1.0630176857 -0.1696098716 -0.0106410497 +3 +Iteration 31 Energy -92.35231297 +C 0.0197881483 -0.0699690697 0.0003045854 +N -1.0772159860 0.2298287601 0.0109156491 +H 1.0625012942 -0.1584839441 -0.0106866796 +3 +Iteration 30 Energy -92.35102582 +C 0.0162110697 -0.0907872411 0.0004396340 +N -1.0723308445 0.2392356853 0.0108188905 +H 1.0611932313 -0.1470726979 -0.0107249696 +3 +Iteration 29 Energy -92.34939530 +C 0.0126359183 -0.1117100670 0.0005751439 +N -1.0666121686 0.2485429115 0.0107134791 +H 1.0590497068 -0.1354570983 -0.0107550680 +3 +Iteration 28 Energy -92.34743460 +C 0.0090821803 -0.1326488818 0.0007104933 +N -1.0600727392 0.2577095133 0.0105997430 +H 1.0560640153 -0.1236848853 -0.0107766814 +3 +Iteration 27 Energy -92.34515695 +C 0.0055583276 -0.1535475184 0.0008453309 +N -1.0527305561 0.2667116916 0.0104779888 +H 1.0522456850 -0.1117884270 -0.0107897648 +3 +Iteration 26 Energy -92.34257461 +C 0.0020673662 -0.1743669401 0.0009794439 +N -1.0446077216 0.2755347707 0.0103485257 +H 1.0476138120 -0.0997920844 -0.0107944147 +3 +Iteration 25 Energy -92.33969868 +C -0.0013906075 -0.1950781249 0.0011126973 +N -1.0357285939 0.2841692701 0.0102116637 +H 1.0421926579 -0.0877153990 -0.0107908062 +3 +Iteration 24 Energy -92.33653950 +C -0.0048173030 -0.2156585138 0.0012450061 +N -1.0261187886 0.2926089326 0.0100677117 +H 1.0360095481 -0.0755746726 -0.0107791629 +3 +Iteration 23 Energy -92.33310717 +C -0.0082159051 -0.2360900243 0.0013763216 +N -1.0158044369 0.3008495694 0.0099169747 +H 1.0290937985 -0.0633837989 -0.0107597414 +3 +Iteration 22 Energy -92.32941226 +C -0.0115911483 -0.2563578146 0.0015066272 +N -1.0048115970 0.3088882799 0.0097597509 +H 1.0214762018 -0.0511547191 -0.0107328232 +3 +Iteration 21 Energy -92.32546645 +C -0.0149495775 -0.2764494309 0.0016359371 +N -0.9931657638 0.3167228457 0.0095963292 +H 1.0131887978 -0.0388976686 -0.0106987114 +3 +Iteration 20 Energy -92.32128324 +C -0.0182998405 -0.2963541654 0.0017642964 +N -0.9808914497 0.3243512130 0.0094269871 +H 1.0042647467 -0.0266213014 -0.0106577286 +3 +Iteration 19 Energy -92.31687863 +C -0.0216529039 -0.3160625373 0.0018917814 +N -0.9680118232 0.3317710277 0.0092519887 +H 0.9947381835 -0.0143327442 -0.0106102152 +3 +Iteration 18 Energy -92.31227188 +C -0.0250221110 -0.3355658530 0.0020184979 +N -0.9545484048 0.3389792202 0.0090715835 +H 0.9846439722 -0.0020376210 -0.0105565264 +3 +Iteration 17 Energy -92.30748627 +C -0.0284230396 -0.3548558211 0.0021445779 +N -0.9405208367 0.3459716502 0.0088860052 +H 0.9740173328 0.0102599172 -0.0104970281 +3 +Iteration 16 Energy -92.30254993 +C -0.0318731581 -0.3739242174 0.0022701745 +N -0.9259467530 0.3527428329 0.0086954719 +H 0.9628933676 0.0225571307 -0.0104320914 +3 +Iteration 15 Energy -92.29749668 +C -0.0353913376 -0.3927626059 0.0023954551 +N -0.9108417873 0.3592857623 0.0085001868 +H 0.9513065814 0.0348525898 -0.0103620870 +3 +Iteration 14 Energy -92.29236671 +C -0.0389973216 -0.4113621408 0.0025205949 +N -0.8952197563 0.3655918434 0.0083003405 +H 0.9392905344 0.0471460436 -0.0102873805 +3 +Iteration 13 Energy -92.28720712 +C -0.0427112793 -0.4297134756 0.0026457712 +N -0.8790930391 0.3716509264 0.0080961152 +H 0.9268777749 0.0594382954 -0.0102083315 +3 +Iteration 12 Energy -92.28207222 +C -0.0465535569 -0.4478068078 0.0027711613 +N -0.8624731514 0.3774514204 0.0078876902 +H 0.9141001648 0.0717311336 -0.0101252966 +3 +Iteration 11 Energy -92.27702322 +C -0.0505446959 -0.4656320693 0.0028969433 +N -0.8453714775 0.3829804480 0.0076752493 +H 0.9009896299 0.0840273676 -0.0100386377 +3 +Iteration 10 Energy -92.27212747 +C -0.0547057294 -0.4831792562 0.0030233011 +N -0.8278001014 0.3882239975 0.0074589892 +H 0.8875792873 0.0963310049 -0.0099487354 +3 +Iteration 9 Energy -92.26745697 +C -0.0590587145 -0.5004388716 0.0031504321 +N -0.8097726720 0.3931670295 0.0072391283 +H 0.8739048430 0.1086475883 -0.0098560055 +3 +Iteration 8 Energy -92.26308608 +C -0.0636274346 -0.5174024493 0.0032785572 +N -0.7913052503 0.3977935074 0.0070159162 +H 0.8600061415 0.1209846881 -0.0097609186 +3 +Iteration 7 Energy -92.25908868 +C -0.0684381966 -0.5340631298 0.0034079325 +N -0.7724171183 0.4020863352 0.0067896425 +H 0.8459287714 0.1333525408 -0.0096640201 +3 +Iteration 6 Energy -92.25553475 +C -0.0735206141 -0.5504162520 0.0035388601 +N -0.7531315308 0.4060272066 0.0065606457 +H 0.8317256014 0.1457647916 -0.0095659509 +3 +Iteration 5 Energy -92.25248668 +C -0.0789078600 -0.5664597826 0.0036716934 +N -0.7334762067 0.4095964488 0.0063293196 +H 0.8174575231 0.1582390801 -0.0094674581 +3 +Iteration 4 Energy -92.24999566 +C -0.0846311573 -0.5821925116 0.0038067681 +N -0.7134809297 0.4127737437 0.0060960833 +H 0.8031855434 0.1707945141 -0.0093692966 +3 +Iteration 3 Energy -92.24809801 +C -0.0904462157 -0.5974963957 0.0039408696 +N -0.6930388977 0.4155829861 0.0058596592 +H 0.7885585699 0.1832891558 -0.0092669740 +3 +Iteration 2 Energy -92.24681885 +C -0.0988591369 -0.6134400726 0.0041063202 +N -0.6737909780 0.4175896091 0.0056399885 +H 0.7777235714 0.1972262097 -0.0092127538 +3 +Iteration 1 Energy -92.24617540 +C -0.1012348110 -0.6247081901 0.0041842221 +N -0.6526921761 0.4198642525 0.0053988482 +H 0.7590004436 0.2062196837 -0.0090495154 +3 +Iteration 0 Energy -92.24604268 +C -0.1088783634 -0.6365101639 0.0043221742 +N -0.6393457902 0.4205365638 0.0052498438 +H 0.7532976101 0.2173493463 -0.0090384631 +3 +Iteration 1 Energy -92.24632346 +C -0.1162923826 -0.6510128752 0.0044700636 +N -0.6186304268 0.4219453856 0.0050168856 +H 0.7399962659 0.2304432359 -0.0089533943 +3 +Iteration 2 Energy -92.24714692 +C -0.1243467273 -0.6645535601 0.0046205196 +N -0.5970865089 0.4222151005 0.0047801192 +H 0.7265066927 0.2437142058 -0.0088670839 +3 +Iteration 3 Energy -92.24845906 +C -0.1331062768 -0.6784674023 0.0047804048 +N -0.5759814573 0.4222997955 0.0045490032 +H 0.7141611906 0.2575433530 -0.0087958532 +3 +Iteration 4 Energy -92.25019381 +C -0.1426738341 -0.6921207193 0.0049479227 +N -0.5550104288 0.4216439526 0.0043227653 +H 0.7027577194 0.2718525129 -0.0087371332 +3 +Iteration 5 Energy -92.25228254 +C -0.1531769092 -0.7056464043 0.0051250797 +N -0.5344246661 0.4202309163 0.0041042289 +H 0.6926750317 0.2867912343 -0.0086957537 +3 +Iteration 6 Energy -92.25466120 +C -0.1647168035 -0.7190876271 0.0053131822 +N -0.5144370526 0.4179859203 0.0038960657 +H 0.6842273126 0.3024774530 -0.0086756930 +3 +Iteration 7 Energy -92.25727890 +C -0.1773527597 -0.7324638780 0.0055129677 +N -0.4952675982 0.4148394575 0.0037010014 +H 0.6776938144 0.3190001667 -0.0086804142 +3 +Iteration 8 Energy -92.26010285 +C -0.1910681915 -0.7457626668 0.0057241973 +N -0.4770958566 0.4107502793 0.0035211889 +H 0.6732375046 0.3363881337 -0.0087118313 +3 +Iteration 9 Energy -92.26311597 +C -0.2057527306 -0.7589365451 0.0059454458 +N -0.4599948299 0.4057247212 0.0033573972 +H 0.6708210170 0.3545875702 -0.0087692881 +3 +Iteration 10 Energy -92.26630770 +C -0.2212192764 -0.7719121425 0.0061743295 +N -0.4438900213 0.3998203709 0.0032085464 +H 0.6701827541 0.3734675178 -0.0088493210 +3 +Iteration 11 Energy -92.26966450 +C -0.2372511688 -0.7846063507 0.0064080969 +N -0.4285839357 0.3931283964 0.0030720573 +H 0.6709085611 0.3928537005 -0.0089465993 +3 +Iteration 12 Energy -92.27316549 +C -0.2536498828 -0.7969402661 0.0066442141 +N -0.4138317353 0.3857459479 0.0029448055 +H 0.6725550746 0.4125700645 -0.0090554647 +3 +Iteration 13 Energy -92.27678288 +C -0.2702590547 -0.8088462058 0.0068806596 +N -0.3994120367 0.3777558859 0.0028239890 +H 0.6747445479 0.4324660661 -0.0091710938 +3 +Iteration 14 Energy -92.28048415 +C -0.2869647493 -0.8202688965 0.0071159333 +N -0.3851583870 0.3692204340 0.0027075013 +H 0.6771965928 0.4524242087 -0.0092898797 +3 +Iteration 15 Energy -92.28423428 +C -0.3036849117 -0.8311638084 0.0073489328 +N -0.3709581157 0.3601842156 0.0025939050 +H 0.6797164839 0.4723553390 -0.0094092828 +3 +Iteration 16 Energy -92.28799775 +C -0.3203582351 -0.8414949006 0.0075788218 +N -0.3567386759 0.3506801726 0.0024822551 +H 0.6821703674 0.4921904743 -0.0095275220 +3 +Iteration 17 Energy -92.29174025 +C -0.3369361146 -0.8512328288 0.0078049337 +N -0.3424538969 0.3407348985 0.0023719244 +H 0.6844634680 0.5118736764 -0.0096433032 +3 +Iteration 18 Energy -92.29543012 +C -0.3533777300 -0.8603538420 0.0080267128 +N -0.3280738316 0.3303725182 0.0022624743 +H 0.6865250181 0.5313570699 -0.0097556322 +3 +Iteration 19 Energy -92.29903948 +C -0.3696473629 -0.8688392469 0.0082436825 +N -0.3135780424 0.3196172540 0.0021535698 +H 0.6882988618 0.5505977391 -0.0098636973 +3 +Iteration 20 Energy -92.30254487 +C -0.3857131425 -0.8766752225 0.0084554306 +N -0.2989513838 0.3084949556 0.0020449260 +H 0.6897379828 0.5695560131 -0.0099668017 +3 +Iteration 21 Energy -92.30592752 +C -0.4015466464 -0.8838527599 0.0086616049 +N -0.2841814875 0.2970337893 0.0019362781 +H 0.6908015904 0.5881947168 -0.0100643281 +3 +Iteration 22 Energy -92.30917314 +C -0.4171229365 -0.8903675203 0.0088619128 +N -0.2692574029 0.2852642261 0.0018273658 +H 0.6914537959 0.6064790404 -0.0101557237 +3 +Iteration 23 Energy -92.31227156 +C -0.4324207000 -0.8962194344 0.0090561210 +N -0.2541690027 0.2732184776 0.0017179300 +H 0.6916631592 0.6243767030 -0.0102404961 +3 +Iteration 24 Energy -92.31521598 +C -0.4474222521 -0.9014119493 0.0092440520 +N -0.2389068603 0.2609295686 0.0016077155 +H 0.6914025689 0.6418581269 -0.0103182126 +3 +Iteration 25 Energy -92.31800232 +C -0.4621132603 -0.9059509299 0.0094255762 +N -0.2234623870 0.2484302568 0.0014964773 +H 0.6906491038 0.6588964193 -0.0103884986 +3 +Iteration 26 Energy -92.32062844 +C -0.4764821696 -0.9098433316 0.0096005993 +N -0.2078280815 0.2357520037 0.0013839886 +H 0.6893837076 0.6754670741 -0.0104510329 +3 +Iteration 27 Energy -92.32309347 +C -0.4905194040 -0.9130958367 0.0097690473 +N -0.1919978070 0.2229241519 0.0012700469 +H 0.6875906676 0.6915474310 -0.0105055393 +3 +Iteration 28 Energy -92.32539715 +C -0.5042164810 -0.9157136584 0.0099308517 +N -0.1759670522 0.2099733976 0.0011544798 +H 0.6852569897 0.7071160070 -0.0105517767 +3 +Iteration 29 Energy -92.32753934 +C -0.5175651757 -0.9176996744 0.0100859357 +N -0.1597331562 0.1969235852 0.0010371486 +H 0.6823717884 0.7221518355 -0.0105895294 +3 +Iteration 30 Energy -92.32951952 +C -0.5305568368 -0.9190539732 0.0102342052 +N -0.1432955128 0.1837957913 0.0009179493 +H 0.6789258060 0.7366339281 -0.0106185996 +3 +Iteration 31 Energy -92.33133649 +C -0.5431818935 -0.9197738118 0.0103755429 +N -0.1266557699 0.1706086517 0.0007968141 +H 0.6749111200 0.7505409062 -0.0106388021 +3 +Iteration 32 Energy -92.33298805 +C -0.5554295288 -0.9198539250 0.0105098063 +N -0.1098180914 0.1573788795 0.0006737115 +H 0.6703210767 0.7638507917 -0.0106499629 +3 +Iteration 33 Energy -92.33447090 +C -0.5672874222 -0.9192871037 0.0106368274 +N -0.0927895796 0.1441219877 0.0005486476 +H 0.6651504583 0.7765408622 -0.0106519202 +3 +Iteration 34 Energy -92.33578062 +C -0.5787413811 -0.9180649906 0.0107564127 +N -0.0755811068 0.1308533512 0.0004216705 +H 0.6593959445 0.7885873856 -0.0106445283 +3 +Iteration 35 Energy -92.33691176 +C -0.5897744825 -0.9161791598 0.0108683382 +N -0.0582091454 0.1175900547 0.0002928815 +H 0.6530570844 0.7999648513 -0.0106276648 +3 +Iteration 36 Energy -92.33785813 +C -0.6003648429 -0.9136228449 0.0109723335 +N -0.0407001941 0.1043547781 0.0001624658 +H 0.6461384935 0.8106438129 -0.0106012443 +3 +Iteration 37 Energy -92.33861325 +C -0.6104795168 -0.9103945972 0.0110680318 +N -0.0231025350 0.0911854689 0.0000307762 +H 0.6386555083 0.8205848745 -0.0105652531 +3 +Iteration 38 Energy -92.33917110 +C -0.6200563340 -0.9065084249 0.0111548180 +N -0.0055212749 0.0781633353 -0.0001014123 +H 0.6306510654 0.8297208359 -0.0105198508 +3 +Iteration 39 Energy -92.33953197 +C -0.6284488885 -0.9011481635 0.0112218641 +N 0.0124543897 0.0659415421 -0.0002416011 +H 0.6210679553 0.8365823677 -0.0104467081 +3 +Iteration 40 Energy -92.33962651 +C -0.6374543470 -0.8975154744 0.0113035723 +N 0.0267899280 0.0509095904 -0.0003290441 +H 0.6157378755 0.8479816302 -0.0104409733 +3 +Iteration 41 Energy -92.33970705 +C -0.6398664254 -0.8937888862 0.0113127672 +N 0.0365720181 0.0490780529 -0.0004275434 +H 0.6083678638 0.8460865795 -0.0103516689 +3 +Iteration 42 Energy -92.33971310 +C -0.6400260514 -0.8940156643 0.0113155575 +N 0.0361265882 0.0484573118 -0.0004198131 +H 0.6089729196 0.8469340987 -0.0103621894 +3 +Iteration 43 Energy -92.33971310 +C -0.6400260530 -0.8940156536 0.0113155574 +N 0.0361265868 0.0484572816 -0.0004198130 +H 0.6089729226 0.8469341182 -0.0103621896 diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/command.sh b/examples/1-simple-examples/hcn_hnc_irc/terachem/command.sh index ee46b1ce..a0370d6a 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/terachem/command.sh +++ b/examples/1-simple-examples/hcn_hnc_irc/terachem/command.sh @@ -1 +1,3 @@ -geometric-optimize --irc yes --engine tera tera.in +geometric-optimize hcn.terain --irc yes --trust 0.05 --engine tera --converge set GAU_LOOSE + + diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera.in b/examples/1-simple-examples/hcn_hnc_irc/terachem/hcn.terain similarity index 100% rename from examples/1-simple-examples/hcn_hnc_irc/terachem/tera.in rename to examples/1-simple-examples/hcn_hnc_irc/terachem/hcn.terain diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.vdata_first b/examples/1-simple-examples/hcn_hnc_irc/terachem/hcn_irc.vdata_first similarity index 84% rename from examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.vdata_first rename to examples/1-simple-examples/hcn_hnc_irc/terachem/hcn_irc.vdata_first index 3117c90d..4382021a 100644 --- a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.vdata_first +++ b/examples/1-simple-examples/hcn_hnc_irc/terachem/hcn_irc.vdata_first @@ -33,18 +33,18 @@ # # == Summary of harmonic free energy analysis == # Note: Rotational symmetry is set to 1 regardless of true symmetry -# 1 Imaginary Frequencies (cm^-1): 1216.114i +# 1 Imaginary Frequencies (cm^-1): 1216.006i # Note: Free energy does not include contribution from imaginary mode(s) # # Free energy contributions calculated at @ 300.00 K: -# Zero-point vibrational energy: 6.5456 kcal/mol +# Zero-point vibrational energy: 6.5455 kcal/mol # H (Trans + Rot + Vib = Tot): 1.4904 + 0.8942 + 0.0003 = 2.3849 kcal/mol # S (Trans + Rot + Vib = Tot): 35.8748 + 16.3847 + 0.0010 = 52.2605 cal/mol/K # TS (Trans + Rot + Vib = Tot): 10.7624 + 4.9154 + 0.0003 = 15.6782 kcal/mol # # Ground State Electronic Energy : E0 = -92.24604268 au ( -57885.2657 kcal/mol) -# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075304 au ( -6.7476 kcal/mol) -# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25679572 au ( -57892.0134 kcal/mol) +# Free Energy Correction (Harmonic) : ZPVE + [H-TS]_T,R,V = -0.01075318 au ( -6.7477 kcal/mol) +# Gibbs Free Energy (Harmonic) : E0 + ZPVE + [H-TS]_T,R,V = -92.25679585 au ( -57892.0134 kcal/mol) # 3 @@ -53,17 +53,17 @@ Iteration 0 Energy -92.24604268 N -0.6393457902 0.4205365638 0.0052498438 H 0.7532976101 0.2173493463 -0.0090384631 --1216.113839 --0.043268 -0.081665 0.000849 - 0.075262 0.009624 -0.000867 --0.530281 0.839344 0.001929 +-1216.006021 +-0.043270 -0.081675 0.000849 + 0.075258 0.009629 -0.000867 +-0.530192 0.839399 0.001928 - 2126.646109 --0.334949 0.646985 0.000680 - 0.302429 -0.563679 -0.000708 --0.211459 0.123702 0.001742 + 2126.585448 +-0.334891 0.646933 0.000680 + 0.302419 -0.563619 -0.000709 +-0.212009 0.123495 0.001749 - 2452.069188 - 0.057558 0.023438 -0.000737 - 0.012740 0.015959 -0.000213 --0.862862 -0.501050 0.011742 + 2452.068631 +-0.057571 -0.023398 0.000737 +-0.012731 -0.015989 0.000213 + 0.862903 0.500979 -0.011742 diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/hcn_irc.xyz b/examples/1-simple-examples/hcn_hnc_irc/terachem/hcn_irc.xyz new file mode 100644 index 00000000..ed199377 --- /dev/null +++ b/examples/1-simple-examples/hcn_hnc_irc/terachem/hcn_irc.xyz @@ -0,0 +1,400 @@ +3 +Iteration 36 Energy -92.35408360 +C 0.0304576867 -0.0047968270 -0.0001124110 +N -1.0881165049 0.1995730845 0.0111742533 +H 1.0627322747 -0.1934005113 -0.0105282874 +3 +Iteration 35 Energy -92.35408360 +C 0.0304576098 -0.0047972468 -0.0001124082 +N -1.0881164674 0.1995732859 0.0111742519 +H 1.0627323141 -0.1934002929 -0.0105282888 +3 +Iteration 34 Energy -92.35407150 +C 0.0303430166 -0.0089742530 -0.0000919052 +N -1.0872212657 0.2014227074 0.0111559421 +H 1.0619517056 -0.1910727083 -0.0105304820 +3 +Iteration 33 Energy -92.35383834 +C 0.0249883487 -0.0286491712 0.0000573076 +N -1.0863276803 0.2111576972 0.0111013083 +H 1.0664127882 -0.1811327799 -0.0106250610 +3 +Iteration 32 Energy -92.35324667 +C 0.0233249030 -0.0494024379 0.0001711368 +N -1.0812661182 0.2203934916 0.0110034097 +H 1.0630146716 -0.1696153075 -0.0106409917 +3 +Iteration 31 Energy -92.35231366 +C 0.0197896748 -0.0699553227 0.0003045053 +N -1.0772150443 0.2298207591 0.0109156757 +H 1.0624988260 -0.1584896902 -0.0106866261 +3 +Iteration 30 Energy -92.35102672 +C 0.0162124977 -0.0907735342 0.0004395552 +N -1.0723304182 0.2392278153 0.0108189221 +H 1.0611913770 -0.1470785349 -0.0107249225 +3 +Iteration 29 Energy -92.34939637 +C 0.0126372163 -0.1116966067 0.0005750677 +N -1.0666121652 0.2485352583 0.0107135143 +H 1.0590484054 -0.1354629054 -0.0107550270 +3 +Iteration 28 Energy -92.34743582 +C 0.0090833541 -0.1326357908 0.0007104202 +N -1.0600731206 0.2577021307 0.0105997812 +H 1.0560632229 -0.1236905937 -0.0107766465 +3 +Iteration 27 Energy -92.34515829 +C 0.0055593818 -0.1535348641 0.0008452611 +N -1.0527312701 0.2667046039 0.0104780293 +H 1.0522453448 -0.1117939937 -0.0107897354 +3 +Iteration 26 Energy -92.34257605 +C 0.0020683072 -0.1743547625 0.0009793774 +N -1.0446087106 0.2755279880 0.0103485678 +H 1.0476138599 -0.0997974793 -0.0107943903 +3 +Iteration 25 Energy -92.33970021 +C -0.0013897739 -0.1950664482 0.0011126344 +N -1.0357298006 0.2841627948 0.0102117068 +H 1.0421930310 -0.0877206004 -0.0107907863 +3 +Iteration 24 Energy -92.33654108 +C -0.0048165719 -0.2156473517 0.0012449467 +N -1.0261201567 0.2926027621 0.0100677551 +H 1.0360101851 -0.0755796642 -0.0107791469 +3 +Iteration 23 Energy -92.33310880 +C -0.0082152709 -0.2360793838 0.0013762656 +N -1.0158059119 0.3008436982 0.0099170179 +H 1.0290946393 -0.0633885683 -0.0107597286 +3 +Iteration 22 Energy -92.32941391 +C -0.0115906052 -0.2563476973 0.0015065746 +N -1.0048131259 0.3088827004 0.0097597933 +H 1.0214771875 -0.0511592568 -0.0107328131 +3 +Iteration 21 Energy -92.32546810 +C -0.0149491205 -0.2764398352 0.0016358879 +N -0.9931672968 0.3167175491 0.0095963704 +H 1.0131898738 -0.0389019676 -0.0106987033 +3 +Iteration 20 Energy -92.32128488 +C -0.0182994668 -0.2963450871 0.0017642505 +N -0.9808929405 0.3243461897 0.0094270266 +H 1.0042658639 -0.0266253564 -0.0106577222 +3 +Iteration 19 Energy -92.31688023 +C -0.0216526200 -0.3160539715 0.0018917388 +N -0.9680132326 0.3317662680 0.0092520261 +H 0.9947393092 -0.0143365503 -0.0106102100 +3 +Iteration 18 Energy -92.31227343 +C -0.0250218925 -0.3355577935 0.0020184583 +N -0.9545496933 0.3389747181 0.0090716183 +H 0.9846450423 -0.0020411784 -0.0105565217 +3 +Iteration 17 Energy -92.30748775 +C -0.0284228778 -0.3548482610 0.0021445412 +N -0.9405219691 0.3459673980 0.0088860371 +H 0.9740183034 0.0102566091 -0.0104970235 +3 +Iteration 16 Energy -92.30255133 +C -0.0318730448 -0.3739171491 0.0022701407 +N -0.9259476975 0.3527388235 0.0086955007 +H 0.9628941987 0.0225540718 -0.0104320864 +3 +Iteration 15 Energy -92.29749798 +C -0.0353912645 -0.3927560216 0.0023954240 +N -0.9108425147 0.3592819889 0.0085002121 +H 0.9513072357 0.0348497789 -0.0103620812 +3 +Iteration 14 Energy -92.29236788 +C -0.0389972805 -0.4113560325 0.0025205663 +N -0.8952202397 0.3655882998 0.0083003621 +H 0.9392909767 0.0471434789 -0.0102873735 +3 +Iteration 13 Energy -92.28720816 +C -0.0427112616 -0.4297078351 0.0026457450 +N -0.8790932535 0.3716476069 0.0080961329 +H 0.9268779716 0.0594359744 -0.0102083230 +3 +Iteration 12 Energy -92.28207312 +C -0.0465535537 -0.4478016269 0.0027711374 +N -0.8624730743 0.3774483199 0.0078877037 +H 0.9141000845 0.0717290532 -0.0101252862 +3 +Iteration 11 Energy -92.27702397 +C -0.0505446970 -0.4656273402 0.0028969215 +N -0.8453710880 0.3829775626 0.0076752584 +H 0.9009892415 0.0840255238 -0.0100386250 +3 +Iteration 10 Energy -92.27212807 +C -0.0547057627 -0.4831749421 0.0030232816 +N -0.8277993404 0.3882212891 0.0074589933 +H 0.8875785595 0.0963293992 -0.0099487201 +3 +Iteration 9 Energy -92.26745741 +C -0.0590587537 -0.5004349835 0.0031504146 +N -0.8097715502 0.3931645157 0.0072391276 +H 0.8739037604 0.1086462140 -0.0098559874 +3 +Iteration 8 Energy -92.26308637 +C -0.0636274775 -0.5173989783 0.0032785417 +N -0.7913037519 0.3977911820 0.0070159105 +H 0.8600046859 0.1209835424 -0.0097608974 +3 +Iteration 7 Energy -92.25908885 +C -0.0684382436 -0.5340600687 0.0034079189 +N -0.7724152324 0.4020841929 0.0067896317 +H 0.8459269325 0.1333516220 -0.0096639957 +3 +Iteration 6 Energy -92.25553481 +C -0.0735206688 -0.5504135968 0.0035388485 +N -0.7531292536 0.4060252435 0.0065606298 +H 0.8317233789 0.1457640995 -0.0095659234 +3 +Iteration 5 Energy -92.25248665 +C -0.0789079297 -0.5664575358 0.0036716838 +N -0.7334735467 0.4095946649 0.0063292987 +H 0.8174549329 0.1582386172 -0.0094674276 +3 +Iteration 4 Energy -92.24999559 +C -0.0846312647 -0.5821906994 0.0038067610 +N -0.7134779292 0.4127721504 0.0060960578 +H 0.8031826504 0.1707942952 -0.0093692639 +3 +Iteration 3 Energy -92.24809792 +C -0.0904460954 -0.5974949792 0.0039408618 +N -0.6930355579 0.4155816925 0.0058596287 +H 0.7885551098 0.1832890329 -0.0092669356 +3 +Iteration 2 Energy -92.24681877 +C -0.0988590907 -0.6134393205 0.0041063162 +N -0.6737868442 0.4175885406 0.0056399482 +H 0.7777193913 0.1972265261 -0.0092127095 +3 +Iteration 1 Energy -92.24617537 +C -0.1012345052 -0.6247055289 0.0041842065 +N -0.6526900031 0.4198624750 0.0053988326 +H 0.7589979647 0.2062188001 -0.0090494843 +3 +Iteration 0 Energy -92.24604268 +C -0.1088783634 -0.6365101639 0.0043221742 +N -0.6393457902 0.4205365638 0.0052498438 +H 0.7532976101 0.2173493463 -0.0090384631 +3 +Iteration 1 Energy -92.24632345 +C -0.1162949047 -0.6510178844 0.0044701143 +N -0.6186345523 0.4219475430 0.0050169208 +H 0.7400029135 0.2304460877 -0.0089534802 +3 +Iteration 2 Energy -92.24714691 +C -0.1243457999 -0.6645544221 0.0046205135 +N -0.5970872499 0.4222164584 0.0047801210 +H 0.7265065063 0.2437137099 -0.0088670796 +3 +Iteration 3 Energy -92.24845909 +C -0.1331071566 -0.6784700939 0.0047804269 +N -0.5759831883 0.4223011792 0.0045490158 +H 0.7141638013 0.2575446609 -0.0087958878 +3 +Iteration 4 Energy -92.25019391 +C -0.1426750995 -0.6921240866 0.0049479521 +N -0.5550116772 0.4216454467 0.0043227721 +H 0.7027602333 0.2718543861 -0.0087371693 +3 +Iteration 5 Energy -92.25228274 +C -0.1531787151 -0.7056502641 0.0051251173 +N -0.5344253757 0.4202322700 0.0041042304 +H 0.6926775473 0.2867937403 -0.0086957928 +3 +Iteration 6 Energy -92.25466153 +C -0.1647191899 -0.7190919311 0.0053132282 +N -0.5144372028 0.4179870617 0.0038960621 +H 0.6842298492 0.3024806157 -0.0086757353 +3 +Iteration 7 Energy -92.25727936 +C -0.1773557718 -0.7324685897 0.0055130224 +N -0.4952671883 0.4148403156 0.0037009929 +H 0.6776964166 0.3190040203 -0.0086804604 +3 +Iteration 8 Energy -92.26010346 +C -0.1910718609 -0.7457677484 0.0057242609 +N -0.4770948939 0.4107507898 0.0035211760 +H 0.6732402113 0.3363927048 -0.0087118820 +3 +Iteration 9 Energy -92.26311673 +C -0.2057571027 -0.7589419775 0.0059455186 +N -0.4599933849 0.4057248201 0.0033573809 +H 0.6708239441 0.3545929036 -0.0087693446 +3 +Iteration 10 Energy -92.26630861 +C -0.2212243167 -0.7719178578 0.0061744109 +N -0.4438880632 0.3998200261 0.0032085266 +H 0.6701858364 0.3734735779 -0.0088493826 +3 +Iteration 11 Energy -92.26966557 +C -0.2372568045 -0.7846122921 0.0064081859 +N -0.4285813896 0.3931276238 0.0030720330 +H 0.6709116506 0.3928604145 -0.0089466640 +3 +Iteration 12 Energy -92.27316671 +C -0.2536560684 -0.7969464093 0.0066443100 +N -0.4138285850 0.3857447654 0.0029447765 +H 0.6725581099 0.4125773901 -0.0090555317 +3 +Iteration 13 Energy -92.27678424 +C -0.2702657862 -0.8088525349 0.0068807624 +N -0.3994083433 0.3777542742 0.0028239561 +H 0.6747475860 0.4324740069 -0.0091711636 +3 +Iteration 14 Energy -92.28048563 +C -0.2869720135 -0.8202753389 0.0071160424 +N -0.3851541746 0.3692183357 0.0027074649 +H 0.6771996446 0.4524327494 -0.0092899524 +3 +Iteration 15 Energy -92.28423588 +C -0.3036926863 -0.8311703851 0.0073490481 +N -0.3709534080 0.3601816681 0.0025938652 +H 0.6797195509 0.4723644631 -0.0094093584 +3 +Iteration 16 Energy -92.28799945 +C -0.3203664913 -0.8415015635 0.0075789427 +N -0.3567334616 0.3506771623 0.0024822120 +H 0.6821734094 0.4922001474 -0.0095275998 +3 +Iteration 17 Energy -92.29174203 +C -0.3369448238 -0.8512395305 0.0078050598 +N -0.3424481645 0.3407314130 0.0023718778 +H 0.6844664448 0.5118838637 -0.0096433827 +3 +Iteration 18 Energy -92.29543197 +C -0.3533868633 -0.8603605355 0.0080268435 +N -0.3280675694 0.3303685463 0.0022624242 +H 0.6865278891 0.5313677354 -0.0097557127 +3 +Iteration 19 Energy -92.29904137 +C -0.3696568912 -0.8688458858 0.0082438172 +N -0.3135712404 0.3196127856 0.0021535160 +H 0.6883015881 0.5506088464 -0.0098637783 +3 +Iteration 20 Energy -92.30254679 +C -0.3857230360 -0.8766817604 0.0084555689 +N -0.2989440324 0.3084899824 0.0020448686 +H 0.6897405249 0.5695675242 -0.0099668825 +3 +Iteration 21 Energy -92.30592944 +C -0.4015568746 -0.8838591516 0.0086617462 +N -0.2841735782 0.2970283056 0.0019362169 +H 0.6908039094 0.5882065921 -0.0100644082 +3 +Iteration 22 Energy -92.30917507 +C -0.4171334674 -0.8903737208 0.0088620565 +N -0.2692489261 0.2852582302 0.0018273008 +H 0.6914558500 0.6064912368 -0.0101558024 +3 +Iteration 23 Energy -92.31227347 +C -0.4324315009 -0.8962254010 0.0090562666 +N -0.2541599488 0.2732119722 0.0017178610 +H 0.6916649062 0.6243891749 -0.0102405727 +3 +Iteration 24 Energy -92.31521786 +C -0.4474332898 -0.9014176409 0.0092441989 +N -0.2388972211 0.2609225598 0.0016076424 +H 0.6914039674 0.6418708273 -0.0103182864 +3 +Iteration 25 Energy -92.31800417 +C -0.4621245010 -0.9059563070 0.0094257239 +N -0.2234521539 0.2484227553 0.0014964000 +H 0.6906501113 0.6589092979 -0.0103885690 +3 +Iteration 26 Energy -92.32063024 +C -0.4764935792 -0.9098483567 0.0096007471 +N -0.2078172479 0.2357440238 0.0013839069 +H 0.6893842835 0.6754800791 -0.0104510991 +3 +Iteration 27 Energy -92.32309521 +C -0.4905309473 -0.9131004729 0.0097691949 +N -0.1919863675 0.2229157113 0.0012699607 +H 0.6875907713 0.6915605078 -0.0105056007 +3 +Iteration 28 Energy -92.32539883 +C -0.5042281218 -0.9157178697 0.0099309984 +N -0.1759550044 0.2099645171 0.0011543891 +H 0.6852565827 0.7071290988 -0.0105518325 +3 +Iteration 29 Energy -92.32754094 +C -0.5175768759 -0.9177034245 0.0100860809 +N -0.1597205022 0.1969142878 0.0010370531 +H 0.6823708347 0.7221648829 -0.0105895791 +3 +Iteration 30 Energy -92.32952105 +C -0.5305685558 -0.9190572259 0.0102343483 +N -0.1432822588 0.1837861039 0.0009178490 +H 0.6789242712 0.7366468682 -0.0106186424 +3 +Iteration 31 Energy -92.33133792 +C -0.5431935880 -0.9197765319 0.0103756833 +N -0.1266419303 0.1705986046 0.0007967091 +H 0.6749089748 0.7505536735 -0.0106388375 +3 +Iteration 32 Energy -92.33298937 +C -0.5554411498 -0.9198560772 0.0105099432 +N -0.1098036885 0.1573685086 0.0006736018 +H 0.6703182948 0.7638633149 -0.0106499902 +3 +Iteration 33 Energy -92.33447211 +C -0.5672989162 -0.9192886564 0.0106369602 +N -0.0927746510 0.1441113351 0.0005485335 +H 0.6651470237 0.7765530676 -0.0106519389 +3 +Iteration 34 Energy -92.33578169 +C -0.5787526840 -0.9180659151 0.0107565405 +N -0.0755657071 0.1308424735 0.0004215523 +H 0.6593918477 0.7885991878 -0.0106445379 +3 +Iteration 35 Energy -92.33691268 +C -0.5897855181 -0.9161794389 0.0108684601 +N -0.0581933660 0.1175790244 0.0002927598 +H 0.6530523407 0.7999761607 -0.0106276650 +3 +Iteration 36 Energy -92.33785888 +C -0.6003755029 -0.9136224701 0.0109724483 +N -0.0406841736 0.1043437155 0.0001623416 +H 0.6461331330 0.8106545007 -0.0106012350 +3 +Iteration 37 Energy -92.33861383 +C -0.6104896541 -0.9103936127 0.0110681381 +N -0.0230865513 0.0911745448 0.0000306518 +H 0.6386496619 0.8205948141 -0.0105652350 +3 +Iteration 38 Energy -92.33917148 +C -0.6200656353 -0.9065069063 0.0111549127 +N -0.0055058133 0.0781529859 -0.0001015337 +H 0.6306449052 0.8297296666 -0.0105198241 +3 +Iteration 39 Energy -92.33953218 +C -0.6284562268 -0.9011450002 0.0112219297 +N 0.0124679222 0.0659310444 -0.0002417006 +H 0.6210617611 0.8365897020 -0.0104466742 +3 +Iteration 40 Energy -92.33962662 +C -0.6374609535 -0.8975094740 0.0113036168 +N 0.0268062709 0.0508987759 -0.0003291729 +H 0.6157281391 0.8479864443 -0.0104408890 +3 +Iteration 41 Energy -92.33970703 +C -0.6398659664 -0.8937883474 0.0113127597 +N 0.0365730160 0.0490794514 -0.0004275608 +H 0.6083664069 0.8460846422 -0.0103516441 +3 +Iteration 42 Energy -92.33971310 +C -0.6400257611 -0.8940153669 0.0113155529 +N 0.0361270790 0.0484580017 -0.0004198217 +H 0.6089721386 0.8469331114 -0.0103621763 +3 +Iteration 43 Energy -92.33971310 +C -0.6400257651 -0.8940153638 0.0113155529 +N 0.0361270878 0.0484579951 -0.0004198217 +H 0.6089721337 0.8469331149 -0.0103621763 diff --git a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz b/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz deleted file mode 100644 index 88eae091..00000000 --- a/examples/1-simple-examples/hcn_hnc_irc/terachem/tera_irc.xyz +++ /dev/null @@ -1,450 +0,0 @@ -3 -Iteration 48 Energy -92.33971298 -C -0.6430495628 -0.8915390187 0.0113371982 -N 0.0360193055 0.0479515241 -0.0004163113 -H 0.6121037138 0.8449632408 -0.0103873320 -3 -Iteration 47 Energy -92.33971298 -C -0.6430495626 -0.8915390163 0.0113371973 -N 0.0360193066 0.0479515208 -0.0004163093 -H 0.6121037126 0.8449632417 -0.0103873331 -3 -Iteration 46 Energy -92.33970967 -C -0.6423314929 -0.8930047098 0.0113361020 -N 0.0334257360 0.0497208459 -0.0003961099 -H 0.6139792134 0.8446596101 -0.0104064372 -3 -Iteration 45 Energy -92.33961120 -C -0.6359910522 -0.8982591109 0.0112910023 -N 0.0195001016 0.0610100481 -0.0002958991 -H 0.6215644071 0.8386248090 -0.0104615483 -3 -Iteration 44 Energy -92.33938052 -C -0.6301396251 -0.9033571114 0.0112505278 -N 0.0060293676 0.0711478562 -0.0001953551 -H 0.6291837140 0.8335850014 -0.0105216178 -3 -Iteration 43 Energy -92.33899811 -C -0.6230413633 -0.9076785817 0.0111928439 -N -0.0079434727 0.0825790164 -0.0000952825 -H 0.6360582925 0.8264753115 -0.0105640065 -3 -Iteration 42 Energy -92.33848513 -C -0.6161952572 -0.9120682743 0.0111382310 -N -0.0221718061 0.0931689720 0.0000114600 -H 0.6434405198 0.8202750485 -0.0106161362 -3 -Iteration 41 Energy -92.33783104 -C -0.6082160272 -0.9152477159 0.0110656530 -N -0.0360769722 0.1047712558 0.0001100042 -H 0.6493664559 0.8118522062 -0.0106421023 -3 -Iteration 40 Energy -92.33708184 -C -0.6013118614 -0.9191219548 0.0110080299 -N -0.0504849756 0.1144196796 0.0002230501 -H 0.6568702935 0.8060780214 -0.0106975250 -3 -Iteration 39 Energy -92.33620626 -C -0.5918768407 -0.9199344666 0.0109086284 -N -0.0626893585 0.1269497391 0.0002987250 -H 0.6596396557 0.7943604737 -0.0106737986 -3 -Iteration 38 Energy -92.33519541 -C -0.5839388471 -0.9231693229 0.0108367566 -N -0.0783459027 0.1369354547 0.0004238658 -H 0.6673582062 0.7876096145 -0.0107270675 -3 -Iteration 37 Energy -92.33405950 -C -0.5740855968 -0.9238288731 0.0107320780 -N -0.0917964308 0.1489181873 0.0005156864 -H 0.6709554841 0.7762864320 -0.0107142095 -3 -Iteration 36 Energy -92.33279853 -C -0.5645544282 -0.9249818268 0.0106331945 -N -0.1065187328 0.1599428252 0.0006258258 -H 0.6761466175 0.7664147478 -0.0107254654 -3 -Iteration 35 Energy -92.33142285 -C -0.5542677510 -0.9250783088 0.0105211827 -N -0.1206456681 0.1713866158 0.0007275248 -H 0.6799868756 0.7550674391 -0.0107151526 -3 -Iteration 34 Energy -92.32993151 -C -0.5437322342 -0.9248061160 0.0104047514 -N -0.1350208991 0.1826033530 0.0008329847 -H 0.6838265898 0.7435785091 -0.0107041811 -3 -Iteration 33 Energy -92.32832517 -C -0.5327148338 -0.9238328988 0.0102798212 -N -0.1492166591 0.1938739066 0.0009362345 -H 0.6870049494 0.7313347383 -0.0106825008 -3 -Iteration 32 Energy -92.32660169 -C -0.5213467779 -0.9223202546 0.0101485716 -N -0.1634393428 0.2050344344 0.0010402857 -H 0.6898595772 0.7186615664 -0.0106553024 -3 -Iteration 31 Energy -92.32475874 -C -0.5095736206 -0.9201812979 0.0100100069 -N -0.1775609718 0.2161458008 0.0011434587 -H 0.6922080488 0.7054112433 -0.0106199107 -3 -Iteration 30 Energy -92.32279281 -C -0.4974481325 -0.9174686245 0.0098649464 -N -0.1916431149 0.2271451475 0.0012467163 -H 0.6941647039 0.6916992232 -0.0105781078 -3 -Iteration 29 Energy -92.32070017 -C -0.4849631163 -0.9141577418 0.0097131985 -N -0.2056335980 0.2380409152 0.0013494492 -H 0.6956701708 0.6774925728 -0.0105290928 -3 -Iteration 28 Energy -92.31847693 -C -0.4721533438 -0.9102767441 0.0095552729 -N -0.2195557295 0.2487966614 0.0014520802 -H 0.6967825299 0.6628558288 -0.0104737982 -3 -Iteration 27 Energy -92.31611973 -C -0.4590276813 -0.9058225536 0.0093912522 -N -0.2333822499 0.2594066554 0.0015543376 -H 0.6974833878 0.6477916445 -0.0104120350 -3 -Iteration 26 Energy -92.31362617 -C -0.4456165810 -0.9008184253 0.0092215766 -N -0.2471269788 0.2698438591 0.0016564972 -H 0.6978170163 0.6323503125 -0.0103445190 -3 -Iteration 25 Energy -92.31099549 -C -0.4319344317 -0.8952699007 0.0090464290 -N -0.2607733409 0.2800997465 0.0017584171 -H 0.6977812290 0.6165459004 -0.0102712912 -3 -Iteration 24 Energy -92.30822908 -C -0.4180104270 -0.8891998114 0.0088662336 -N -0.2743356373 0.2901518132 0.0018603573 -H 0.6974195208 0.6004237444 -0.0101930359 -3 -Iteration 23 Energy -92.30533113 -C -0.4038592047 -0.8826159200 0.0086811862 -N -0.2878016061 0.2999930839 0.0019622158 -H 0.6967342672 0.5839985822 -0.0101098472 -3 -Iteration 22 Energy -92.30230901 -C -0.3895103761 -0.8755418255 0.0084917195 -N -0.3011916970 0.3096025294 0.0020643133 -H 0.6957755296 0.5673150423 -0.0100224778 -3 -Iteration 21 Energy -92.29917368 -C -0.3749747039 -0.8679824801 0.0082979737 -N -0.3144909901 0.3189775168 0.0021664986 -H 0.6945391505 0.5503807095 -0.0099309175 -3 -Iteration 20 Energy -92.29593982 -C -0.3602874229 -0.8599655824 0.0081004619 -N -0.3277366579 0.3280928418 0.0022692944 -H 0.6930975374 0.5332484868 -0.0098362014 -3 -Iteration 19 Energy -92.29262570 -C -0.3454454472 -0.8514833742 0.0078991145 -N -0.3408900890 0.3369575690 0.0023722368 -H 0.6914089927 0.5159015514 -0.0097377963 -3 -Iteration 18 Energy -92.28925303 -C -0.3304969483 -0.8425738701 0.0076946332 -N -0.3540178197 0.3455385730 0.0024762057 -H 0.6895882245 0.4984110433 -0.0096372841 -3 -Iteration 17 Energy -92.28584630 -C -0.3154527407 -0.8332388120 0.0074871445 -N -0.3671124822 0.3538313312 0.0025811416 -H 0.6876386794 0.4807832270 -0.0095347312 -3 -Iteration 16 Energy -92.28243199 -C -0.3003411659 -0.8234941476 0.0072770315 -N -0.3802016004 0.3618190286 0.0026874228 -H 0.6856162228 0.4630508652 -0.0094308994 -3 -Iteration 15 Energy -92.27903760 -C -0.2851953599 -0.8133567210 0.0070647343 -N -0.3933212170 0.3694817044 0.0027955353 -H 0.6835900334 0.4452507628 -0.0093267146 -3 -Iteration 14 Energy -92.27569053 -C -0.2700570045 -0.8028460459 0.0068507983 -N -0.4065213164 0.3767941232 0.0029061418 -H 0.6816517774 0.4274276688 -0.0092233852 -3 -Iteration 13 Energy -92.27241685 -C -0.2549804147 -0.7919856487 0.0066359258 -N -0.4198704792 0.3837237962 0.0030201419 -H 0.6799243504 0.4096375987 -0.0091225128 -3 -Iteration 12 Energy -92.26924018 -C -0.2400377776 -0.7808046839 0.0064210404 -N -0.4334603387 0.3902288246 0.0031387303 -H 0.6785715728 0.3919516055 -0.0090262158 -3 -Iteration 11 Energy -92.26618079 -C -0.2253248209 -0.7693396524 0.0062073567 -N -0.4474073231 0.3962563114 0.0032634238 -H 0.6778056005 0.3744590872 -0.0089372256 -3 -Iteration 10 Energy -92.26325526 -C -0.2109656994 -0.7576361672 0.0059964423 -N -0.4618488393 0.4017422066 0.0033960196 -H 0.6778879952 0.3572697068 -0.0088589070 -3 -Iteration 9 Energy -92.26047716 -C -0.1971114878 -0.7457490313 0.0057902013 -N -0.4769265472 0.4066156989 0.0035383927 -H 0.6791114916 0.3405090786 -0.0087950391 -3 -Iteration 8 Energy -92.25785921 -C -0.1839255360 -0.7337382813 0.0055906962 -N -0.4927542239 0.4108103758 0.0036920931 -H 0.6817532164 0.3243036518 -0.0087492344 -3 -Iteration 7 Energy -92.25541683 -C -0.1715524261 -0.7216592361 0.0053997625 -N -0.5093791836 0.4142811103 0.0038578459 -H 0.6860050662 0.3087538720 -0.0087240535 -3 -Iteration 6 Energy -92.25317219 -C -0.1600842647 -0.7095503495 0.0052185845 -N -0.5267633215 0.4170172901 0.0040352836 -H 0.6919210427 0.2939088056 -0.0087203131 -3 -Iteration 5 Energy -92.25115685 -C -0.1495451283 -0.6974262492 0.0050474926 -N -0.5447980097 0.4190434569 0.0042231054 -H 0.6994165945 0.2797585385 -0.0087370431 -3 -Iteration 4 Energy -92.24941140 -C -0.1399027670 -0.6852806778 0.0048861056 -N -0.5633410874 0.4204074010 0.0044195369 -H 0.7083173109 0.2662490230 -0.0087720876 -3 -Iteration 3 Energy -92.24798183 -C -0.1310820229 -0.6730876014 0.0047334817 -N -0.5822477517 0.4211687542 0.0046227205 -H 0.7184032311 0.2532945935 -0.0088226473 -3 -Iteration 2 Energy -92.24691582 -C -0.1225888879 -0.6606479493 0.0045833030 -N -0.6010504292 0.4215220680 0.0048266477 -H 0.7287127736 0.2405016276 -0.0088763958 -3 -Iteration 1 Energy -92.24625946 -C -0.1163050072 -0.6488151146 0.0044600730 -N -0.6209498566 0.4209157301 0.0050469875 -H 0.7423283203 0.2292751307 -0.0089735056 -3 -Iteration 1 Energy -92.24626471 -C -0.1014849724 -0.6238538629 0.0041830197 -N -0.6574628830 0.4198786984 0.0054509362 -H 0.7640213119 0.2053509107 -0.0091004010 -3 -Iteration 2 Energy -92.24696331 -C -0.0968326833 -0.6117407520 0.0040763350 -N -0.6770788650 0.4181784119 0.0056732189 -H 0.7789850048 0.1949380863 -0.0092159990 -3 -Iteration 3 Energy -92.24815469 -C -0.0903859629 -0.5984024281 0.0039443865 -N -0.6955427188 0.4165587515 0.0058825347 -H 0.7910021382 0.1832194228 -0.0092933663 -3 -Iteration 4 Energy -92.24982889 -C -0.0850751193 -0.5851902870 0.0038254373 -N -0.7143304339 0.4144672694 0.0060975655 -H 0.8044790097 0.1720987639 -0.0093894478 -3 -Iteration 5 Energy -92.25196511 -C -0.0798911234 -0.5717054932 0.0037066182 -N -0.7327913167 0.4121005677 0.0063102916 -H 0.8177558966 0.1609806718 -0.0094833549 -3 -Iteration 6 Energy -92.25453410 -C -0.0749662066 -0.5580070910 0.0035896470 -N -0.7509944145 0.4094458989 0.0065215267 -H 0.8310340776 0.1499369383 -0.0095776189 -3 -Iteration 7 Energy -92.25749754 -C -0.0702516267 -0.5440827594 0.0034739341 -N -0.7688985946 0.4065185721 0.0067307506 -H 0.8442236779 0.1389399336 -0.0096711298 -3 -Iteration 8 Energy -92.26081059 -C -0.0657288812 -0.5299324756 0.0033592770 -N -0.7864818214 0.4033285856 0.0069376762 -H 0.8572841591 0.1279796361 -0.0097633983 -3 -Iteration 9 Energy -92.26442403 -C -0.0613803124 -0.5155568706 0.0032454856 -N -0.8037229474 0.3998849643 0.0071420308 -H 0.8701767164 0.1170476524 -0.0098539615 -3 -Iteration 10 Energy -92.26828647 -C -0.0571921699 -0.5009583847 0.0031324208 -N -0.8206034120 0.3961956538 0.0073435748 -H 0.8828690384 0.1061384771 -0.0099424408 -3 -Iteration 11 Energy -92.27234632 -C -0.0531533086 -0.4861407646 0.0030199782 -N -0.8371063916 0.3922678628 0.0075420912 -H 0.8953331567 0.0952486479 -0.0100285144 -3 -Iteration 12 Energy -92.27655349 -C -0.0492545559 -0.4711088066 0.0029080794 -N -0.8532163624 0.3881082611 0.0077373794 -H 0.9075443749 0.0843762917 -0.0101119039 -3 -Iteration 13 Energy -92.28086071 -C -0.0454879172 -0.4558680872 0.0027966628 -N -0.8689186848 0.3837231621 0.0079292503 -H 0.9194800585 0.0735206713 -0.0101923582 -3 -Iteration 14 Energy -92.28522449 -C -0.0418460537 -0.4404247587 0.0026856766 -N -0.8841992137 0.3791185946 0.0081175215 -H 0.9311187239 0.0626819103 -0.0102696432 -3 -Iteration 15 Energy -92.28960565 -C -0.0383226155 -0.4247856042 0.0025750825 -N -0.8990442581 0.3743002933 0.0083020169 -H 0.9424403301 0.0518610571 -0.0103435446 -3 -Iteration 16 Energy -92.29396959 -C -0.0349051801 -0.4089561840 0.0024647704 -N -0.9134379794 0.3692741578 0.0084825362 -H 0.9534166160 0.0410577724 -0.0104137518 -3 -Iteration 17 Energy -92.29828626 -C -0.0315898224 -0.3929446348 0.0023547349 -N -0.9273679825 0.3640454371 0.0086589196 -H 0.9640312614 0.0302749439 -0.0104800997 -3 -Iteration 18 Energy -92.30252990 -C -0.0283662271 -0.3767577800 0.0022448947 -N -0.9408187771 0.3586193132 0.0088309740 -H 0.9742584607 0.0195142130 -0.0105423138 -3 -Iteration 19 Energy -92.30667870 -C -0.0252255106 -0.3604032270 0.0021351876 -N -0.9537758648 0.3530008005 0.0089985177 -H 0.9840748320 0.0087781727 -0.0106001504 -3 -Iteration 20 Energy -92.31071436 -C -0.0221581165 -0.3438888150 0.0020255454 -N -0.9662243260 0.3471946948 0.0091613655 -H 0.9934558990 -0.0019301335 -0.0106533560 -3 -Iteration 21 Energy -92.31462163 -C -0.0191548385 -0.3272228914 0.0019159058 -N -0.9781495533 0.3412056509 0.0093193363 -H 1.0023778483 -0.0126070134 -0.0107016872 -3 -Iteration 22 Energy -92.31838785 -C -0.0162068264 -0.3104143177 0.0018062130 -N -0.9895372497 0.3350382146 0.0094722528 -H 1.0108175326 -0.0232481508 -0.0107449109 -3 -Iteration 23 Energy -92.32200251 -C -0.0133059146 -0.2934725466 0.0016964213 -N -1.0003736769 0.3286968866 0.0096199440 -H 1.0187530480 -0.0338485938 -0.0107828104 -3 -Iteration 24 Energy -92.32545688 -C -0.0104447126 -0.2764076395 0.0015864962 -N -1.0106457305 0.3221861738 0.0097622461 -H 1.0261638996 -0.0444027882 -0.0108151874 -3 -Iteration 25 Energy -92.32874362 -C -0.0076168403 -0.2592303115 0.0014764173 -N -1.0203411237 0.3155106610 0.0098990034 -H 1.0330314204 -0.0549046034 -0.0108418659 -3 -Iteration 26 Energy -92.33185646 -C -0.0048167121 -0.2419519005 0.0013661760 -N -1.0294482142 0.3086750348 0.0100300672 -H 1.0393383828 -0.0653473882 -0.0108626883 -3 -Iteration 27 Energy -92.33478991 -C -0.0020397825 -0.2245844306 0.0012557777 -N -1.0379561702 0.3016841632 0.0101552966 -H 1.0450694093 -0.0757239864 -0.0108775194 -3 -Iteration 28 Energy -92.33753899 -C 0.0007176668 -0.2071406363 0.0011452407 -N -1.0458547246 0.2945431246 0.0102745559 -H 1.0502105143 -0.0860267421 -0.0108862417 -3 -Iteration 29 Energy -92.34009890 -C 0.0034584158 -0.1896340828 0.0010345971 -N -1.0531341323 0.2872572899 0.0103877138 -H 1.0547491731 -0.0962474609 -0.0108887560 -3 -Iteration 30 Energy -92.34246479 -C 0.0061843659 -0.1720793536 0.0009238932 -N -1.0597848826 0.2798324035 0.0104946400 -H 1.0586739731 -0.1063773037 -0.0108849783 -3 -Iteration 31 Energy -92.34463145 -C 0.0088963197 -0.1544924048 0.0008131938 -N -1.0657975006 0.2722747488 0.0105952018 -H 1.0619746373 -0.1164065978 -0.0108748407 -3 -Iteration 32 Energy -92.34659315 -C 0.0115937580 -0.1368911555 0.0007025872 -N -1.0711621189 0.2645913964 0.0106892588 -H 1.0646418174 -0.1263244947 -0.0108582911 -3 -Iteration 33 Energy -92.34834340 -C 0.0142742186 -0.1192965024 0.0005921966 -N -1.0758680396 0.2567906619 0.0107766557 -H 1.0666672774 -0.1361184133 -0.0108352974 -3 -Iteration 34 Energy -92.34987498 -C 0.0169324732 -0.1017340862 0.0004821973 -N -1.0799028605 0.2488828789 0.0108572094 -H 1.0680438438 -0.1457730465 -0.0108058518 -3 -Iteration 35 Energy -92.35118009 -C 0.0195588994 -0.0842375543 0.0003728497 -N -1.0832511844 0.2408818688 0.0109306877 -H 1.0687657415 -0.1552685683 -0.0107699825 -3 -Iteration 36 Energy -92.35225080 -C 0.0221369139 -0.0668551876 0.0002645574 -N -1.0858917230 0.2328078421 0.0109967649 -H 1.0688282655 -0.1645769082 -0.0107277674 -3 -Iteration 37 Energy -92.35307974 -C 0.0246369351 -0.0496654035 0.0001580053 -N -1.0877913453 0.2246942792 0.0110549244 -H 1.0682278667 -0.1736531295 -0.0106793748 -3 -Iteration 38 Energy -92.35366123 -C 0.0270011319 -0.0328226214 0.0000545373 -N -1.0888874903 0.2166080656 0.0111041741 -H 1.0669598149 -0.1824096980 -0.0106251564 -3 -Iteration 39 Energy -92.35399309 -C 0.0290761102 -0.0167647492 -0.0000421516 -N -1.0890220771 0.2087426292 0.0111418942 -H 1.0650194235 -0.1906021339 -0.0105661877 -3 -Iteration 40 Energy -92.35408315 -C 0.0299529158 -0.0048225325 -0.0001067743 -N -1.0874285354 0.2026329961 0.0111526302 -H 1.0625490761 -0.1964347173 -0.0105123011 -3 -Iteration 41 Energy -92.35408315 -C 0.0299590645 -0.0047883798 -0.0001069989 -N -1.0874308923 0.2026164826 0.0111527321 -H 1.0625452843 -0.1964523566 -0.0105121783 -3 -Iteration 42 Energy -92.35408315 -C 0.0299589380 -0.0047891107 -0.0001060619 -N -1.0874308409 0.2026168354 0.0111522822 -H 1.0625453593 -0.1964519785 -0.0105126654 diff --git a/geometric/data/hcn_irc.psi4in b/geometric/data/hcn_irc.psi4in new file mode 100644 index 00000000..639b3bad --- /dev/null +++ b/geometric/data/hcn_irc.psi4in @@ -0,0 +1,9 @@ +molecule { +0 1 +C -0.1088783634 -0.6365101639 0.0043221742 +N -0.6393457902 0.4205365638 0.0052498438 +H 0.7532976101 0.2173493463 -0.0090384631 +} + +set basis 3-21g +gradient('hf') diff --git a/geometric/optimize.py b/geometric/optimize.py index 01856c34..2c43671d 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -86,6 +86,7 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru # Copies of data passed into constructor self.coords = coords self.molecule = deepcopy(molecule) + self.IC0 = IC self.IC = IC self.engine = engine self.dirname = dirname @@ -125,6 +126,7 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru # IRC related attributes self.IRC_direction = 1 self.IRC_opt = False + self.IRC_vary_stepsize = False self.IRC_init_v = None if print_info: self.print_info() @@ -468,6 +470,9 @@ def IRC_step(self): logger.info("IRC sub-step 1: Finding the pivot point (q*_{k+1})\n") # Need to take a step towards the pivot point self.IC.clearCache() + if not (self.Iteration != 0 or isinstance(self.IC, CartesianCoordinates)): + self.checkCoordinateSystem() + MWGMat = self.IC.GMatrix(self.X, invMW=True) # Save the initial Cartesian coordinate @@ -667,15 +672,16 @@ def evaluateStep(self): rms_gradient, max_gradient = self.calcGradNorm() rms_displacement, max_displacement = calc_drms_dmax(self.X, self.Xprev) rms_displacement_noalign, max_displacement_noalign = calc_drms_dmax(self.X, self.Xprev, align=False) + Egap = self.E-self.Eprev # The ratio of the actual energy change to the expected change - Quality = (self.E-self.Eprev)/self.expect + Quality = Egap/self.expect # The internal coordinate gradient (actually not really used in this function) self.G = self.IC.calcGrad(self.X, self.gradx).flatten() # For transition states, the quality factor decreases in both directions if params.transition and Quality > 1.0: Quality = 2.0 - Quality # Check convergence criteria - Converged_energy = np.abs(self.E-self.Eprev) < params.Convergence_energy + Converged_energy = np.abs(Egap) < params.Convergence_energy Converged_grms = rms_gradient < params.Convergence_grms Converged_gmax = max_gradient < params.Convergence_gmax Converged_drms = rms_displacement < params.Convergence_drms @@ -684,12 +690,12 @@ def evaluateStep(self): # 2020-03-10: Step quality thresholds are hard-coded here. colors = {} if Quality > 0.75: step_state = StepState.Good - elif Quality > (0.5 if params.transition else 0.25): step_state = StepState.Okay + elif Quality > (0.5 if params.transition or params.irc else 0.25): step_state = StepState.Okay elif Quality > 0.0: step_state = StepState.Poor else: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[91m" colors['quality'] = "\x1b[91m" - step_state = StepState.Reject if (Quality < -1.0 or params.transition) and not params.irc else StepState.Poor + step_state = StepState.Reject if (Quality < -1.0 or params.transition or params.irc) else StepState.Poor if 'energy' not in colors: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[0m" if 'quality' not in colors: colors['quality'] = "\x1b[0m" colors['grms'] = "\x1b[92m" if Converged_grms else "\x1b[0m" @@ -718,47 +724,59 @@ def evaluateStep(self): def reset_irc(): self.IRC_direction = -1 - self.progress = self.progress[::-1] + self.progress = self.progress[::-1][:-1] self.Iteration = 0 - self.gradx = self.Gx_hist[0].copy() self.X = self.X_hist[0].copy() + self.coords = self.X_hist[0].copy() + self.IC = self.IC0 self.trust = self.params.trust - self.calcEnergyForce() self.IRC_opt = False - self.prepareFirstStep() self.trustprint = "=" self.params.tmax = self.trust + #self.IRC_vary_stepsize = False + self.calcEnergyForce() + self.prepareFirstStep() if params.irc: if self.Iteration > 10: if criteria_met : if self.IRC_direction == 1: - logger.info("\nIRC forward direction converged") - logger.info("\nIRC backward direction starts here\n\n") + logger.info("\nIRC forward direction converged\n") + logger.info("IRC backward direction starts here\n\n") reset_irc() - return elif self.IRC_direction == -1: self.SortedEigenvalues(self.H) logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED - return + return elif (IRC_converged or self.IRC_dystep < 1e-4) and not self.IRC_opt: self.IRC_opt = True if self.cnorm > 1e-4: self.trust = self.cnorm self.params.tmax = self.params.trust*3 logger.info("Switching to optimization\n") - elif self.Iteration > params.maxiter: - logger.info("\nIRC forward direction reached maximum iteration number\n") if self.IRC_direction == -1: + logger.info("\nIRC backward direction reached maximum iteration number\n") logger.info("Terminating IRC\n") self.state = OPT_STATE.FAILED else: + logger.info("\nIRC forward direction reached maximum iteration number\n") logger.info("IRC backward direction starts here\n\n") reset_irc() return + #if self.IRC_Egap < abs(Egap): + # self.IRC_Egap = abs(Egap) + # self.IRC_vary_stepsize = False + + #elif abs(Egap) < self.IRC_Egap*0.2 and not self.IRC_vary_stepsize: + # self.IRC_vary_stepsize = True + + #if not (self.IRC_vary_stepsize or self.IRC_opt): + # return + + if criteria_met and self.conSatisfied: self.SortedEigenvalues(self.H) logger.info("Converged! =D\n") @@ -794,7 +812,7 @@ def reset_irc(): # logger.info("LPW: Recalculating Hessian\n") # self.recalcHess = True if step_state in (StepState.Poor, StepState.Reject): - new_trust = max(params.tmin, min(self.trust, self.cnorm)/2) + new_trust = max(params.tmin, min(self.trust, self.cnorm)/2) if not params.irc or self.IRC_opt else max(params.tmin, self.trust*0.5) # if (Converged_grms or Converged_gmax) or (params.molcnv and Converged_molpro_gmax): # new_trust = max(new_trust, self.params.Convergence_dmax if self.params.usedmax else self.params.Convergence_drms) self.trustprint = "\x1b[91m-\x1b[0m" if new_trust < self.trust else "=" @@ -807,7 +825,7 @@ def reset_irc(): logger.info("Poor-quality step dominated by net translation/rotation detected; ") logger.info("will project out net forces and torques past this point.\n") elif step_state == StepState.Good: - new_trust = min(params.tmax, np.sqrt(2)*self.trust) + new_trust = min(params.tmax, np.sqrt(2)*self.trust) if not params.irc or self.IRC_opt else min(params.tmax, self.trust*1.10) self.trustprint = "\x1b[92m+\x1b[0m" if new_trust > self.trust else "=" self.trust = new_trust elif step_state == StepState.Okay: @@ -833,7 +851,7 @@ def reset_irc(): elif self.farConstraints: logger.info("\x1b[93mNot rejecting step - far from constraint satisfaction\x1b[0m\n") else: - logger.info("\x1b[93mRejecting step - quality is lower than %.1f\x1b[0m\n" % (0.0 if params.transition else -1.0)) + logger.info("\x1b[93mRejecting step - quality is lower than %.1f\x1b[0m\n" % (0.0 if params.transition or params.irc else -1.0)) self.trustprint = "\x1b[1;91mx\x1b[0m" # Store the rejected step. In case the next step is identical to the rejected one, the next step should be accepted to avoid infinite loops. self.X_rj = self.X.copy() @@ -844,6 +862,7 @@ def reset_irc(): self.E = self.Eprev self.engine.load_guess_files(self.dirname) self.recalcHess = False + self.progress = self.progress[:-1] return # Append steps to history (for rebuilding Hessian) diff --git a/geometric/tests/test_irc.py b/geometric/tests/test_irc.py new file mode 100644 index 00000000..6eeeeb8e --- /dev/null +++ b/geometric/tests/test_irc.py @@ -0,0 +1,37 @@ +""" +A set of tests for IRC +""" + +import os, shutil +from . import addons +import geometric +import numpy as np + +localizer = addons.in_folder +datad = addons.datad +exampled = addons.exampled + +@addons.using_psi4 +def test_hcn_irc_psi4(localizer): + """ + IRC test + """ + shutil.copy2(os.path.join(datad, 'hcn_irc.psi4in'), os.path.join(os.getcwd(), 'hcn_irc.psi4in')) + progress = geometric.optimize.run_optimizer(engine='psi4', input='hcn_irc.psi4in', converge=['set', 'GAU_LOOSE'], + nt=4, reset=False, trust=0.1, irc=True, maxiter=50) + e_ref1 = -92.35408411 + e_ref2 = -92.33971205 + max_e = np.max(progress.qm_energies) + reac_e = progress.qm_energies[0] + prod_e = progress.qm_energies[-1] + + # Check the mex_e is not from the end-points + assert reac_e < max_e + assert prod_e < max_e + + # Check the end-point energies + assert np.isclose(min(reac_e, prod_e), e_ref1) + assert np.isclose(max(reac_e, prod_e), e_ref2) + + # Check that the IRC converged in less than 50 iterations + assert len(progress) < 80 From 0e2d022b38eb18dab8cccffda93db70645f472ea Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Mon, 10 Jul 2023 16:26:48 -0700 Subject: [PATCH 17/35] IRC StepState.Poor will be rejected --- geometric/optimize.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/geometric/optimize.py b/geometric/optimize.py index 2c43671d..59921973 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -738,6 +738,8 @@ def reset_irc(): self.prepareFirstStep() if params.irc: + if step_state == StepState.Poor: + step_state = StepState.Reject if self.Iteration > 10: if criteria_met : if self.IRC_direction == 1: From 0bd02ba522fb00783d6d9d2639baff4b57999af1 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Tue, 11 Jul 2023 20:22:03 -0700 Subject: [PATCH 18/35] IRC poor step is rejected --- geometric/optimize.py | 124 ++++++++++++++++++++++++------------------ 1 file changed, 70 insertions(+), 54 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 59921973..eb078a63 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -128,6 +128,8 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru self.IRC_opt = False self.IRC_vary_stepsize = False self.IRC_init_v = None + self.prevQ = 0.0 + self.IRC_total_disp = 0.0 if print_info: self.print_info() @@ -422,7 +424,7 @@ def guess_g(self, g, H, disp): def step(self): if self.params.irc: """ - Perform one step of the IRC. + Take an IRC step. """ if self.IRC_opt: dy = self.optimize_step() @@ -430,10 +432,12 @@ def step(self): dy = self.IRC_step() else: """ - Perform one step of the optimization. + Take an optimization step. """ dy = self.optimize_step() + if dy is None: return + ### Before updating any of our variables, copy current variables to "previous" self.cnorm = self.get_cartesian_norm(dy) ### DONE OBTAINING THE STEP ### @@ -487,7 +491,8 @@ def IRC_step(self): raise IRCError("No imaginary mode detected. Please optimize the structure and try again.\n") self.IRC_adjfactor = np.linalg.norm(self.TSNormal_modes_x[0] * np.sqrt(self.IC.mass)) - logger.info("Initial step-size: %.5f \n" %(self.trust * ang2bohr * self.IRC_adjfactor)) + self.IRC_init_step = self.trust * ang2bohr * self.IRC_adjfactor + logger.info("Initial step-size: %.5f \n" %self.IRC_init_step) # Following the imaginary mode vector if self.IRC_init_v is None: @@ -553,9 +558,11 @@ def IRC_step(self): deg = np.degrees(np.arccos(np.dot(v1/np.linalg.norm(v1),v2))) mwdx = np.linalg.norm(np.dot(MWGMat_sqrt_inv, dy)) half_mwdx = np.linalg.norm(np.dot(MWGMat_sqrt_inv, p_prime)) - self.IRC_dystep = np.linalg.norm(p_prime) + self.IRC_dystep = np.linalg.norm(dy) + self.IRC_mwdxstep = mwdx + self.IRC_total_disp += mwdx const = self.find_lambda(min_lambda, Heig, Hvecs, g_M, p_M) - if const > 1e-5 or min_lambda > Heig[0]: + if (const > 1e-5 or min_lambda > Heig[0]) and const > 1e-5: logger.info("Something is wrong in the IRC second sub-step\n") logger.info('Check constraint: %.9f \n' %const) logger.info('dq_new: %.9f \n' %np.linalg.norm(dq_new)) @@ -695,7 +702,7 @@ def evaluateStep(self): else: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[91m" colors['quality'] = "\x1b[91m" - step_state = StepState.Reject if (Quality < -1.0 or params.transition or params.irc) else StepState.Poor + step_state = StepState.Reject if (Quality < -1.0 or params.transition) else StepState.Poor if 'energy' not in colors: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[0m" if 'quality' not in colors: colors['quality'] = "\x1b[0m" colors['grms'] = "\x1b[92m" if Converged_grms else "\x1b[0m" @@ -733,14 +740,30 @@ def reset_irc(): self.IRC_opt = False self.trustprint = "=" self.params.tmax = self.trust - #self.IRC_vary_stepsize = False + self.IRC_total_disp = 0.0 + self.prevQ = 0.0 self.calcEnergyForce() self.prepareFirstStep() if params.irc: - if step_state == StepState.Poor: - step_state = StepState.Reject - if self.Iteration > 10: + if self.Iteration > params.maxiter: + if self.IRC_direction == -1: + logger.info("\nIRC backward direction reached maximum iteration number\n") + logger.info("Terminating IRC\n") + self.state = OPT_STATE.FAILED + else: + logger.info("\nIRC forward direction reached maximum iteration number\n") + logger.info("IRC backward direction starts here\n\n") + reset_irc() + return + + if step_state in (StepState.Poor, StepState.Reject) and not self.IRC_opt and self.Iteration > 5: + if not np.isclose(Quality, self.prevQ): + step_state = StepState.Reject + else: + step_state = StepState.Poor + self.prevQ = Quality + if self.IRC_total_disp > 5*self.IRC_init_step: if criteria_met : if self.IRC_direction == 1: logger.info("\nIRC forward direction converged\n") @@ -757,51 +780,31 @@ def reset_irc(): self.trust = self.cnorm self.params.tmax = self.params.trust*3 logger.info("Switching to optimization\n") - elif self.Iteration > params.maxiter: - if self.IRC_direction == -1: - logger.info("\nIRC backward direction reached maximum iteration number\n") - logger.info("Terminating IRC\n") - self.state = OPT_STATE.FAILED - else: - logger.info("\nIRC forward direction reached maximum iteration number\n") - logger.info("IRC backward direction starts here\n\n") - reset_irc() - return - - #if self.IRC_Egap < abs(Egap): - # self.IRC_Egap = abs(Egap) - # self.IRC_vary_stepsize = False - #elif abs(Egap) < self.IRC_Egap*0.2 and not self.IRC_vary_stepsize: - # self.IRC_vary_stepsize = True - - #if not (self.IRC_vary_stepsize or self.IRC_opt): - # return - - - if criteria_met and self.conSatisfied: - self.SortedEigenvalues(self.H) - logger.info("Converged! =D\n") - self.state = OPT_STATE.CONVERGED - return + else: + if criteria_met and self.conSatisfied: + self.SortedEigenvalues(self.H) + logger.info("Converged! =D\n") + self.state = OPT_STATE.CONVERGED + return - if self.Iteration > params.maxiter: - self.SortedEigenvalues(self.H) - logger.info("Maximum iterations reached (%i); increase --maxiter for more\n" % params.maxiter) - self.state = OPT_STATE.FAILED - return + if self.Iteration > params.maxiter: + self.SortedEigenvalues(self.H) + logger.info("Maximum iterations reached (%i); increase --maxiter for more\n" % params.maxiter) + self.state = OPT_STATE.FAILED + return - if params.qccnv and Converged_grms and (Converged_drms or Converged_energy) and self.conSatisfied: - self.SortedEigenvalues(self.H) - logger.info("Converged! (Q-Chem style criteria requires grms and either drms or energy)\n") - self.state = OPT_STATE.CONVERGED - return + if params.qccnv and Converged_grms and (Converged_drms or Converged_energy) and self.conSatisfied: + self.SortedEigenvalues(self.H) + logger.info("Converged! (Q-Chem style criteria requires grms and either drms or energy)\n") + self.state = OPT_STATE.CONVERGED + return - if params.molcnv and Converged_molpro_gmax and (Converged_molpro_dmax or Converged_energy) and self.conSatisfied: - self.SortedEigenvalues(self.H) - logger.info("Converged! (Molpro style criteria requires gmax and either dmax or energy)\nThis is approximate since convergence checks are done in cartesian coordinates.\n") - self.state = OPT_STATE.CONVERGED - return + if params.molcnv and Converged_molpro_gmax and (Converged_molpro_dmax or Converged_energy) and self.conSatisfied: + self.SortedEigenvalues(self.H) + logger.info("Converged! (Molpro style criteria requires gmax and either dmax or energy)\nThis is approximate since convergence checks are done in cartesian coordinates.\n") + self.state = OPT_STATE.CONVERGED + return assert self.state == OPT_STATE.NEEDS_EVALUATION @@ -814,7 +817,7 @@ def reset_irc(): # logger.info("LPW: Recalculating Hessian\n") # self.recalcHess = True if step_state in (StepState.Poor, StepState.Reject): - new_trust = max(params.tmin, min(self.trust, self.cnorm)/2) if not params.irc or self.IRC_opt else max(params.tmin, self.trust*0.5) + new_trust = max(params.tmin, min(self.trust, self.cnorm)/2)# if not params.irc or self.IRC_opt else max(params.tmin, self.trust*0.5) # if (Converged_grms or Converged_gmax) or (params.molcnv and Converged_molpro_gmax): # new_trust = max(new_trust, self.params.Convergence_dmax if self.params.usedmax else self.params.Convergence_drms) self.trustprint = "\x1b[91m-\x1b[0m" if new_trust < self.trust else "=" @@ -827,13 +830,27 @@ def reset_irc(): logger.info("Poor-quality step dominated by net translation/rotation detected; ") logger.info("will project out net forces and torques past this point.\n") elif step_state == StepState.Good: - new_trust = min(params.tmax, np.sqrt(2)*self.trust) if not params.irc or self.IRC_opt else min(params.tmax, self.trust*1.10) + new_trust = min(params.tmax, np.sqrt(2)*self.trust) if not params.irc or self.IRC_opt else min(params.tmax, self.trust*1.20) self.trustprint = "\x1b[92m+\x1b[0m" if new_trust > self.trust else "=" self.trust = new_trust elif step_state == StepState.Okay: self.trustprint = "=" if step_state == StepState.Reject: + if params.irc and not self.IRC_opt: + self.IRC_total_disp -= self.IRC_mwdxstep + logger.info("\x1b[93mRejecting step - low quality IRC step\x1b[0m\n") + self.trustprint = "\x1b[1;91mx\x1b[0m" + self.X_rj = self.X.copy() + self.Y = self.Yprev.copy() + self.X = self.Xprev.copy() + self.gradx = self.Gxprev.copy() + self.G = self.Gprev.copy() + self.E = self.Eprev + self.engine.load_guess_files(self.dirname) + self.recalcHess = False + self.progress = self.progress[:-1] + return if hasattr(self, 'X_rj') and np.allclose(self.X_rj, self.X, atol=1e-6): logger.info("\x1b[93mA previously rejected step was repeated; accepting to avoid infinite loop\x1b[0m\n") delattr(self, 'X_rj') @@ -864,7 +881,6 @@ def reset_irc(): self.E = self.Eprev self.engine.load_guess_files(self.dirname) self.recalcHess = False - self.progress = self.progress[:-1] return # Append steps to history (for rebuilding Hessian) From f849c8f234e4b4580f88c410f14a2e668bcb8b9e Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Wed, 12 Jul 2023 15:34:01 -0700 Subject: [PATCH 19/35] IRC checks IC when the step quality is bad --- geometric/optimize.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index eb078a63..272ec853 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -474,9 +474,6 @@ def IRC_step(self): logger.info("IRC sub-step 1: Finding the pivot point (q*_{k+1})\n") # Need to take a step towards the pivot point self.IC.clearCache() - if not (self.Iteration != 0 or isinstance(self.IC, CartesianCoordinates)): - self.checkCoordinateSystem() - MWGMat = self.IC.GMatrix(self.X, invMW=True) # Save the initial Cartesian coordinate @@ -697,7 +694,7 @@ def evaluateStep(self): # 2020-03-10: Step quality thresholds are hard-coded here. colors = {} if Quality > 0.75: step_state = StepState.Good - elif Quality > (0.5 if params.transition or params.irc else 0.25): step_state = StepState.Okay + elif Quality > (0.5 if params.transition else 0.25): step_state = StepState.Okay elif Quality > 0.0: step_state = StepState.Poor else: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[91m" @@ -757,7 +754,7 @@ def reset_irc(): reset_irc() return - if step_state in (StepState.Poor, StepState.Reject) and not self.IRC_opt and self.Iteration > 5: + if step_state in (StepState.Poor, StepState.Reject) and not self.IRC_opt and self.Iteration > 2: if not np.isclose(Quality, self.prevQ): step_state = StepState.Reject else: @@ -817,7 +814,7 @@ def reset_irc(): # logger.info("LPW: Recalculating Hessian\n") # self.recalcHess = True if step_state in (StepState.Poor, StepState.Reject): - new_trust = max(params.tmin, min(self.trust, self.cnorm)/2)# if not params.irc or self.IRC_opt else max(params.tmin, self.trust*0.5) + new_trust = max(params.tmin, min(self.trust, self.cnorm)/2) # if (Converged_grms or Converged_gmax) or (params.molcnv and Converged_molpro_gmax): # new_trust = max(new_trust, self.params.Convergence_dmax if self.params.usedmax else self.params.Convergence_drms) self.trustprint = "\x1b[91m-\x1b[0m" if new_trust < self.trust else "=" @@ -830,7 +827,7 @@ def reset_irc(): logger.info("Poor-quality step dominated by net translation/rotation detected; ") logger.info("will project out net forces and torques past this point.\n") elif step_state == StepState.Good: - new_trust = min(params.tmax, np.sqrt(2)*self.trust) if not params.irc or self.IRC_opt else min(params.tmax, self.trust*1.20) + new_trust = min(params.tmax, np.sqrt(2)*self.trust) self.trustprint = "\x1b[92m+\x1b[0m" if new_trust > self.trust else "=" self.trust = new_trust elif step_state == StepState.Okay: @@ -839,6 +836,7 @@ def reset_irc(): if step_state == StepState.Reject: if params.irc and not self.IRC_opt: self.IRC_total_disp -= self.IRC_mwdxstep + self.Iteration -= 1 logger.info("\x1b[93mRejecting step - low quality IRC step\x1b[0m\n") self.trustprint = "\x1b[1;91mx\x1b[0m" self.X_rj = self.X.copy() @@ -850,6 +848,9 @@ def reset_irc(): self.engine.load_guess_files(self.dirname) self.recalcHess = False self.progress = self.progress[:-1] + if Quality < 0.0: + logger.info("Checking coordinate system\n") + self.checkCoordinateSystem() return if hasattr(self, 'X_rj') and np.allclose(self.X_rj, self.X, atol=1e-6): logger.info("\x1b[93mA previously rejected step was repeated; accepting to avoid infinite loop\x1b[0m\n") From 6c0a7ee1d1c0e8bddc50cea303dd70e4ef8e088c Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Thu, 13 Jul 2023 14:37:22 -0700 Subject: [PATCH 20/35] IRC step evaluation was modified. QCEngine IRC will return a list of schema corresponding to the IRC progress --- geometric/optimize.py | 13 ++++++++----- geometric/run_json.py | 19 +++++++++++++++++-- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 272ec853..f8d81642 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -694,7 +694,7 @@ def evaluateStep(self): # 2020-03-10: Step quality thresholds are hard-coded here. colors = {} if Quality > 0.75: step_state = StepState.Good - elif Quality > (0.5 if params.transition else 0.25): step_state = StepState.Okay + elif Quality > (0.5 if params.transition else 0.65 if params.irc else 0.25): step_state = StepState.Okay elif Quality > 0.0: step_state = StepState.Poor else: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[91m" @@ -728,18 +728,19 @@ def evaluateStep(self): def reset_irc(): self.IRC_direction = -1 - self.progress = self.progress[::-1][:-1] self.Iteration = 0 self.X = self.X_hist[0].copy() self.coords = self.X_hist[0].copy() self.IC = self.IC0 + self.E = self.progress.qm_energies[0] + self.gradx = self.progress.qm_grads[0] + self.progress = self.progress[::-1] self.trust = self.params.trust self.IRC_opt = False self.trustprint = "=" self.params.tmax = self.trust self.IRC_total_disp = 0.0 self.prevQ = 0.0 - self.calcEnergyForce() self.prepareFirstStep() if params.irc: @@ -754,10 +755,12 @@ def reset_irc(): reset_irc() return - if step_state in (StepState.Poor, StepState.Reject) and not self.IRC_opt and self.Iteration > 2: + if step_state in (StepState.Poor, StepState.Reject) and not self.IRC_opt and self.Iteration > 1: if not np.isclose(Quality, self.prevQ): step_state = StepState.Reject else: + logger.info("Checking coordinate system\n") + self.checkCoordinateSystem() step_state = StepState.Poor self.prevQ = Quality if self.IRC_total_disp > 5*self.IRC_init_step: @@ -848,7 +851,7 @@ def reset_irc(): self.engine.load_guess_files(self.dirname) self.recalcHess = False self.progress = self.progress[:-1] - if Quality < 0.0: + if Quality < 0.1: logger.info("Checking coordinate system\n") self.checkCoordinateSystem() return diff --git a/geometric/run_json.py b/geometric/run_json.py index 3672530c..5f310c25 100644 --- a/geometric/run_json.py +++ b/geometric/run_json.py @@ -255,7 +255,7 @@ def geometric_run_json(in_json_dict): if Cons is None: # Run a standard geometry optimization params.xyzout = "qce_optim.xyz" - geometric.optimize.Optimize(coords, M, IC, engine, dirname, params) + progress = geometric.optimize.Optimize(coords, M, IC, engine, dirname, params) else: # Run a constrained geometry optimization if isinstance(IC, (geometric.internal.CartesianCoordinates, @@ -266,7 +266,22 @@ def geometric_run_json(in_json_dict): logger.info("---=== Scan %i/%i : Constrained Optimization ===---\n" % (ic + 1, len(CVals))) IC = CoordClass(M, build=True, connect=connect, addcart=addcart, constraints=Cons, cvals=CVal) IC.printConstraints(coords, thre=-1) - geometric.optimize.Optimize(coords, M, IC, engine, dirname, params, print_info = (ic==0)) + progress = geometric.optimize.Optimize(coords, M, IC, engine, dirname, params, print_info = (ic==0)) + + if params.irc: + old_traj = engine.schema_traj.copy() + if hess is None: + old_traj[1:M.na*6] = [] + new_traj = [] + for point in progress: + for schema in old_traj: + qcvars = schema['extras']['qcvars'] + same_E = np.isclose(point.qm_energies, qcvars['SCF TOTAL ENERGY']) + same_g = np.allclose(point.qm_grads, qcvars['CURRENT GRADIENT']) + same_G = np.allclose(point.xyzs.flatten() / geometric.nifty.bohr2ang, schema['molecule']['geometry']) + if same_E and same_G and same_g and schema not in new_traj: + new_traj.append(schema) + engine.schema_traj = new_traj out_json_dict = get_output_json_dict(in_json_dict, engine.schema_traj) out_json_dict["success"] = True From d964167cd77efc8b857434f7ed05420aef26be69 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Thu, 13 Jul 2023 18:47:07 -0700 Subject: [PATCH 21/35] minor change in run_json.py --- geometric/run_json.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/geometric/run_json.py b/geometric/run_json.py index 5f310c25..27bd890f 100644 --- a/geometric/run_json.py +++ b/geometric/run_json.py @@ -279,8 +279,9 @@ def geometric_run_json(in_json_dict): same_E = np.isclose(point.qm_energies, qcvars['SCF TOTAL ENERGY']) same_g = np.allclose(point.qm_grads, qcvars['CURRENT GRADIENT']) same_G = np.allclose(point.xyzs.flatten() / geometric.nifty.bohr2ang, schema['molecule']['geometry']) - if same_E and same_G and same_g and schema not in new_traj: + if same_E and same_G and same_g: new_traj.append(schema) + break engine.schema_traj = new_traj out_json_dict = get_output_json_dict(in_json_dict, engine.schema_traj) From 9480491417fb740df280dc3eccd8d86abfc110c1 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Fri, 14 Jul 2023 15:52:35 -0700 Subject: [PATCH 22/35] scipy dependency is added. IRC step quality is less strict --- geometric/optimize.py | 5 +++-- setup.py | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index f8d81642..52276334 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -694,7 +694,7 @@ def evaluateStep(self): # 2020-03-10: Step quality thresholds are hard-coded here. colors = {} if Quality > 0.75: step_state = StepState.Good - elif Quality > (0.5 if params.transition else 0.65 if params.irc else 0.25): step_state = StepState.Okay + elif Quality > (0.5 if params.transition or params.irc else 0.25): step_state = StepState.Okay elif Quality > 0.0: step_state = StepState.Poor else: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[91m" @@ -817,7 +817,8 @@ def reset_irc(): # logger.info("LPW: Recalculating Hessian\n") # self.recalcHess = True if step_state in (StepState.Poor, StepState.Reject): - new_trust = max(params.tmin, min(self.trust, self.cnorm)/2) + #new_trust = max(params.tmin, min(self.trust, self.cnorm)/2) + new_trust = min(params.tmin, self.trust/2) if params.irc and not self.IRC_opt else max(params.tmin, min(self.trust, self.cnorm)/2) # if (Converged_grms or Converged_gmax) or (params.molcnv and Converged_molpro_gmax): # new_trust = max(new_trust, self.params.Convergence_dmax if self.params.usedmax else self.params.Convergence_drms) self.trustprint = "\x1b[91m-\x1b[0m" if new_trust < self.trust else "=" diff --git a/setup.py b/setup.py index 77b558f8..426bc310 100644 --- a/setup.py +++ b/setup.py @@ -25,6 +25,7 @@ 'numpy>=1.11', 'networkx', 'six', + 'scipy', ], tests_require=[ 'pytest', From 49fb4965ca26fbbd5db8b0d1003c877bb3bdd133 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Mon, 24 Jul 2023 13:33:26 -0700 Subject: [PATCH 23/35] IRC update --- geometric/optimize.py | 109 ++++++++++++++++++++++++++---------------- geometric/params.py | 2 +- 2 files changed, 69 insertions(+), 42 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 52276334..a6a57e88 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -127,9 +127,9 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru self.IRC_direction = 1 self.IRC_opt = False self.IRC_vary_stepsize = False - self.IRC_init_v = None - self.prevQ = 0.0 + self.Qprev = 0.0 self.IRC_total_disp = 0.0 + #self.Internals = self.IC.Internals.copy() if print_info: self.print_info() @@ -478,6 +478,7 @@ def IRC_step(self): # Save the initial Cartesian coordinate X0 = self.X.copy() + # Vector to the pivot point if self.Iteration == 0: # If it's the very first step, pick the eigenvector of the imaginary frequency and pick the direction @@ -492,16 +493,20 @@ def IRC_step(self): logger.info("Initial step-size: %.5f \n" %self.IRC_init_step) # Following the imaginary mode vector - if self.IRC_init_v is None: - #MWGMat_sqrt_inv, MWGMat_sqrt = self.IC.GInverse_SVD(self.X, sqrt=True, invMW=True) - #H_M = np.dot(np.dot(MWGMat_sqrt, self.H), MWGMat_sqrt.T) - #_, MW_IC_vecs = np.linalg.eigh(H_M) - #v = MW_IC_vecs[0] - Im_mode = self.TSNormal_modes_x[0] - v = self.IC.calcDiff(X0 + Im_mode, X0) - self.IRC_init_v = self.IC.calcDiff(X0 - Im_mode, X0) - else: - v = self.IRC_init_v + Im_mode = self.TSNormal_modes_x[0] + Im_mode *= self.IRC_direction + v = self.IC.calcDiff(X0 + Im_mode, X0) + X = self.IC.newCartesian(X0, v) + v = self.IC.calcDiff(X, X0) + + #if self.IRC_init_v is None: + # #MWGMat_sqrt_inv, MWGMat_sqrt = self.IC.GInverse_SVD(self.X, sqrt=True, invMW=True) + # #H_M = np.dot(np.dot(MWGMat_sqrt, self.H), MWGMat_sqrt.T) + # #_, MW_IC_vecs = np.linalg.eigh(H_M) + # #v = MW_IC_vecs[0] + # self.IRC_init_v = self.IC.calcDiff(X0 - Im_mode, X0) + #else: + # v = self.IRC_init_v else: v = self.G.copy() # Internal coordinate gradients @@ -519,13 +524,14 @@ def IRC_step(self): # Calculating sqrt(mass) weighted Cartesian coordinate MWGMat_sqrt_inv, MWGMat_sqrt = self.IC.GInverse_SVD(X_pivot, sqrt=True, invMW=True) mwdx = np.dot(MWGMat_sqrt_inv, dy_to_pivot) - logger.info("Half step dy = %.5f\n" %np.linalg.norm(dy_to_pivot)) - logger.info("Half step mw-dx = %.5f Bohr*sqrt(amu)\n" %np.linalg.norm(mwdx)) + logger.info("Half step dy = %.5f\n" %np.linalg.norm(dy_to_pivot)) + logger.info("Half step mw-dx = %.5f Bohr*sqrt(amu)\n" %np.linalg.norm(mwdx)) # We are at the pivot point logger.info('\nIRC sub-step 2: Finding the next point (q_{k+1})\n') v1 = v.copy() irc_sub_iteration = 0 + irc_reset_iteration = 0 p_prime = dy_to_pivot.copy() # Finding the next point while True: @@ -551,21 +557,29 @@ def IRC_step(self): if np.linalg.norm(dq_new) < 1e-6 or irc_sub_iteration > 100: dy = dy_to_pivot + p_prime + dy_norm = np.linalg.norm(dy) v2 = p_prime/np.linalg.norm(p_prime) deg = np.degrees(np.arccos(np.dot(v1/np.linalg.norm(v1),v2))) mwdx = np.linalg.norm(np.dot(MWGMat_sqrt_inv, dy)) half_mwdx = np.linalg.norm(np.dot(MWGMat_sqrt_inv, p_prime)) - self.IRC_dystep = np.linalg.norm(dy) + self.IRC_dystep = dy_norm self.IRC_mwdxstep = mwdx self.IRC_total_disp += mwdx const = self.find_lambda(min_lambda, Heig, Hvecs, g_M, p_M) - if (const > 1e-5 or min_lambda > Heig[0]) and const > 1e-5: - logger.info("Something is wrong in the IRC second sub-step\n") - logger.info('Check constraint: %.9f \n' %const) - logger.info('dq_new: %.9f \n' %np.linalg.norm(dq_new)) - logger.info('IRC sub iteration %i\n' %irc_sub_iteration) + cnorm = self.get_cartesian_norm(dy) # Angstrom + self.IRC_substep_success = True + if ((const > 1 or min_lambda > Heig[0]) and irc_sub_iteration > 100) or (mwdx > self.IRC_init_step*2 and cnorm > self.trust): + logger.info("IRC second sub-step failed. Rejecting the step.\n") + logger.info('X Failed half step dy = %.5f \n' % np.linalg.norm(p_prime)) + logger.info('X Failed half step mw-dx = %.5f Bohr*sqrt(amu)\n\n' % half_mwdx) + + logger.info('X Failed total step dy: %.5f \n' %dy_norm) + logger.info('X Failed total step mw-dx = %.5f Bohr*sqrt(amu)\n' % mwdx) + logger.info('X Failed total cnorm: %.5f \n' %cnorm) + #logger.info('Constraint: %.5f \n' %const) + #logger.info('dq_new: %.5f \n' %np.linalg.norm(dq_new)) + self.IRC_substep_success = False break - irc_sub_iteration += 1 p_prime += dq_new @@ -676,16 +690,16 @@ def evaluateStep(self): rms_gradient, max_gradient = self.calcGradNorm() rms_displacement, max_displacement = calc_drms_dmax(self.X, self.Xprev) rms_displacement_noalign, max_displacement_noalign = calc_drms_dmax(self.X, self.Xprev, align=False) - Egap = self.E-self.Eprev + del_E = self.E-self.Eprev # The ratio of the actual energy change to the expected change - Quality = Egap/self.expect + Quality = del_E/self.expect # The internal coordinate gradient (actually not really used in this function) self.G = self.IC.calcGrad(self.X, self.gradx).flatten() # For transition states, the quality factor decreases in both directions if params.transition and Quality > 1.0: Quality = 2.0 - Quality # Check convergence criteria - Converged_energy = np.abs(Egap) < params.Convergence_energy + Converged_energy = np.abs(del_E) < params.Convergence_energy Converged_grms = rms_gradient < params.Convergence_grms Converged_gmax = max_gradient < params.Convergence_gmax Converged_drms = rms_displacement < params.Convergence_drms @@ -694,7 +708,7 @@ def evaluateStep(self): # 2020-03-10: Step quality thresholds are hard-coded here. colors = {} if Quality > 0.75: step_state = StepState.Good - elif Quality > (0.5 if params.transition or params.irc else 0.25): step_state = StepState.Okay + elif Quality > (0.5 if params.transition else 0.65 if (params.irc and not self.IRC_opt) else 0.25): step_state = StepState.Okay elif Quality > 0.0: step_state = StepState.Poor else: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[91m" @@ -730,17 +744,18 @@ def reset_irc(): self.IRC_direction = -1 self.Iteration = 0 self.X = self.X_hist[0].copy() - self.coords = self.X_hist[0].copy() self.IC = self.IC0 + self.checkCoordinateSystem(cartesian=isinstance(self.IC,CartesianCoordinates)) self.E = self.progress.qm_energies[0] self.gradx = self.progress.qm_grads[0] - self.progress = self.progress[::-1] + self.progress = self.progress[::-1]#[:-1] self.trust = self.params.trust self.IRC_opt = False self.trustprint = "=" self.params.tmax = self.trust self.IRC_total_disp = 0.0 - self.prevQ = 0.0 + self.Qprev = 1.0 + #self.calcEnergyForce() self.prepareFirstStep() if params.irc: @@ -755,14 +770,23 @@ def reset_irc(): reset_irc() return - if step_state in (StepState.Poor, StepState.Reject) and not self.IRC_opt and self.Iteration > 1: - if not np.isclose(Quality, self.prevQ): - step_state = StepState.Reject - else: - logger.info("Checking coordinate system\n") - self.checkCoordinateSystem() + IC_check = self.IC.bork + if step_state in (StepState.Poor, StepState.Reject) and not self.IRC_opt: + if np.isclose(self.trust, params.tmin) and np.isclose(self.Qprev, Quality): + logger.info("IRC stuck with the minimum step-size and bad quality step. Forcing it to take a step\n") + step_state = StepState.Poor + elif self.Qprev < 0.65 and Quality > 0: + self.trust = params.tmin step_state = StepState.Poor - self.prevQ = Quality + else: + step_state = StepState.Reject + + if not self.IRC_substep_success: + step_state = StepState.Reject + IC_check = True + + self.Qprev = Quality + if self.IRC_total_disp > 5*self.IRC_init_step: if criteria_met : if self.IRC_direction == 1: @@ -817,8 +841,7 @@ def reset_irc(): # logger.info("LPW: Recalculating Hessian\n") # self.recalcHess = True if step_state in (StepState.Poor, StepState.Reject): - #new_trust = max(params.tmin, min(self.trust, self.cnorm)/2) - new_trust = min(params.tmin, self.trust/2) if params.irc and not self.IRC_opt else max(params.tmin, min(self.trust, self.cnorm)/2) + new_trust = max(params.tmin, min(self.trust, self.cnorm)/2) # if (Converged_grms or Converged_gmax) or (params.molcnv and Converged_molpro_gmax): # new_trust = max(new_trust, self.params.Convergence_dmax if self.params.usedmax else self.params.Convergence_drms) self.trustprint = "\x1b[91m-\x1b[0m" if new_trust < self.trust else "=" @@ -838,7 +861,7 @@ def reset_irc(): self.trustprint = "=" if step_state == StepState.Reject: - if params.irc and not self.IRC_opt: + if params.irc and not self.IRC_opt and self.Iteration > 1: self.IRC_total_disp -= self.IRC_mwdxstep self.Iteration -= 1 logger.info("\x1b[93mRejecting step - low quality IRC step\x1b[0m\n") @@ -852,9 +875,13 @@ def reset_irc(): self.engine.load_guess_files(self.dirname) self.recalcHess = False self.progress = self.progress[:-1] - if Quality < 0.1: - logger.info("Checking coordinate system\n") - self.checkCoordinateSystem() + if Quality < 0.65 or IC_check: + if self.IC.bork or not self.IRC_substep_success: + logger.info("Failed inverse iteration - checking coordinate system\n") + self.checkCoordinateSystem(recover=True, cartesian=isinstance(self.IC, CartesianCoordinates)) + else: + logger.info("Checking coordinate system\n") + self.checkCoordinateSystem(cartesian=isinstance(self.IC, CartesianCoordinates)) return if hasattr(self, 'X_rj') and np.allclose(self.X_rj, self.X, atol=1e-6): logger.info("\x1b[93mA previously rejected step was repeated; accepting to avoid infinite loop\x1b[0m\n") diff --git a/geometric/params.py b/geometric/params.py index 2176fd2c..1abed1e5 100644 --- a/geometric/params.py +++ b/geometric/params.py @@ -509,4 +509,4 @@ def parse_neb_args(*args): if 'engine' not in args_dict: args_dict['engine'] = 'tera' - return args_dict \ No newline at end of file + return args_dict From 4837b523c8e98ec3749a3fff30ff540fedb5a528 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Tue, 25 Jul 2023 12:15:18 -0700 Subject: [PATCH 24/35] IRC_step() modified --- geometric/optimize.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index a6a57e88..2eec418c 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -126,10 +126,9 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru # IRC related attributes self.IRC_direction = 1 self.IRC_opt = False - self.IRC_vary_stepsize = False + self.IRC_substep_success = True self.Qprev = 0.0 self.IRC_total_disp = 0.0 - #self.Internals = self.IC.Internals.copy() if print_info: self.print_info() @@ -567,18 +566,21 @@ def IRC_step(self): self.IRC_total_disp += mwdx const = self.find_lambda(min_lambda, Heig, Hvecs, g_M, p_M) cnorm = self.get_cartesian_norm(dy) # Angstrom - self.IRC_substep_success = True - if ((const > 1 or min_lambda > Heig[0]) and irc_sub_iteration > 100) or (mwdx > self.IRC_init_step*2 and cnorm > self.trust): - logger.info("IRC second sub-step failed. Rejecting the step.\n") + if ((const > 1 or min_lambda > Heig[0]) and irc_sub_iteration > 100) : + if mwdx > self.IRC_init_step*1.5 and cnorm > self.trust and self.IRC_substep_success: + logger.info("IRC second sub-step failed. Rejecting the step.\n") + self.IRC_substep_success = False + else: + logger.info("IRC second sub-step failed again. Taking a half-step.\n") + dy = dy_to_pivot + self.IRC_substep_success = True logger.info('X Failed half step dy = %.5f \n' % np.linalg.norm(p_prime)) logger.info('X Failed half step mw-dx = %.5f Bohr*sqrt(amu)\n\n' % half_mwdx) - logger.info('X Failed total step dy: %.5f \n' %dy_norm) logger.info('X Failed total step mw-dx = %.5f Bohr*sqrt(amu)\n' % mwdx) logger.info('X Failed total cnorm: %.5f \n' %cnorm) - #logger.info('Constraint: %.5f \n' %const) - #logger.info('dq_new: %.5f \n' %np.linalg.norm(dq_new)) - self.IRC_substep_success = False + logger.info('Constraint: %.5f \n' %const) + logger.info('dq_new: %.5f \n' %np.linalg.norm(dq_new)) break irc_sub_iteration += 1 p_prime += dq_new From 49cee6304badf9767d79b7002cc7a20e2821d3e3 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Fri, 28 Jul 2023 11:02:13 -0700 Subject: [PATCH 25/35] IRC second sub step modified --- geometric/optimize.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 2eec418c..0626cb78 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -567,7 +567,7 @@ def IRC_step(self): const = self.find_lambda(min_lambda, Heig, Hvecs, g_M, p_M) cnorm = self.get_cartesian_norm(dy) # Angstrom if ((const > 1 or min_lambda > Heig[0]) and irc_sub_iteration > 100) : - if mwdx > self.IRC_init_step*1.5 and cnorm > self.trust and self.IRC_substep_success: + if mwdx > self.IRC_stepsize*1.5 and cnorm > self.trust and self.IRC_substep_success: logger.info("IRC second sub-step failed. Rejecting the step.\n") self.IRC_substep_success = False else: @@ -777,7 +777,7 @@ def reset_irc(): if np.isclose(self.trust, params.tmin) and np.isclose(self.Qprev, Quality): logger.info("IRC stuck with the minimum step-size and bad quality step. Forcing it to take a step\n") step_state = StepState.Poor - elif self.Qprev < 0.65 and Quality > 0: + elif self.Qprev < 0.65 and Quality > 0.25: self.trust = params.tmin step_state = StepState.Poor else: From bb442cdf1096b5e5866ba0a2f752c1e0f0c0f040 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Tue, 22 Aug 2023 16:08:33 -0700 Subject: [PATCH 26/35] IC Hessian is recalculated when ICs change during IRC --- geometric/optimize.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index a6a57e88..5d8d1a75 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -207,7 +207,10 @@ def refreshCoordinates(self): if isinstance(self.IC, DelocalizedInternalCoordinates): self.IC.build_dlc(self.X) # With redefined internal coordinates, the Hessian needs to be rebuilt - self.rebuild_hessian() + if self.params.irc: + self.H = self.IC.calcHess(self.Xprev, self.Gxprev, self.Hx) + else: + self.rebuild_hessian() # Current values of internal coordinates and IC gradient are recalculated self.Y = self.IC.calculate(self.X) self.G = self.IC.calcGrad(self.X, self.gradx) @@ -239,6 +242,8 @@ def checkCoordinateSystem(self, recover=False, cartesian=False): # Set current ICs to the new one if changed or recover or cartesian: self.IC = IC1 + if self.params.irc: + self.Hx = IC1.calcHessCart(self.Xprev, self.Yprev, self.H) self.refreshCoordinates() return True else: return False @@ -586,7 +591,7 @@ def IRC_step(self): logger.info('Angle between v1 and v2: %2.f \n' % deg) logger.info('Half step dy = %.5f \n' % np.linalg.norm(p_prime)) logger.info('Half step mw-dx = %.5f Bohr*sqrt(amu)\n\n' % half_mwdx) - logger.info('=> Total step dy = %.5f \n' % np.linalg.norm(dy)) + logger.info('=> Total step dy = %.5f \n' % dy_norm) logger.info('=> Total step mw-dx = %.5f Bohr*sqrt(amu)\n' % mwdx) self.Iteration += 1 return dy @@ -745,10 +750,9 @@ def reset_irc(): self.Iteration = 0 self.X = self.X_hist[0].copy() self.IC = self.IC0 - self.checkCoordinateSystem(cartesian=isinstance(self.IC,CartesianCoordinates)) self.E = self.progress.qm_energies[0] self.gradx = self.progress.qm_grads[0] - self.progress = self.progress[::-1]#[:-1] + self.progress = self.progress[::-1] self.trust = self.params.trust self.IRC_opt = False self.trustprint = "=" @@ -780,6 +784,7 @@ def reset_irc(): step_state = StepState.Poor else: step_state = StepState.Reject + IC_check = True if not self.IRC_substep_success: step_state = StepState.Reject From ce945dc373d68a773155fd2abd8f1ffdbfa405c1 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Sat, 2 Sep 2023 14:54:05 -0700 Subject: [PATCH 27/35] IRC builds a new IC when ICs change starting from the Hx of TS structure. --- geometric/optimize.py | 102 +++++++++++++++++++++++++----------------- geometric/params.py | 2 + 2 files changed, 62 insertions(+), 42 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 197e706e..e3bfee8a 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -127,8 +127,9 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru self.IRC_direction = 1 self.IRC_opt = False self.IRC_substep_success = True - self.Qprev = 0.0 self.IRC_total_disp = 0.0 + self.IC_changed = False + self.prevQ = 1.0 if print_info: self.print_info() @@ -206,10 +207,10 @@ def refreshCoordinates(self): if isinstance(self.IC, DelocalizedInternalCoordinates): self.IC.build_dlc(self.X) # With redefined internal coordinates, the Hessian needs to be rebuilt - if self.params.irc: - self.H = self.IC.calcHess(self.Xprev, self.Gxprev, self.Hx) - else: - self.rebuild_hessian() + #if self.params.irc: + # self.H = self.IC.calcHess(self.X, self.gradx, self.Hx) + #else: + self.rebuild_hessian() # Current values of internal coordinates and IC gradient are recalculated self.Y = self.IC.calculate(self.X) self.G = self.IC.calcGrad(self.X, self.gradx) @@ -230,7 +231,7 @@ def checkCoordinateSystem(self, recover=False, cartesian=False): raise ValueError("Cannot continue a constrained optimization; please implement constrained optimization in Cartesian coordinates") IC1 = CartesianCoordinates(newmol) else: - IC1 = self.IC.__class__(newmol, connect=self.IC.connect, addcart=self.IC.addcart, build=False, conmethod=self.IC.conmethod) + IC1 = self.IC.__class__(newmol, connect=self.IC.connect, addcart=self.IC.addcart, build=False, conmethod=self.IC.conmethod if hasattr(self.IC, 'conmethod') else 0) if self.IC.haveConstraints(): IC1.getConstraints_from(self.IC) # Check for differences changed = (IC1 != self.IC) @@ -240,9 +241,17 @@ def checkCoordinateSystem(self, recover=False, cartesian=False): logger.info(self.IC.repr_diff(IC1)+'\n') # Set current ICs to the new one if changed or recover or cartesian: + #if self.params.irc: + # self.Hx = self.IC.calcHessCart(self.X, self.Y, self.H) + #original_IC = deepcopy(self.IC.Prims.Internals) + #logger.info("Adding\n") + #for newPrim in IC1.Prims.Internals: + # if newPrim not in original_IC: + # logger.info(newPrim.__repr__() + '\n') + # self.IC.Prims.Internals.append(newPrim) + #self.IC.Prims.reorderPrimitives() + #else: self.IC = IC1 - if self.params.irc: - self.Hx = IC1.calcHessCart(self.Xprev, self.Yprev, self.H) self.refreshCoordinates() return True else: return False @@ -267,7 +276,10 @@ def calcGradNorm(self): return rms_gradient, max_gradient def rebuild_hessian(self): - self.H0 = self.IC.guess_hessian(self.coords) + if self.params.irc: + self.H0 = self.IC.calcHess(self.coords.copy(), self.Gx_init, self.Hx0) + else: + self.H0 = self.IC.guess_hessian(self.coords) self.H = update_hessian(self.IC, self.H0, self.X_hist, self.Gx_hist, self.params, trust_limit=True, max_updates=100) def frequency_analysis(self, hessian, suffix, afterOpt): @@ -384,6 +396,7 @@ def prepareFirstStep(self): # Initial history self.X_hist = [self.X] self.Gx_hist = [self.gradx] + self.Gx_init = self.gradx.copy() # Initial Hessian if hasattr(self, 'Hx'): # Compute IC Hessian from Cartesian Hessian at the current step @@ -476,6 +489,7 @@ def step(self): def IRC_step(self): self.farConstraints = self.IC.haveConstraints() and self.IC.maxConstraintViolation(self.X) > 1e-1 logger.info("IRC sub-step 1: Finding the pivot point (q*_{k+1})\n") + # Need to take a step towards the pivot point self.IC.clearCache() MWGMat = self.IC.GMatrix(self.X, invMW=True) @@ -527,9 +541,9 @@ def IRC_step(self): dy_to_pivot = self.IC.calcDiff(X_pivot, X0) # Calculating sqrt(mass) weighted Cartesian coordinate MWGMat_sqrt_inv, MWGMat_sqrt = self.IC.GInverse_SVD(X_pivot, sqrt=True, invMW=True) - mwdx = np.dot(MWGMat_sqrt_inv, dy_to_pivot) + mwdx_1 = np.dot(MWGMat_sqrt_inv, dy_to_pivot) logger.info("Half step dy = %.5f\n" %np.linalg.norm(dy_to_pivot)) - logger.info("Half step mw-dx = %.5f Bohr*sqrt(amu)\n" %np.linalg.norm(mwdx)) + logger.info("Half step mw-dx = %.5f Bohr*sqrt(amu)\n" %np.linalg.norm(mwdx_1)) # We are at the pivot point logger.info('\nIRC sub-step 2: Finding the next point (q_{k+1})\n') @@ -572,11 +586,11 @@ def IRC_step(self): const = self.find_lambda(min_lambda, Heig, Hvecs, g_M, p_M) cnorm = self.get_cartesian_norm(dy) # Angstrom if ((const > 1 or min_lambda > Heig[0]) and irc_sub_iteration > 100) : - if mwdx > self.IRC_stepsize*1.5 and cnorm > self.trust and self.IRC_substep_success: + if (mwdx > self.IRC_stepsize*1.5 or mwdx_1 > self.IRC_stepsize*1.5) and cnorm > self.trust and self.IRC_substep_success: logger.info("IRC second sub-step failed. Rejecting the step.\n") self.IRC_substep_success = False else: - logger.info("IRC second sub-step failed again. Taking a half-step.\n") + logger.info("IRC second sub-step failed. Taking a half-step.\n") dy = dy_to_pivot self.IRC_substep_success = True logger.info('X Failed half step dy = %.5f \n' % np.linalg.norm(p_prime)) @@ -715,12 +729,12 @@ def evaluateStep(self): # 2020-03-10: Step quality thresholds are hard-coded here. colors = {} if Quality > 0.75: step_state = StepState.Good - elif Quality > (0.5 if params.transition else 0.65 if (params.irc and not self.IRC_opt) else 0.25): step_state = StepState.Okay + elif Quality > (0.5 if params.transition or params.irc else 0.25): step_state = StepState.Okay elif Quality > 0.0: step_state = StepState.Poor else: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[91m" colors['quality'] = "\x1b[91m" - step_state = StepState.Reject if (Quality < -1.0 or params.transition) else StepState.Poor + step_state = StepState.Reject if (Quality < -1.0 or params.transition or params.irc) else StepState.Poor if 'energy' not in colors: colors['energy'] = "\x1b[92m" if Converged_energy else "\x1b[0m" if 'quality' not in colors: colors['quality'] = "\x1b[0m" colors['grms'] = "\x1b[92m" if Converged_grms else "\x1b[0m" @@ -758,9 +772,10 @@ def reset_irc(): self.trust = self.params.trust self.IRC_opt = False self.trustprint = "=" - self.params.tmax = self.trust + #self.params.tmax = self.trust + self.IC_changed = False self.IRC_total_disp = 0.0 - self.Qprev = 1.0 + self.prevQ = 1.0 #self.calcEnergyForce() self.prepareFirstStep() @@ -775,24 +790,23 @@ def reset_irc(): logger.info("IRC backward direction starts here\n\n") reset_irc() return - - IC_check = self.IC.bork - if step_state in (StepState.Poor, StepState.Reject) and not self.IRC_opt: - if np.isclose(self.trust, params.tmin) and np.isclose(self.Qprev, Quality): - logger.info("IRC stuck with the minimum step-size and bad quality step. Forcing it to take a step\n") - step_state = StepState.Poor - elif self.Qprev < 0.65 and Quality > 0.25: + + IC_check = False + if step_state in (StepState.Reject, StepState.Poor) and not self.IRC_opt: + step_state = StepState.Reject + if np.isclose(self.trust, params.tmin): + logger.info("IRC stuck with the minimum step-size and bad quality step. Forcing it to take a step.\n") + step_state = StepState.Okay + if self.Iteration < 3: + logger.info("Bad quality IRC step detected near the starting point. Decreasing the step-size to the minimum.\n") self.trust = params.tmin - step_state = StepState.Poor - else: - step_state = StepState.Reject - IC_check = True - + IC_check = True + if not self.IRC_substep_success: step_state = StepState.Reject IC_check = True - self.Qprev = Quality + self.prevQ = Quality if self.IRC_total_disp > 5*self.IRC_init_step: if criteria_met : @@ -805,11 +819,11 @@ def reset_irc(): logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED return - elif (IRC_converged or self.IRC_dystep < 1e-4) and not self.IRC_opt: + elif IRC_converged and not self.IRC_opt: self.IRC_opt = True - if self.cnorm > 1e-4: - self.trust = self.cnorm - self.params.tmax = self.params.trust*3 + #if self.cnorm > 1e-4: + # self.trust = self.cnorm + #self.params.tmax = self.params.trust*3 logger.info("Switching to optimization\n") else: @@ -882,13 +896,17 @@ def reset_irc(): self.engine.load_guess_files(self.dirname) self.recalcHess = False self.progress = self.progress[:-1] - if Quality < 0.65 or IC_check: - if self.IC.bork or not self.IRC_substep_success: - logger.info("Failed inverse iteration - checking coordinate system\n") - self.checkCoordinateSystem(recover=True, cartesian=isinstance(self.IC, CartesianCoordinates)) - else: - logger.info("Checking coordinate system\n") - self.checkCoordinateSystem(cartesian=isinstance(self.IC, CartesianCoordinates)) + #if self.IC.bork: + # logger.info("Failed inverse iteration - checking coordinate system\n") + # self.checkCoordinateSystem(recover=True, cartesian=isinstance(self.IC, CartesianCoordinates)) + #else: + # self.X_hist = self.X_hist[:-1] + # self.Gx_hist = self.Gx_hist[:-1] + if IC_check: + logger.info("Checking coordinate system\n") + IC_changed = self.checkCoordinateSystem(cartesian=isinstance(self.IC, CartesianCoordinates)) + if IC_changed and not self.IC_changed: + self.IC_changed = IC_changed return if hasattr(self, 'X_rj') and np.allclose(self.X_rj, self.X, atol=1e-6): logger.info("\x1b[93mA previously rejected step was repeated; accepting to avoid infinite loop\x1b[0m\n") @@ -929,7 +947,7 @@ def reset_irc(): ### Rebuild Coordinate System if Necessary ### UpdateHessian = (not self.params.hessian == 'each') - if self.IC.bork: + if self.IC.bork and not params.irc: logger.info("Failed inverse iteration - checking coordinate system\n") self.checkCoordinateSystem(recover=True) UpdateHessian = False diff --git a/geometric/params.py b/geometric/params.py index 1abed1e5..a5b639f5 100644 --- a/geometric/params.py +++ b/geometric/params.py @@ -202,6 +202,8 @@ def printInfo(self): logger.info(' Net force and torque will be projected out of gradient.\n') if self.transition: logger.info(' Transition state optimization requested.\n') + if self.irc: + logger.info(' The IRC method requested.\n') if self.hessian == 'first': logger.info(' Hessian will be computed on the first step.\n') elif self.hessian == 'each': From 41e26dcf530c7264c5705dd539e650d28f3eee4d Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Thu, 14 Sep 2023 13:55:20 -0700 Subject: [PATCH 28/35] IRC tested with 500 cases --- geometric/optimize.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index e3bfee8a..63e8f3ab 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -126,8 +126,8 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru # IRC related attributes self.IRC_direction = 1 self.IRC_opt = False - self.IRC_substep_success = True self.IRC_total_disp = 0.0 + self.IRC_substep_success = True self.IC_changed = False self.prevQ = 1.0 if print_info: @@ -585,8 +585,11 @@ def IRC_step(self): self.IRC_total_disp += mwdx const = self.find_lambda(min_lambda, Heig, Hvecs, g_M, p_M) cnorm = self.get_cartesian_norm(dy) # Angstrom - if ((const > 1 or min_lambda > Heig[0]) and irc_sub_iteration > 100) : - if (mwdx > self.IRC_stepsize*1.5 or mwdx_1 > self.IRC_stepsize*1.5) and cnorm > self.trust and self.IRC_substep_success: + if ((const > 1 or min_lambda > Heig[0]) and irc_sub_iteration > 100) or mwdx > self.IRC_stepsize*1.5: + #logger.info("mwdx_1: %f \n" %np.linalg.norm(mwdx_1)) + #logger.info("mwdx: %f \n" %mwdx) + #logger.info("cnorm: %f \n" %cnorm) + if self.IRC_substep_success: logger.info("IRC second sub-step failed. Rejecting the step.\n") self.IRC_substep_success = False else: @@ -600,6 +603,8 @@ def IRC_step(self): logger.info('X Failed total cnorm: %.5f \n' %cnorm) logger.info('Constraint: %.5f \n' %const) logger.info('dq_new: %.5f \n' %np.linalg.norm(dq_new)) + else: + self.IRC_substep_success = True break irc_sub_iteration += 1 p_prime += dq_new @@ -773,6 +778,7 @@ def reset_irc(): self.IRC_opt = False self.trustprint = "=" #self.params.tmax = self.trust + self.IRC_substep_success = True self.IC_changed = False self.IRC_total_disp = 0.0 self.prevQ = 1.0 From a364fc3c7a94a53a4952fe695a6d48666b491fdc Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Sun, 17 Sep 2023 11:34:24 -0700 Subject: [PATCH 29/35] codecov ignores IRCError --- .coveragerc | 1 + 1 file changed, 1 insertion(+) diff --git a/.coveragerc b/.coveragerc index 514cac63..4b0b2a4e 100644 --- a/.coveragerc +++ b/.coveragerc @@ -19,6 +19,7 @@ exclude_lines = raise NEBChainRespaceError raise NEBStructureError raise NEBBandGradientError + raise IRCError def visualize verbose: if verbose >= From 970e37e49038fb61bb46f86c39e89bdb238554d1 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Thu, 21 Sep 2023 13:43:30 -0700 Subject: [PATCH 30/35] irc test updated (smaller stepsize) --- geometric/tests/test_irc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/geometric/tests/test_irc.py b/geometric/tests/test_irc.py index 6eeeeb8e..d574bf1c 100644 --- a/geometric/tests/test_irc.py +++ b/geometric/tests/test_irc.py @@ -18,7 +18,7 @@ def test_hcn_irc_psi4(localizer): """ shutil.copy2(os.path.join(datad, 'hcn_irc.psi4in'), os.path.join(os.getcwd(), 'hcn_irc.psi4in')) progress = geometric.optimize.run_optimizer(engine='psi4', input='hcn_irc.psi4in', converge=['set', 'GAU_LOOSE'], - nt=4, reset=False, trust=0.1, irc=True, maxiter=50) + nt=4, reset=False, trust=0.05, irc=True, maxiter=50) e_ref1 = -92.35408411 e_ref2 = -92.33971205 max_e = np.max(progress.qm_energies) @@ -33,5 +33,5 @@ def test_hcn_irc_psi4(localizer): assert np.isclose(min(reac_e, prod_e), e_ref1) assert np.isclose(max(reac_e, prod_e), e_ref2) - # Check that the IRC converged in less than 50 iterations - assert len(progress) < 80 + # Check that the IRC converged in less than 100 iterations + assert len(progress) < 100 From e82507fe511ff789c8ceeb3490599c9dd238bfef Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Thu, 21 Sep 2023 16:52:11 -0700 Subject: [PATCH 31/35] optimize.py modified to return converged status when Converge_maxiter provided --- geometric/optimize.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 94c2a119..60b37464 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -853,10 +853,14 @@ def reset_irc(): self.state = OPT_STATE.CONVERGED return - if self.Iteration > params.maxiter: + if self.Iteration >= params.maxiter: self.SortedEigenvalues(self.H) logger.info("Maximum iterations reached (%i); increase --maxiter for more\n" % params.maxiter) - self.state = OPT_STATE.FAILED + if params.Converge_maxiter: + logger.info("Exiting normally because --converge maxiter was set.\n") + self.state = OPT_STATE.CONVERGED + else: + self.state = OPT_STATE.FAILED return if params.qccnv and Converged_grms and (Converged_drms or Converged_energy) and self.conSatisfied: From d7daaae229179bc21716fb081548a254cf51bc35 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Fri, 15 Mar 2024 19:58:35 -0700 Subject: [PATCH 32/35] Modifications to address PR comments --- geometric/internal.py | 3 + geometric/optimize.py | 166 +++++++++++++++++++++--------------------- 2 files changed, 85 insertions(+), 84 deletions(-) diff --git a/geometric/internal.py b/geometric/internal.py index 488d71df..8de87757 100644 --- a/geometric/internal.py +++ b/geometric/internal.py @@ -1875,6 +1875,9 @@ def GInverse_SVD(self, xyz, sqrt=False, invMW=False): # print "%i atoms; %i/%i singular values are > 1e-6" % (xyz.shape[0], LargeVals, len(S)) Sinv = np.diag(Sinv) Inv = multi_dot([V, Sinv, UT]) + + # When "sqrt" is True, return the sqrt of the G matrix along with its inverse. + # Sqrt of the G matrix is used to calculate gradients and Hessian in mass-weighted IC. if sqrt: Ssqrt = np.diag(Ssqrt) Sqrt = multi_dot([V, Ssqrt, UT]) diff --git a/geometric/optimize.py b/geometric/optimize.py index a979380d..438672c3 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -122,13 +122,9 @@ def __init__(self, coords, molecule, IC, engine, dirname, params, print_info=Tru self.lowq_tr_limit = 1 # Recalculate the Hessian after a trigger - for example if the energy changes by a lot during TS optimization. self.recalcHess = False - # IRC related attributes - self.IRC_direction = 1 - self.IRC_opt = False - self.IRC_total_disp = 0.0 - self.IRC_substep_success = True - self.IC_changed = False - self.prevQ = 1.0 + # IRC related information + self.IRC_info = {"direction" : 1, "opt" : False, "total_disp" : 0.0, + "substep_success" : True, "IC_changed" : False} if print_info: self.print_info() @@ -452,54 +448,6 @@ def guess_g(self, g, H, disp): g_new = g + np.dot(H, disp) return g_new - def step(self): - if self.params.irc: - """ - Take an IRC step. - """ - if self.IRC_opt: - dy = self.optimize_step() - else: - dy = self.IRC_step() - else: - """ - Take an optimization step. - """ - dy = self.optimize_step() - - if dy is None: return - - ### Before updating any of our variables, copy current variables to "previous" - self.cnorm = self.get_cartesian_norm(dy) - ### DONE OBTAINING THE STEP ### - if isinstance(self.IC, PrimitiveInternalCoordinates): - idx = np.argmax(np.abs(dy)) - iunit = np.zeros_like(dy) - iunit[idx] = 1.0 - self.prim_msg = "Along %s %.3f" % (self.IC.Internals[idx], np.dot(dy/np.linalg.norm(dy), iunit)) - ### These quantities, computed previously, are no longer used. - # Dot product of the gradient with the step direction - # Dot = -np.dot(dy/np.linalg.norm(dy), self.G/np.linalg.norm(self.G)) - # Whether the Cartesian norm comes close to the trust radius - # bump = cnorm > 0.8 * self.trust - self.Yprev = self.Y.copy() - self.Xprev = self.X.copy() - self.Gxprev = self.gradx.copy() - self.Gprev = self.G.copy() - self.Eprev = self.E - ### Update the Internal Coordinates ### - X0 = self.X.copy() - self.newCartesian(dy) - ## The "actual" dy may be different from the one passed to newCartesian(), - ## for example if we enforce constraints or don't get the step we expect. - dy = self.IC.calcDiff(self.X, X0) - # dyp = self.IC.Prims.calcDiff(self.X, X0) - # print("Actual dy:", dy) - self.Y += dy - self.expect = flat(0.5*multi_dot([row(dy),self.H,col(dy)]))[0] + np.dot(dy,self.G) - # self.expectdG = np.dot(self.H, col(dy).flatten()) - self.state = OPT_STATE.NEEDS_EVALUATION - def IRC_step(self): self.farConstraints = self.IC.haveConstraints() and self.IC.maxConstraintViolation(self.X) > 1e-1 logger.info("IRC sub-step 1: Finding the pivot point (q*_{k+1})\n") @@ -526,7 +474,7 @@ def IRC_step(self): # Following the imaginary mode vector Im_mode = self.TSNormal_modes_x[0] - Im_mode *= self.IRC_direction + Im_mode *= self.IRC_info.get("direction") v = self.IC.calcDiff(X0 + Im_mode, X0) X = self.IC.newCartesian(X0, v) v = self.IC.calcDiff(X, X0) @@ -541,9 +489,9 @@ def IRC_step(self): # v = self.IRC_init_v else: - v = self.G.copy() # Internal coordinate gradients + v = self.G.copy() # Internal coordinate gradients - invMW_v = np.dot(MWGMat, v)# Inverse mass-weighted vector + invMW_v = np.dot(MWGMat, v) # Inverse mass-weighted vector # Normalization factor N = 1 / np.sqrt(np.dot(v.T, np.dot(MWGMat, v))) self.IRC_stepsize = self.trust * ang2bohr * self.IRC_adjfactor @@ -596,20 +544,20 @@ def IRC_step(self): half_mwdx = np.linalg.norm(np.dot(MWGMat_sqrt_inv, p_prime)) self.IRC_dystep = dy_norm self.IRC_mwdxstep = mwdx - self.IRC_total_disp += mwdx + self.IRC_info["total_disp"] += mwdx const = self.find_lambda(min_lambda, Heig, Hvecs, g_M, p_M) cnorm = self.get_cartesian_norm(dy) # Angstrom if ((const > 1 or min_lambda > Heig[0]) and irc_sub_iteration > 100) or mwdx > self.IRC_stepsize*1.5: #logger.info("mwdx_1: %f \n" %np.linalg.norm(mwdx_1)) #logger.info("mwdx: %f \n" %mwdx) #logger.info("cnorm: %f \n" %cnorm) - if self.IRC_substep_success: + if self.IRC_info.get("substep_success"): logger.info("IRC second sub-step failed. Rejecting the step.\n") - self.IRC_substep_success = False + self.IRC_info["substep_success"] = False else: logger.info("IRC second sub-step failed. Taking a half-step.\n") dy = dy_to_pivot - self.IRC_substep_success = True + self.IRC_info["substep_success"] = True logger.info('X Failed half step dy = %.5f \n' % np.linalg.norm(p_prime)) logger.info('X Failed half step mw-dx = %.5f Bohr*sqrt(amu)\n\n' % half_mwdx) logger.info('X Failed total step dy: %.5f \n' %dy_norm) @@ -618,7 +566,7 @@ def IRC_step(self): logger.info('Constraint: %.5f \n' %const) logger.info('dq_new: %.5f \n' %np.linalg.norm(dq_new)) else: - self.IRC_substep_success = True + self.IRC_info["substep_success"] = True break irc_sub_iteration += 1 p_prime += dq_new @@ -632,6 +580,7 @@ def IRC_step(self): return dy def optimize_step(self): + # This function is identical to the previous version without IRC (a copy of lines 426-504) params = self.params if np.isnan(self.G).any(): raise RuntimeError("Gradient contains nan - check output and temp-files for possible errors") @@ -714,6 +663,56 @@ def optimize_step(self): return dy + + def step(self): + if self.params.irc: + """ + Take an IRC step. + """ + if self.IRC_info.get("opt"): + # If the IRC switches to optimization, take an optimization step. () + dy = self.optimize_step() + else: + dy = self.IRC_step() + else: + """ + Take an optimization step. + """ + dy = self.optimize_step() + + if dy is None: return + + ### Before updating any of our variables, copy current variables to "previous" + self.cnorm = self.get_cartesian_norm(dy) + ### DONE OBTAINING THE STEP ### + if isinstance(self.IC, PrimitiveInternalCoordinates): + idx = np.argmax(np.abs(dy)) + iunit = np.zeros_like(dy) + iunit[idx] = 1.0 + self.prim_msg = "Along %s %.3f" % (self.IC.Internals[idx], np.dot(dy/np.linalg.norm(dy), iunit)) + ### These quantities, computed previously, are no longer used. + # Dot product of the gradient with the step direction + # Dot = -np.dot(dy/np.linalg.norm(dy), self.G/np.linalg.norm(self.G)) + # Whether the Cartesian norm comes close to the trust radius + # bump = cnorm > 0.8 * self.trust + self.Yprev = self.Y.copy() + self.Xprev = self.X.copy() + self.Gxprev = self.gradx.copy() + self.Gprev = self.G.copy() + self.Eprev = self.E + ### Update the Internal Coordinates ### + X0 = self.X.copy() + self.newCartesian(dy) + ## The "actual" dy may be different from the one passed to newCartesian(), + ## for example if we enforce constraints or don't get the step we expect. + dy = self.IC.calcDiff(self.X, X0) + # dyp = self.IC.Prims.calcDiff(self.X, X0) + # print("Actual dy:", dy) + self.Y += dy + self.expect = flat(0.5*multi_dot([row(dy),self.H,col(dy)]))[0] + np.dot(dy,self.G) + # self.expectdG = np.dot(self.H, col(dy).flatten()) + self.state = OPT_STATE.NEEDS_EVALUATION + def evaluateStep(self): ### At this point, the state should be NEEDS_EVALUATION assert self.state == OPT_STATE.NEEDS_EVALUATION @@ -777,10 +776,13 @@ def evaluateStep(self): ### Check convergence criteria ### criteria_met = Converged_energy and Converged_grms and Converged_drms and Converged_gmax and Converged_dmax + + # The IRC method often oscillates near the end point without converging. + # If the energy, grms, and gmax converge, simple optimization procedure will be initiated. IRC_converged = Converged_energy and Converged_grms and Converged_gmax def reset_irc(): - self.IRC_direction = -1 + self.IRC_info["direction"] = -1 self.Iteration = 0 self.X = self.X_hist[0].copy() self.IC = self.IC0 @@ -788,19 +790,16 @@ def reset_irc(): self.gradx = self.progress.qm_grads[0] self.progress = self.progress[::-1] self.trust = self.params.trust - self.IRC_opt = False + self.IRC_info["opt"] = False self.trustprint = "=" - #self.params.tmax = self.trust - self.IRC_substep_success = True - self.IC_changed = False - self.IRC_total_disp = 0.0 - self.prevQ = 1.0 - #self.calcEnergyForce() + self.IRC_info["substep_success"] = True + self.IRC_info["IC_changed"] = False + self.IRC_info["total_disp"] = 0.0 self.prepareFirstStep() if params.irc: if self.Iteration > params.maxiter: - if self.IRC_direction == -1: + if self.IRC_info.get("direction") == -1: logger.info("\nIRC backward direction reached maximum iteration number\n") logger.info("Terminating IRC\n") self.state = OPT_STATE.FAILED @@ -811,7 +810,7 @@ def reset_irc(): return IC_check = False - if step_state in (StepState.Reject, StepState.Poor) and not self.IRC_opt: + if step_state in (StepState.Reject, StepState.Poor) and not self.IRC_info.get("opt"): step_state = StepState.Reject if np.isclose(self.trust, params.tmin): logger.info("IRC stuck with the minimum step-size and bad quality step. Forcing it to take a step.\n") @@ -821,25 +820,24 @@ def reset_irc(): self.trust = params.tmin IC_check = True - if not self.IRC_substep_success: + if not self.IRC_info.get("substep_success"): step_state = StepState.Reject IC_check = True - self.prevQ = Quality - if self.IRC_total_disp > 5*self.IRC_init_step: + if self.IRC_info["total_disp"] > 5*self.IRC_init_step: if criteria_met : - if self.IRC_direction == 1: + if self.IRC_info.get("direction") == 1: logger.info("\nIRC forward direction converged\n") logger.info("IRC backward direction starts here\n\n") reset_irc() - elif self.IRC_direction == -1: + elif self.IRC_info.get("direction") == -1: self.SortedEigenvalues(self.H) logger.info("Converged! =D\n") self.state = OPT_STATE.CONVERGED return - elif IRC_converged and not self.IRC_opt: - self.IRC_opt = True + elif IRC_converged and not self.IRC_info.get("opt"): + self.IRC_info["opt"] = True #if self.cnorm > 1e-4: # self.trust = self.cnorm #self.params.tmax = self.params.trust*3 @@ -905,8 +903,8 @@ def reset_irc(): self.trustprint = "=" if step_state == StepState.Reject: - if params.irc and not self.IRC_opt and self.Iteration > 1: - self.IRC_total_disp -= self.IRC_mwdxstep + if params.irc and not self.IRC_info.get("opt") and self.Iteration > 1: + self.IRC_info["total_disp"] -= self.IRC_mwdxstep self.Iteration -= 1 logger.info("\x1b[93mRejecting step - low quality IRC step\x1b[0m\n") self.trustprint = "\x1b[1;91mx\x1b[0m" @@ -928,8 +926,8 @@ def reset_irc(): if IC_check: logger.info("Checking coordinate system\n") IC_changed = self.checkCoordinateSystem(cartesian=isinstance(self.IC, CartesianCoordinates)) - if IC_changed and not self.IC_changed: - self.IC_changed = IC_changed + if IC_changed and not self.IRC_info.get("IC_changed"): + self.IRC_info["IC_changed"] = IC_changed return if hasattr(self, 'X_rj') and np.allclose(self.X_rj, self.X, atol=1e-6): logger.info("\x1b[93mA previously rejected step was repeated; accepting to avoid infinite loop\x1b[0m\n") From 329769426c0f1b36ea36e68bde3e19c8b0c2a725 Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Sat, 16 Mar 2024 17:50:16 -0700 Subject: [PATCH 33/35] Contribution information --- README.md | 2 +- docs/source/citation.rst | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 851a8b39..039252a8 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Documentation is hosted at https://geometric.readthedocs.io/ . Authors: Lee-Ping Wang, Chenchen Song -Contributors: Heejune Park (Nudged elastic band); Yudong Qiu (Psi4 engine, error handling); Daniel G. A. Smith (Testing framework, QCEngine JSON API); +Contributors: Heejune Park (Nudged elastic band, Intrinsic reaction coordinate); Yudong Qiu (Psi4 engine, error handling); Daniel G. A. Smith (Testing framework, QCEngine JSON API); Tamas K. Stenczel (GitHub Actions, ASE engine); Sebastian Lee (Molpro engine); Chaya Stern (Travis, Conda); Qiming Sun (Custom engine); Alberto Gobbi (Batch energy/gradient, logging); Josh Horton (Convergence criteria, Gaussian engine); Akhil Shajan (QUICK engine) diff --git a/docs/source/citation.rst b/docs/source/citation.rst index 74cac7d6..e57a7f03 100644 --- a/docs/source/citation.rst +++ b/docs/source/citation.rst @@ -17,7 +17,7 @@ Credits Authors: Lee-Ping Wang, Chenchen Song -Contributors: Heejune Park (Nudged elastic band); Yudong Qiu (Psi4 engine, error handling); Daniel G. A. Smith (Testing framework, QCEngine JSON API); +Contributors: Heejune Park (Nudged elastic band, Intrinsic reaction coordinate); Yudong Qiu (Psi4 engine, error handling); Daniel G. A. Smith (Testing framework, QCEngine JSON API); Tamas K. Stenczel (GitHub Actions, ASE engine); Sebastian Lee (Molpro engine); Chaya Stern (Travis, Conda); Qiming Sun (Custom engine); Alberto Gobbi (Batch energy/gradient, logging); Josh Horton (Convergence criteria, Gaussian engine); Akhil Shajan (QUICK engine) @@ -40,7 +40,7 @@ License Authors: Lee-Ping Wang, Chenchen Song - Contributors: Yudong Qiu, Daniel G. A. Smith, Sebastian Lee, Chaya Stern, Qiming Sun, + Contributors: Heejune Park, Yudong Qiu, Daniel G. A. Smith, Sebastian Lee, Chaya Stern, Qiming Sun, Alberto Gobbi, Josh Horton, Tamas K. Stenczel, Akhil Shajan Redistribution and use in source and binary forms, with or without modification, From 2df277123c6ead67ebc706aca67aebca432796bd Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Sat, 16 Mar 2024 19:58:54 -0700 Subject: [PATCH 34/35] evaluateStep will call different functions for IRC and optimization. --- geometric/optimize.py | 191 ++++++++++++++++++++++-------------------- 1 file changed, 102 insertions(+), 89 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index 438672c3..a83d3f43 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -713,6 +713,103 @@ def step(self): # self.expectdG = np.dot(self.H, col(dy).flatten()) self.state = OPT_STATE.NEEDS_EVALUATION + def reset_irc(self): + self.IRC_info["direction"] = -1 + self.Iteration = 0 + self.X = self.X_hist[0].copy() + self.IC = self.IC0 + self.E = self.progress.qm_energies[0] + self.gradx = self.progress.qm_grads[0] + self.progress = self.progress[::-1] + self.trust = self.params.trust + self.IRC_info["opt"] = False + self.trustprint = "=" + self.IRC_info["substep_success"] = True + self.IRC_info["IC_changed"] = False + self.IRC_info["total_disp"] = 0.0 + self.prepareFirstStep() + + + def evaluate_IRC_step(self, params, step_state, criteria_met, IRC_converged): + + if self.Iteration > params.maxiter: + if self.IRC_info.get("direction") == -1: + logger.info("\nIRC backward direction reached maximum iteration number\n") + logger.info("Terminating IRC\n") + self.state = OPT_STATE.FAILED + else: + logger.info("\nIRC forward direction reached maximum iteration number\n") + logger.info("IRC backward direction starts here\n\n") + self.reset_irc() + return True, step_state + + self.IC_check = False + if step_state in (StepState.Reject, StepState.Poor) and not self.IRC_info.get("opt"): + step_state = StepState.Reject + if np.isclose(self.trust, params.tmin): + logger.info("IRC stuck with the minimum step-size and bad quality step. Forcing it to take a step.\n") + step_state = StepState.Okay + if self.Iteration < 3: + logger.info("Bad quality IRC step detected near the starting point. Decreasing the step-size to the minimum.\n") + self.trust = params.tmin + self.IC_check = True + + if not self.IRC_info.get("substep_success"): + step_state = StepState.Reject + self.IC_check = True + + if self.IRC_info["total_disp"] > 5*self.IRC_init_step: + if criteria_met : + if self.IRC_info.get("direction") == 1: + logger.info("\nIRC forward direction converged\n") + logger.info("IRC backward direction starts here\n\n") + self.reset_irc() + elif self.IRC_info.get("direction") == -1: + self.SortedEigenvalues(self.H) + logger.info("Converged! =D\n") + self.state = OPT_STATE.CONVERGED + return True, step_state + elif IRC_converged and not self.IRC_info.get("opt"): + self.IRC_info["opt"] = True + #if self.cnorm > 1e-4: + # self.trust = self.cnorm + #self.params.tmax = self.params.trust*3 + logger.info("Switching to optimization\n") + + return False, step_state + + def evaluate_OPT_step(self, params, step_state, criteria_met, Converged_molpro_gmax, Converged_molpro_dmax): + if criteria_met and self.conSatisfied: + self.SortedEigenvalues(self.H) + logger.info("Converged! =D\n") + self.state = OPT_STATE.CONVERGED + return True, step_state + + if self.Iteration >= params.maxiter: + self.SortedEigenvalues(self.H) + logger.info("Maximum iterations reached (%i); increase --maxiter for more\n" % params.maxiter) + if params.Converge_maxiter: + logger.info("Exiting normally because --converge maxiter was set.\n") + self.state = OPT_STATE.CONVERGED + else: + self.state = OPT_STATE.FAILED + return True, step_state + + if params.qccnv and Converged_grms and (Converged_drms or Converged_energy) and self.conSatisfied: + self.SortedEigenvalues(self.H) + logger.info("Converged! (Q-Chem style criteria requires grms and either drms or energy)\n") + self.state = OPT_STATE.CONVERGED + return True, step_state + + if params.molcnv and Converged_molpro_gmax and (Converged_molpro_dmax or Converged_energy) and self.conSatisfied: + self.SortedEigenvalues(self.H) + logger.info("Converged! (Molpro style criteria requires gmax and either dmax or energy)\nThis is approximate since convergence checks are done in cartesian coordinates.\n") + self.state = OPT_STATE.CONVERGED + return True, step_state + + return False, step_state + + def evaluateStep(self): ### At this point, the state should be NEEDS_EVALUATION assert self.state == OPT_STATE.NEEDS_EVALUATION @@ -781,96 +878,12 @@ def evaluateStep(self): # If the energy, grms, and gmax converge, simple optimization procedure will be initiated. IRC_converged = Converged_energy and Converged_grms and Converged_gmax - def reset_irc(): - self.IRC_info["direction"] = -1 - self.Iteration = 0 - self.X = self.X_hist[0].copy() - self.IC = self.IC0 - self.E = self.progress.qm_energies[0] - self.gradx = self.progress.qm_grads[0] - self.progress = self.progress[::-1] - self.trust = self.params.trust - self.IRC_info["opt"] = False - self.trustprint = "=" - self.IRC_info["substep_success"] = True - self.IRC_info["IC_changed"] = False - self.IRC_info["total_disp"] = 0.0 - self.prepareFirstStep() - - if params.irc: - if self.Iteration > params.maxiter: - if self.IRC_info.get("direction") == -1: - logger.info("\nIRC backward direction reached maximum iteration number\n") - logger.info("Terminating IRC\n") - self.state = OPT_STATE.FAILED - else: - logger.info("\nIRC forward direction reached maximum iteration number\n") - logger.info("IRC backward direction starts here\n\n") - reset_irc() - return - - IC_check = False - if step_state in (StepState.Reject, StepState.Poor) and not self.IRC_info.get("opt"): - step_state = StepState.Reject - if np.isclose(self.trust, params.tmin): - logger.info("IRC stuck with the minimum step-size and bad quality step. Forcing it to take a step.\n") - step_state = StepState.Okay - if self.Iteration < 3: - logger.info("Bad quality IRC step detected near the starting point. Decreasing the step-size to the minimum.\n") - self.trust = params.tmin - IC_check = True - - if not self.IRC_info.get("substep_success"): - step_state = StepState.Reject - IC_check = True - - - if self.IRC_info["total_disp"] > 5*self.IRC_init_step: - if criteria_met : - if self.IRC_info.get("direction") == 1: - logger.info("\nIRC forward direction converged\n") - logger.info("IRC backward direction starts here\n\n") - reset_irc() - elif self.IRC_info.get("direction") == -1: - self.SortedEigenvalues(self.H) - logger.info("Converged! =D\n") - self.state = OPT_STATE.CONVERGED - return - elif IRC_converged and not self.IRC_info.get("opt"): - self.IRC_info["opt"] = True - #if self.cnorm > 1e-4: - # self.trust = self.cnorm - #self.params.tmax = self.params.trust*3 - logger.info("Switching to optimization\n") - + if params.irc and not self.IRC_info.get("opt"): + to_next, step_state = self.evaluate_IRC_step(params, step_state, criteria_met, IRC_converged) else: - if criteria_met and self.conSatisfied: - self.SortedEigenvalues(self.H) - logger.info("Converged! =D\n") - self.state = OPT_STATE.CONVERGED - return - - if self.Iteration >= params.maxiter: - self.SortedEigenvalues(self.H) - logger.info("Maximum iterations reached (%i); increase --maxiter for more\n" % params.maxiter) - if params.Converge_maxiter: - logger.info("Exiting normally because --converge maxiter was set.\n") - self.state = OPT_STATE.CONVERGED - else: - self.state = OPT_STATE.FAILED - return + to_next, step_state = self.evaluate_OPT_step(params, step_state, criteria_met, Converged_molpro_gmax, Converged_molpro_dmax) - if params.qccnv and Converged_grms and (Converged_drms or Converged_energy) and self.conSatisfied: - self.SortedEigenvalues(self.H) - logger.info("Converged! (Q-Chem style criteria requires grms and either drms or energy)\n") - self.state = OPT_STATE.CONVERGED - return - - if params.molcnv and Converged_molpro_gmax and (Converged_molpro_dmax or Converged_energy) and self.conSatisfied: - self.SortedEigenvalues(self.H) - logger.info("Converged! (Molpro style criteria requires gmax and either dmax or energy)\nThis is approximate since convergence checks are done in cartesian coordinates.\n") - self.state = OPT_STATE.CONVERGED - return + if to_next: return assert self.state == OPT_STATE.NEEDS_EVALUATION @@ -923,7 +936,7 @@ def reset_irc(): #else: # self.X_hist = self.X_hist[:-1] # self.Gx_hist = self.Gx_hist[:-1] - if IC_check: + if self.IC_check: logger.info("Checking coordinate system\n") IC_changed = self.checkCoordinateSystem(cartesian=isinstance(self.IC, CartesianCoordinates)) if IC_changed and not self.IRC_info.get("IC_changed"): From b2ffb783eb01a756064ba8ac0a45c8b03f180e5e Mon Sep 17 00:00:00 2001 From: Heejune Park Date: Sun, 17 Mar 2024 13:47:05 -0700 Subject: [PATCH 35/35] minor change --- geometric/optimize.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/geometric/optimize.py b/geometric/optimize.py index a83d3f43..45e74f92 100644 --- a/geometric/optimize.py +++ b/geometric/optimize.py @@ -879,11 +879,11 @@ def evaluateStep(self): IRC_converged = Converged_energy and Converged_grms and Converged_gmax if params.irc and not self.IRC_info.get("opt"): - to_next, step_state = self.evaluate_IRC_step(params, step_state, criteria_met, IRC_converged) + terminate, step_state = self.evaluate_IRC_step(params, step_state, criteria_met, IRC_converged) else: - to_next, step_state = self.evaluate_OPT_step(params, step_state, criteria_met, Converged_molpro_gmax, Converged_molpro_dmax) + terminate, step_state = self.evaluate_OPT_step(params, step_state, criteria_met, Converged_molpro_gmax, Converged_molpro_dmax) - if to_next: return + if terminate: return assert self.state == OPT_STATE.NEEDS_EVALUATION