From bc582bd38a0ab62f579b20feaff3060a238b357c Mon Sep 17 00:00:00 2001 From: MitchLahm Date: Tue, 13 Dec 2022 16:00:08 -0500 Subject: [PATCH 1/7] New shiny test suite, and a little refactoring --- Example/2_Methanol/molpro/CMA_0B/main.py | 2 +- __pycache__/__init__.cpython-35.pyc | Bin 0 -> 141 bytes __pycache__/__init__.cpython-39.pyc | Bin 0 -> 149 bytes __pycache__/algorithm.cpython-35.pyc | Bin 0 -> 2540 bytes __pycache__/algorithm.cpython-39.pyc | Bin 0 -> 2302 bytes __pycache__/cma.cpython-39.pyc | Bin 0 -> 10193 bytes __pycache__/directory_tree.cpython-39.pyc | Bin 0 -> 3705 bytes __pycache__/f_convert.cpython-39.pyc | Bin 0 -> 2408 bytes __pycache__/f_read.cpython-39.pyc | Bin 0 -> 1136 bytes __pycache__/force_constant.cpython-39.pyc | Bin 0 -> 2034 bytes __pycache__/g_matrix.cpython-39.pyc | Bin 0 -> 1184 bytes __pycache__/gf_method.cpython-39.pyc | Bin 0 -> 1999 bytes __pycache__/int2cart.cpython-39.pyc | Bin 0 -> 3467 bytes __pycache__/masses.cpython-39.pyc | Bin 0 -> 50973 bytes __pycache__/options.cpython-39.pyc | Bin 0 -> 2030 bytes __pycache__/reap.cpython-39.pyc | Bin 0 -> 5795 bytes __pycache__/rmsd.cpython-39.pyc | Bin 0 -> 11180 bytes __pycache__/s_vectors.cpython-39.pyc | Bin 0 -> 14226 bytes __pycache__/sapelo_template.cpython-39.pyc | Bin 0 -> 2153 bytes __pycache__/submit.cpython-39.pyc | Bin 0 -> 1906 bytes __pycache__/ted.cpython-39.pyc | Bin 0 -> 6325 bytes __pycache__/trans_disp.cpython-39.pyc | Bin 0 -> 9586 bytes __pycache__/transf_disp.cpython-39.pyc | Bin 0 -> 9601 bytes __pycache__/vulcan_template.cpython-39.pyc | Bin 0 -> 4179 bytes __pycache__/zmat.cpython-39.pyc | Bin 0 -> 11206 bytes algorithm.py | 12 +- cma.py | 76 +-- directory_tree.py | 5 +- gf_method.py | 35 +- int2cart.py | 1 - reap.py | 33 +- s_vectors.py | 18 +- test.py | 3 - .../.nfs00000000504572b10000065d | Bin 12288 -> 12288 bytes ...directory_tree.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 1519 bytes ...test_f_convert.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 2573 bytes .../test_f_read.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 4217 bytes .../test_g_matrix.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 4061 bytes ...test_gf_method.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 2261 bytes .../test_reap.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 2736 bytes ...test_s_vectors.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 3843 bytes .../test_ted.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 423 bytes ...st_transf_disp.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 2594 bytes .../test_zmat.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 7454 bytes test_suite/ref_data/dir_tree/template.dat | 14 + test_suite/ref_data/dir_tree/template_ref.dat | 17 + test_suite/ref_data/dir_tree/zmat | 12 + test_suite/ref_data/f_conv_test/fc.dat | 109 ++++ test_suite/ref_data/f_conv_test/fc_cart.dat | 109 ++++ test_suite/ref_data/f_conv_test/fc_int.dat | 244 ++++++++ test_suite/ref_data/f_conv_test/zmat | 24 + test_suite/ref_data/f_read_test/fc.dat | 109 ++++ test_suite/ref_data/f_read_test/zmat | 24 + test_suite/ref_data/reap_test/Disps/1/ijk.dat | 85 +++ .../ref_data/reap_test/Disps/1/input.dat | 24 + .../ref_data/reap_test/Disps/1/output.dat | 533 ++++++++++++++++++ .../ref_data/reap_test/Disps/1/timer.dat | 92 +++ test_suite/ref_data/reap_test/Disps/2/ijk.dat | 85 +++ .../ref_data/reap_test/Disps/2/input.dat | 24 + .../ref_data/reap_test/Disps/2/output.dat | 533 ++++++++++++++++++ .../ref_data/reap_test/Disps/2/timer.dat | 92 +++ test_suite/ref_data/reap_test/Disps/3/ijk.dat | 85 +++ .../ref_data/reap_test/Disps/3/input.dat | 24 + .../ref_data/reap_test/Disps/3/output.dat | 533 ++++++++++++++++++ .../ref_data/reap_test/Disps/3/timer.dat | 92 +++ test_suite/ref_data/reap_test/Disps/4/ijk.dat | 85 +++ .../ref_data/reap_test/Disps/4/input.dat | 24 + .../ref_data/reap_test/Disps/4/output.dat | 533 ++++++++++++++++++ .../ref_data/reap_test/Disps/4/timer.dat | 92 +++ test_suite/ref_data/reap_test/Disps/5/ijk.dat | 85 +++ .../ref_data/reap_test/Disps/5/input.dat | 24 + .../ref_data/reap_test/Disps/5/output.dat | 533 ++++++++++++++++++ .../ref_data/reap_test/Disps/5/timer.dat | 92 +++ test_suite/ref_data/reap_test/Disps/6/ijk.dat | 21 + .../ref_data/reap_test/Disps/6/input.dat | 24 + .../ref_data/reap_test/Disps/6/output.dat | 523 +++++++++++++++++ .../ref_data/reap_test/Disps/6/timer.dat | 92 +++ test_suite/ref_data/reap_test/Disps/7/ijk.dat | 21 + .../ref_data/reap_test/Disps/7/input.dat | 24 + .../ref_data/reap_test/Disps/7/output.dat | 523 +++++++++++++++++ .../ref_data/reap_test/Disps/7/timer.dat | 92 +++ test_suite/ref_data/reap_test/fc.dat | 28 + test_suite/ref_data/reap_test/main.py | 24 + test_suite/ref_data/reap_test/template.dat | 21 + test_suite/ref_data/reap_test/zmat | 11 + test_suite/ref_data/s_vec_test/zmat | 29 + test_suite/ref_data/simple_int_zmat | 17 + test_suite/ref_data/zmat_test/zmat_custom | 29 + test_suite/ref_data/zmat_test/zmat_red | 17 + test_suite/ref_data/zmat_test/zmat_zmat | 18 + test_suite/test_directory_tree.py | 37 ++ test_suite/test_f_convert.py | 78 +++ test_suite/test_f_read.py | 388 +++++++++++++ test_suite/test_g_matrix.py | 368 ++++++++++++ test_suite/test_gf_method.py | 76 +++ test_suite/test_reap.py | 98 ++++ test_suite/test_s_vectors.py | 378 +++++++++++++ test_suite/test_transf_disp.py | 85 +++ test_suite/test_zmat.py | 313 ++++++++++ trans_disp.py => transf_disp.py | 2 +- zmat.py | 209 ++++--- 101 files changed, 7884 insertions(+), 179 deletions(-) create mode 100644 __pycache__/__init__.cpython-35.pyc create mode 100644 __pycache__/__init__.cpython-39.pyc create mode 100644 __pycache__/algorithm.cpython-35.pyc create mode 100644 __pycache__/algorithm.cpython-39.pyc create mode 100644 __pycache__/cma.cpython-39.pyc create mode 100644 __pycache__/directory_tree.cpython-39.pyc create mode 100644 __pycache__/f_convert.cpython-39.pyc create mode 100644 __pycache__/f_read.cpython-39.pyc create mode 100644 __pycache__/force_constant.cpython-39.pyc create mode 100644 __pycache__/g_matrix.cpython-39.pyc create mode 100644 __pycache__/gf_method.cpython-39.pyc create mode 100644 __pycache__/int2cart.cpython-39.pyc create mode 100644 __pycache__/masses.cpython-39.pyc create mode 100644 __pycache__/options.cpython-39.pyc create mode 100644 __pycache__/reap.cpython-39.pyc create mode 100644 __pycache__/rmsd.cpython-39.pyc create mode 100644 __pycache__/s_vectors.cpython-39.pyc create mode 100644 __pycache__/sapelo_template.cpython-39.pyc create mode 100644 __pycache__/submit.cpython-39.pyc create mode 100644 __pycache__/ted.cpython-39.pyc create mode 100644 __pycache__/trans_disp.cpython-39.pyc create mode 100644 __pycache__/transf_disp.cpython-39.pyc create mode 100644 __pycache__/vulcan_template.cpython-39.pyc create mode 100644 __pycache__/zmat.cpython-39.pyc delete mode 100644 test.py rename Example/2_Methanol/molpro/CMA_0B/.template.dat.swp => test_suite/.nfs00000000504572b10000065d (74%) create mode 100644 test_suite/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc create mode 100644 test_suite/__pycache__/test_f_convert.cpython-39-pytest-7.2.0.pyc create mode 100644 test_suite/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc create mode 100644 test_suite/__pycache__/test_g_matrix.cpython-39-pytest-7.2.0.pyc create mode 100644 test_suite/__pycache__/test_gf_method.cpython-39-pytest-7.2.0.pyc create mode 100644 test_suite/__pycache__/test_reap.cpython-39-pytest-7.2.0.pyc create mode 100644 test_suite/__pycache__/test_s_vectors.cpython-39-pytest-7.2.0.pyc create mode 100644 test_suite/__pycache__/test_ted.cpython-39-pytest-7.2.0.pyc create mode 100644 test_suite/__pycache__/test_transf_disp.cpython-39-pytest-7.2.0.pyc create mode 100644 test_suite/__pycache__/test_zmat.cpython-39-pytest-7.2.0.pyc create mode 100644 test_suite/ref_data/dir_tree/template.dat create mode 100644 test_suite/ref_data/dir_tree/template_ref.dat create mode 100644 test_suite/ref_data/dir_tree/zmat create mode 100644 test_suite/ref_data/f_conv_test/fc.dat create mode 100644 test_suite/ref_data/f_conv_test/fc_cart.dat create mode 100644 test_suite/ref_data/f_conv_test/fc_int.dat create mode 100644 test_suite/ref_data/f_conv_test/zmat create mode 100644 test_suite/ref_data/f_read_test/fc.dat create mode 100644 test_suite/ref_data/f_read_test/zmat create mode 100644 test_suite/ref_data/reap_test/Disps/1/ijk.dat create mode 100644 test_suite/ref_data/reap_test/Disps/1/input.dat create mode 100644 test_suite/ref_data/reap_test/Disps/1/output.dat create mode 100644 test_suite/ref_data/reap_test/Disps/1/timer.dat create mode 100644 test_suite/ref_data/reap_test/Disps/2/ijk.dat create mode 100644 test_suite/ref_data/reap_test/Disps/2/input.dat create mode 100644 test_suite/ref_data/reap_test/Disps/2/output.dat create mode 100644 test_suite/ref_data/reap_test/Disps/2/timer.dat create mode 100644 test_suite/ref_data/reap_test/Disps/3/ijk.dat create mode 100644 test_suite/ref_data/reap_test/Disps/3/input.dat create mode 100644 test_suite/ref_data/reap_test/Disps/3/output.dat create mode 100644 test_suite/ref_data/reap_test/Disps/3/timer.dat create mode 100644 test_suite/ref_data/reap_test/Disps/4/ijk.dat create mode 100644 test_suite/ref_data/reap_test/Disps/4/input.dat create mode 100644 test_suite/ref_data/reap_test/Disps/4/output.dat create mode 100644 test_suite/ref_data/reap_test/Disps/4/timer.dat create mode 100644 test_suite/ref_data/reap_test/Disps/5/ijk.dat create mode 100644 test_suite/ref_data/reap_test/Disps/5/input.dat create mode 100644 test_suite/ref_data/reap_test/Disps/5/output.dat create mode 100644 test_suite/ref_data/reap_test/Disps/5/timer.dat create mode 100644 test_suite/ref_data/reap_test/Disps/6/ijk.dat create mode 100644 test_suite/ref_data/reap_test/Disps/6/input.dat create mode 100644 test_suite/ref_data/reap_test/Disps/6/output.dat create mode 100644 test_suite/ref_data/reap_test/Disps/6/timer.dat create mode 100644 test_suite/ref_data/reap_test/Disps/7/ijk.dat create mode 100644 test_suite/ref_data/reap_test/Disps/7/input.dat create mode 100644 test_suite/ref_data/reap_test/Disps/7/output.dat create mode 100644 test_suite/ref_data/reap_test/Disps/7/timer.dat create mode 100644 test_suite/ref_data/reap_test/fc.dat create mode 100644 test_suite/ref_data/reap_test/main.py create mode 100644 test_suite/ref_data/reap_test/template.dat create mode 100644 test_suite/ref_data/reap_test/zmat create mode 100644 test_suite/ref_data/s_vec_test/zmat create mode 100644 test_suite/ref_data/simple_int_zmat create mode 100644 test_suite/ref_data/zmat_test/zmat_custom create mode 100644 test_suite/ref_data/zmat_test/zmat_red create mode 100644 test_suite/ref_data/zmat_test/zmat_zmat create mode 100644 test_suite/test_directory_tree.py create mode 100644 test_suite/test_f_convert.py create mode 100644 test_suite/test_f_read.py create mode 100644 test_suite/test_g_matrix.py create mode 100644 test_suite/test_gf_method.py create mode 100644 test_suite/test_reap.py create mode 100644 test_suite/test_s_vectors.py create mode 100644 test_suite/test_transf_disp.py create mode 100644 test_suite/test_zmat.py rename trans_disp.py => transf_disp.py (99%) diff --git a/Example/2_Methanol/molpro/CMA_0B/main.py b/Example/2_Methanol/molpro/CMA_0B/main.py index 6664a094..76d6788b 100644 --- a/Example/2_Methanol/molpro/CMA_0B/main.py +++ b/Example/2_Methanol/molpro/CMA_0B/main.py @@ -1,7 +1,7 @@ from concordantmodes.options import Options options_kwargs = { - "queue": "gen4.q,gen6.q,debug.q", + "queue": "gen4.q,gen6.q", "program": "molpro@2010.1.67+mpi", "energy_regex": r"\(T\) total energy\s+(\-\d+\.\d+)", "cart_insert": 9, diff --git a/__pycache__/__init__.cpython-35.pyc b/__pycache__/__init__.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..99fac7340868346aba79fefb51fae335273fce08 GIT binary patch literal 141 zcmWgV<>hi$c1~gdg2x~N1{i@12OutH0TL+;48fX=ek&P@K*9*(mz91-er~FMS!qsk zVxE3(YL1zSnTfG}L1J=tVtQ(^esX?Za(+=tVqQsZehQEuAD@|*SrQ+wS5SG2!v-i; Nnv-e=GP4+n82~f_Ao~CS literal 0 HcmV?d00001 diff --git a/__pycache__/__init__.cpython-39.pyc b/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d56505ca997b902531f1225cc8e0f2d6c087ef1 GIT binary patch literal 149 zcmYe~<>g`k0(WKSBoO@=L?8o3AjbiSi&=m~3PUi1CZpd6pl#-ZNlAE6bTgVug&|HPv0!Rn=cr^=x!H&1+ZY(X2)E z53M{7_&XToE=Y{Opp>XDmb^uMYsuTxw+(MmYSY-EzC+^E7;6rFhpi4tm!3h(V>5d_ z_c?6RZck{ptiq~{c)ENnFn2J@2Ox6klAQ_T28_*C;RA+a*YGaIuw64em^#G`!`CQo z!eL7{?xw?BCDmvghJvW+0r976ERO2L*F?*SoQb7ef{9N%u=$8@Bkq!O9G>fVv&z6ydN3fD)Rc_pI zI7uv3XjC}N{E<{?SS-WKay1T9gp;c{$-)Yo!z?xjij%=WDw*L_N%p_v;kbyR2vwCt z(==56!jkbi&SSZ?@Xz(b55GC3_b|$LKu!dm5Cvdt!(eI|#+1`uPwe(=?Z{+U>RMiK z_@!eS+S5_>#GZ!_%rnVE<+ha`Lsw;m_am>(UI=HoX1Hx%<>ZDqHCws zuIu?=5U`-Xw&a2X)L*$WPm^&{X(!F|qUWg^JT3e;syszuqdc_;6{kwu&^7sAkcL@P z)9eD6@+t_4hUJM4a@iJ}R$H7E=SA1*SWV%HVo$`$Ob@f}n|2_R2<;=z{|@a>-lct*-Rs%A&$$m3 zE_&+OCVkokj6GIHbgV_9#o=o>tFsXIFv_<(nRuaM@nzJ!`xa32|{4^eFkgew4!mN5T;fr9~mN)<3V1zZ`x zlhviK4AKTeM)g}p1DG(X9>L7ccz zT#Jq|B~ZaQx(Dse0+=$Bd7XHQjGK-%0gJEEcMY01X?EX8>nt^ubB$QmqIsK_PFjee z$(?=q$R+i{}>La_8F%R%}^r_YV18W00rL0FM-{tlpErtLx+vitzvRR z>|=rZpX$Jc3LHsbB*jl6dBM?OZc@MmHqIQyPSUy7GZ3KbmtqfqjvY#6-3X|_G& zF0gf4+l;2?n}^9mbo&K}YE3{rhiXsyFWE>)Ap?wo3}pvnC?na$*pWS`@4N1!Vp5vC zp3c&gGuDgIo=sI;%}rHW6_?|3s|-YNA}$Rrq_NF#4?T&;bDhT&onmW(sMQY-urq=4LlxlNn zpYmeWh^GKPMz@zi8s4ykH9jbBJWyl`!o;_Sz7r~+Sl1~l^4z*!uJbxii)5S)g%eg4 zV?+8(NF)IHlbHy^zh7@n%bD7GJ}#{(0BF7w0%?0wnhin_kCF! zJD+}(9TcWEM8AOnoCwhbAR|lx!o-jHckE}q2*HQ=0p4Q|E2BlH=`>sd_&s613rsR?)dI|z?qAr58d7bp;Q+5t?>=? z5P)3(gb}y_=0}6K&{3S;!ES)lXV@{M5TRDH6JXZxF>Vh0yi@$10lyXh1jsFMdMJ4l zfDgys1Gazb6s23WPu$qM#_#}yE$v)mSJ@5LN@Itl_pieir8LMtyq~;9chSRM)I_f+nzyjhU#wxj5A8kaUt@cLd5w5<>t548<`lL4*SODmBOrfs z(Qo=B1f2O3!EXMk{ljBm{kEhJ$nQCg{y2A{1{Y+G^tmjvs(mL-=eqDDQ4+753s9Zvz}$fNsDE0iiB>P(PY??1H|X|r5QgL!_*733AE4j%dOQ+6 zq{{|UtX2t3ceGC(WU58yFTo=06!O~0AHw=(XDh|9a{(n8JGC2SM literal 0 HcmV?d00001 diff --git a/__pycache__/cma.cpython-39.pyc b/__pycache__/cma.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3fb8a9c0a7884b9b0628eb53d8c2b6afedaa7daf GIT binary patch literal 10193 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 literal 0 HcmV?d00001 diff --git a/__pycache__/f_convert.cpython-39.pyc b/__pycache__/f_convert.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c609282fd6c252cc2f501189ef1aa7286e09571 GIT binary patch literal 2408 zcma)8&2QX96rb_edOy;SG)>#kA|oN8Ey->QZ7Bh@OcJ(gQa*a@-Xs{sV->jXOx(=7hv4;=sKZcyD&oq!mca$j>wL=6%e(-+Q({HB}+d ze!2hiS|3J#;N);KU~(Ov>>?0G7>$Wb;jP75S9f)aYkEw&hHFxCn=pf!PYE-*wX3@& zMjw*8wFi=^ve5N&5q^n$n1)Ht1$d}5tt{MAym{a-XEO}A1M->QIAkYHvfNK{2W+-Q+Feqt z^*rxoOU-6)eLD+-tdWFS-sq&8&7c!5tc6K4==YnS_;H_KTNg^=ZrjPxZ@8WfhlMUEbX6$AO|0+@H;$f0{8-O3b4{m8O+<>1dff~wzNGj1fM+b1gOfUfe>oF)CWh$NN?=# z4FK`a8|ErHt8TRhoPtDTNJo&h8=Ckr*M@L|kr9~@+-g*c?2)!Z3mREFn&QzygB2ae zd3jhV^bv4Jc+=GbS&*!b*I-m*8fgBiAO?x1V1DErgw=!5WPbErH3#Wq3~g5@&(sLx zjS|Pj5BYSV?_yL>6l6FvB9tU8;EX*tHneZ3u$2bD1$zCQ9@3)rOatd+G`mZgH3Mfq z(5G-xYDs%PwO#uj+fMj$(izl3e?D59_tzG#hLKx-UKIv4Kb&8SCX78SPW4kN_|lBi zEiR;%^rX(xT;aeqdLoS^T~$bt^oGrRnu0Y^10pRRCRx9$z$EpU zCz7^gb&OU3MwTnU$+DlPT`z|EQ8&a9ls=7WwHvFF-d4aHlVhk;7yaZ_7-X*lA=(jb z79dokGteva81&OHuc+}^YSU>ts7xRQg3qe$UVKOqdSnI zOdFCMLKkU~3Snf7w08)=$z(962taFC8euRnZ1%7`9_JM$WkaZpIkHP{kZeIg+4>hkP$^~FRwG})PM6zFYs)Xe|-PI+AIO67>Di8j_sd+(f)zN904%t2U;Kh z3jQd)d9|RdysLdZw__B>umzt|%0SzCvpyv)_zK|X>lIiX z7bpzBIE$N1rBlI98bR9Ic1tUsT9c)A?B_W^&J=#q;nGNZIN1_m&g-UvnOkZHUgCGT zTZTc}&wKq`(oh=hFy=4ePMiaK_=_;c9X042psNOb77%w9I-(D;IQO@$BWEx@!QG*A z!%u>E4V2VNSPjv%=gEraLA8X>8jNe6_qgxJ6HdwVSQ>bqI1VzxL4s}^at*7pz`PLq zwJ}2!+tjGpReM&gLY+60ez&(RP6A8T)VMMJM^OnZF!#k7WLoK3#DiSP{hJwSzd!aB NQ-ow#jMXjZ{{Z`@M>zlh literal 0 HcmV?d00001 diff --git a/__pycache__/f_read.cpython-39.pyc b/__pycache__/f_read.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b2ca8ada17bcd633b0a02029f38c35c8fa1ef9a1 GIT binary patch literal 1136 zcmYjQ&2H2%5VoCcHeI%*0tq3+!6zU^=JD#Bjg7zPD%`m2Qb=A zP>LvO$cToSjTp?#L{&VBDaIm0s?I2(U<`uqq~b}lq&j?WXVs+K(;dKqq6=0 zQ)0?mnw=coCk3vtEXl#pp&XQ=qew9oeI}!LnS9hy38d}%`MA}lupP+zl~`o`_ub*Rsr2x})a0@rR@&UTedqSA;Y8-|>-zE>(2F zzMS8ub7=FB?6cSKlw$Z65heBdP10VyL1_5ifOgSA45vDCcE|vb#B~o+SSM};te!iC z_5#3KP{j(^bI^CI0lFkW7j1cJfBpl>)_mMdbR7WkF*arsxRmb}CD3k+#k=|h00hoG zt0%r|bvu?5jStuXobRpkk~=rfoI|SLcE_!a}?+lPGi zA}Zwfgu=QOY3jmgvCovoNg4-Vw&FYWw3^K9S=<&-=m*DO`HNb7nHKr;?D<2VG~2s6 ccj4@b8lhxpFx^~U^d8dRB919dX`l9^|CPENhyVZp literal 0 HcmV?d00001 diff --git a/__pycache__/force_constant.cpython-39.pyc b/__pycache__/force_constant.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ddd1e23982c9c4a2c326e5676cb548b023c9f374 GIT binary patch literal 2034 zcmZuy&2Ah;5bmD;-JP{J#w0c%vEnbR2sRQ{gpdVB0fz(fA-S!DhRO7-Gn@HK&#Z;5 znFAybkVlA*c?q6^Q(rmx36KyHeAVNP*MeU4H`UeEUDfrs;c(bz7{C1a_oMXzV}HN8gN9Ct+?U^$33Fz;bjJAlS+Sil+%5P++_uv4BYF9?!6se|Aq?yKlh#+{Yl+0AQ?+gXZ7b8;-4ICo$0YL8@EICk!}aQnR1 zIt~Ap{rFq!HprH31~j%2pVn)82!PjkGps@NnjTTu>9+%fY`J5v?D*|apV5+9W_f0< zUB`*u6GQ&qu$TR&-}nfuG3Sl9&Cbalr@L{VJw4QtraXk?pjm_L0Mf%|edUCAc>?#- z3B1;COktcG?Wh^i3xIgd%xG_D$q_iDTlX%e2>dsO;)-SjNi8OJ$$MvZ$1Ccu!~IRf;NCB;j!|i`1Z) z&4T5^uVu18j&=ENmomv~Db&|#3Nm}kwRw#6Fb7OF<@H;_rFG#ib} zIFeMpojs1WN5RSE6p%^sj_yawm_?n5+E{X*yajmuGRC*~*_+obyv%`!+SqbXHzQBz zgP(ywi#1@GiCpK6yUEBxtZhu^7V$i?mvSGq--G);#i7pJe&@d1#CV_J1A-3;J|g&- z;Pn&aE-kP7T5f@NAG0Ex7{Bu$FR$b>{;YJBp;4o4=3y2Gf$9eVdg~%3+7E)Ki!kkW z-^?Tmfvph=@ANuTkk(H-%6D#FwdZ+ull$0CN jB);*(H_9m<&Eu%n$No=`^7cDxzoN9PNTY{b_RW6*$i=_v literal 0 HcmV?d00001 diff --git a/__pycache__/g_matrix.cpython-39.pyc b/__pycache__/g_matrix.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0c67e905c8af2ce61683601bdc47ec6042b78827 GIT binary patch literal 1184 zcmYjQ&2Qv16!(jh%yc@_T~-Kbg^(g4AsMAno?T9#AA?d17}aQzxF< z&akc01M2<{2u|&h6aSB|oR$-3PCO@5sV{mzKY#t6-$(dlG9oD7fBIr^P6_!tOdd*% zljo@R2tg15isXP}q@s%E6v7%+q>A$d$O#d#NZt{V$n=Kh0|7shY5E>-lG7=8TGm?} zQdQPmEsL=HP$HZ>N3|J(?A+v$fSig*(03${d-6OHDbf!7;N&%TrhI$#*C<1Ivnp*? zC~j@`OQ}@0kXd7;$ehj!U2PgCGq;l2$zj#q%Jf-3|L(A-$zDsh(qh(;{opdY(v1>< zrqH!@rYT&{wk)?j)tQoS%SEY5ciFKSUfVNmkiXP*wk>%_6`a1>Iqk`dkkoq#c8L51 zs{II|g_bbVMu^Z-#7Gc~7fz?t$5%-1_bl7W!f9juKyQLGJB@v8r8+YSGMF^L0O3z! z_Hg*`i}^}da=vX;!RvV?)w82#N1x9(yg27eY3CSWp^f0RtF*xRlJ!ZNZ7%(gv9c~5 zV-sYufto;y-__$?{%7|G3J9A!2@eU{#q|doEm@N_T!Vn?$VImp**ab)cW_Nz>IN;n zfg5;9ex6;&-OjL$pJJPxN9LuVn1}e7Tzn?tU_B)tllv89+H0vu?jq!gZbvN*j4j;m zw-goD<2$$u8J!>tSx@lHK^So@Iw!~2zM(}=mmmCd`0MY#U3}@`ClkV0qN4o!^?QoL z^ih{n58wKz-uQ$Y!!NsB=V^r}|pAwMAq2vxl{n81Zz_19I^)zvlKUElikx?t(Pa5q?la8K^Ar3lTkH{p?{V0$g#r>7d+&o?in9 zRW_c+si*S_*SYb8dd7HX&*U2HX-j)~X*DdiGd_IgxX?DYqudQ*KhIqde0MJtxnD$a z=qAd|EiyOAlK!9w-Q^{>Bf{N5mkI4i?#F2!io(qcKjpsQ?jQ|7_oK7` zPdDqhellQToZvp-;@)fD-@L!L$UbX-y14dWRYh70Z1{?khO!3zBk1`&KuJr&NT~tR zQU}yZ15htbK!f8fd?cV%T7Z?Z0%&srpRKQTza@O@hZpTT-PLQg`q$q(?dF7}%aSfh zy~tu|_eIuYC>cXIanEV5K46P0tL=>qIr&Pmup;DA4-y~F)5ycPBP_^IR1h$2F@b<@ zNz@SFEs^htn1tci4_ez<61MgRap0$|B#dv}ymj+NtM3OpemBfpL6!!Y;C@;p83(=F zVdIOK>+egOu_%oS#u^YRp8_D%dgV7fdve2bC*A=?&*O%vVy5a`e}S2Tl%z*FJ;1Zm z3jNT)4mQwx<`JTX$gHArXoF@Q(a%wzfbQUl_Z(PJ#qkJkp;y}>x5=p(j#^y@O9N)> z=)+K(9BU(bJOisonz~<%H~F_e*eUFNrlcV0U^hzII}4gNGSnNGQdwY3%tGyOl11+| zuuK%^xc(G#o-WQ8GhmrMpa*n;eDTT1Jlh{-SG@chZl;A>ieckV&DwvU3wp$@xS)H4*Ool(mcFUn!GXtv1SOjp-+HC#l-kC z9YOv|Q&w2(sEdwuS`&S>~f>wmOiwbgn& z|K-i=`KZ+zUfs+JKXw<>P;~d*g(wGh+ZrI(xo>SQE;N@QD@TMu!TJK&qxptF)>Q@O z>C0?gYH45UJS$YWdHNEXR@%}Cqwcn60Re`pqBh7S>^!LRyXtJi{x$!@px&?v%VPZy2=0VioKbgdPmsYmbgU6sk X{nx(IzCF(SLwu$=vagMYL~Ht=k=W`S literal 0 HcmV?d00001 diff --git a/__pycache__/int2cart.cpython-39.pyc b/__pycache__/int2cart.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9e6e7c9a6b111e3fc2b0d02a890062a7154ab7d9 GIT binary patch literal 3467 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 O_^_AiQ}q5DhV>uaoiP6Z literal 0 HcmV?d00001 diff --git a/__pycache__/reap.cpython-39.pyc b/__pycache__/reap.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d8f86b18cd7cb78dcc52da347d386d1b7b7cf117 GIT binary patch literal 5795 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 SCicEU-xAQzNe7dnZsXrXij2nq literal 0 HcmV?d00001 diff --git a/__pycache__/rmsd.cpython-39.pyc b/__pycache__/rmsd.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b0f4c21ce8e95cce309fa5dd5785d0a261306c6 GIT binary patch literal 11180 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 nZB0JbskK*yJhFJ literal 0 HcmV?d00001 diff --git a/__pycache__/ted.cpython-39.pyc b/__pycache__/ted.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..caf3f148cb677dbec90cfd4eb33fa2beac847945 GIT binary patch literal 6325 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 literal 0 HcmV?d00001 diff --git a/__pycache__/transf_disp.cpython-39.pyc b/__pycache__/transf_disp.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..26166324dacc1734359b590f725f8cab580fa5ba GIT binary patch literal 9601 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 literal 0 HcmV?d00001 diff --git a/__pycache__/vulcan_template.cpython-39.pyc b/__pycache__/vulcan_template.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ce13d2415de4cd163ae56ed43bd50529dd2a568 GIT binary patch literal 4179 zcmeGfO>f&qmedEOuu0SJqPJPcDBx^FI*#EMX;YN3lvt@H8K#=FDjH_Q8A((qk{%8f zTXs(EUiTODumyVAf3m-U*FEk2gDncQZ}=fgTGzlXdg!4eXgKrc&HI}7-n_xruBj5V zy&JpzpRY^OKgDFRm0dEjexP?ivSCj>;=t`4PuPjRsB~l{gZzWQu z$~VPcg~+C~q5KPWO6?6fE;`;6K8ovj*d5veyx0mb`4s*kf{rF^dIci)iljh_-%7nw zO1xJl3XrYDuRe}k8+%VSK}Sbn)JLJs zoPZ}A>@u*+n;2K&zYG8HDRgJWGsyzAN#U$SitmDg-wB9(CXWm7FOu@#N@s=dWxy-( z@>$^<`Aiza>^+Gn-&Fupfw@E~&kL+esxYs33b`V_L;@|;_Uy}v?*`0AH4m+~&HYZ- zM75gdM?k79 zBuJbhR3q1!IAB5>ZK^7@M?P9x%f2^%o0gM9CdZ6B-Vlxb{@om!f5qvw!Hjp8juEY` zKkD4K+D5C92_=@B^%X3X;Wg_ESbKiR#lbA#uC4EN%Fq#_PWoZ;jyP%|Gk ztd8}hbNE@kdAMR1A%Yq8!EBro6os%^@Hjt9)ba@gnGt~Lu{}b$j=zmPZ?1{cwFx*j z_n{-s)FBae5y#>4b1hWBSXM(%rd`AQ%mPDY;qUsGpwq-*!KEM%U~Z4@t#?}opt!#N zx!HhToB?bBwkG9hikTxkD^%%m;4_Xotplt5dCThV9X5=*d2c&kNaOe3Z8czY;2hu6 z{ebH!eg=G(KfYBJ&C{CmbO_t8I8BMcEI273_lo!?zBG% zhEsAf3ASE*u*3Ym5N_8GPK0wI2zIR6!DagEy_V5M>zTsIEZLDts`qi|g!;oq`@Uh$ zvHlyOv3pQAy2d$%GeBRV8byzcX1o3c`uZc0YCQz9WRRRA`UnD0ouhZ|8;83~=qco4 z^as1GX1lwHo|`^g9RL73nj`#pq45)9oBI%tiUkFiEWlTIx5+Otn!X81kOL3xI6eI%Y-YP=Jqc0ZEuQotA^fIP7PU8F`Vi|=} z1>t$rBFyZOGo{Jxq{4*(mp^CN3kN=%ptbPU(_4@HzEuYitt>6+x7JW?Y7Z{ec6E~` zNM~M}#SVNPG~34hT#-ku&b}7Fb&nwb2?x(Y_(3+UHxKHKL$ud0&8E>tfL(92QM>U( zIFRwU^U$atcEo-S3Kx`l<2>YN6U;X^Z_kbRKj_N-4_yVjn`xX6XU^rR@gig8#Q}mv zC?cT7q;POc4zH~t{12#F|0s7v74=8C^ZPA#M5PYZPFB8TRmy2v+5EAJO+DJ zfleHo$K|7lMwDFvXsn2ggn3*HIg87FvVJ|SZ7iO>!8XcqDWvWou0Y`fX+P{$#*n?d zXp&H7uK=OHOYBYf{AlPSe?s%>XhPkc?VasAdVuZcct|0&&z}lV=EHo2l@^@DRm&0= zoMj2R$+J#(b`Kekd$tAfe7vQJJ)&EpqQRQl5_U_}QN28Wguw@{TH!&6u-{cke z77WB2ZY&QZM~n(T$bS_NTe-baWUs+0yCyn#Jp+urF2+K^v=h7IB8$Agz#tS)TuGk2 zu_6R4w>K1_j;P-)D^@KlecQnJs%0HPwVSO}EQ|QIWwEz`5_?B<=gg9k;K+pZ3j9OS zRpnBtI!j<1)wm3&0k$i6L3}kCYUz8N3E@}~y11}!#ERb^!}B27brFlW`f)1aC&F48 JpR4lK;xEfziP``F literal 0 HcmV?d00001 diff --git a/__pycache__/zmat.cpython-39.pyc b/__pycache__/zmat.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de8333697c198844b96576fbedec729bb36dd059 GIT binary patch literal 11206 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 Q*Bojw9eU88@70a}1A?-HIsgCw literal 0 HcmV?d00001 diff --git a/algorithm.py b/algorithm.py index 985c3a5d..6764c8d8 100644 --- a/algorithm.py +++ b/algorithm.py @@ -61,8 +61,8 @@ def loop(self, a, off_diag, lim): def coupling_diagnostic(self, a, initial_fc, tolerance): indices = [] diag = np.zeros((a, a)) - with open("S_p.npy", "rb") as x: - S = np.load(x) + # with open("S_p.npy", "rb") as x: + # S = np.load(x) for x in range(a): for y in range(a): if x == y: @@ -72,8 +72,8 @@ def coupling_diagnostic(self, a, initial_fc, tolerance): # print(diag, "printing diag") diag = np.absolute(diag) print(diag) - with open("D.npy", "wb") as q: - np.save(q, diag) + # with open("D.npy", "wb") as q: + # np.save(q, diag) # diag[np.abs(diag) < 1e-31] = 1e-30 data = np.abs(diag) hist, bin_edges = np.histogram(data, bins=a) @@ -85,7 +85,7 @@ def coupling_diagnostic(self, a, initial_fc, tolerance): if index[1] > index[0]: indices_new.append(index) indices = indices_new - if self.options.clean_house: - os.system("rm D.npy S_p.npy") + # if self.options.clean_house: + # os.system("rm D.npy S_p.npy") return indices diff --git a/cma.py b/cma.py index e612b949..abe69136 100644 --- a/cma.py +++ b/cma.py @@ -21,7 +21,7 @@ from concordantmodes.s_vectors import SVectors from concordantmodes.submit import Submit from concordantmodes.ted import TED -from concordantmodes.trans_disp import TransDisp +from concordantmodes.transf_disp import TransfDisp from concordantmodes.vulcan_template import VulcanTemplate from concordantmodes.sapelo_template import SapeloTemplate from concordantmodes.zmat import Zmat @@ -62,6 +62,8 @@ def run(self): ) if self.options.man_proj: proj = self.proj + print(proj.shape) + print(proj) s_vec.run( self.zmat_obj.cartesians_init, True, @@ -107,7 +109,7 @@ def run(self): else: indices = np.arange(len(eigs_init)) - init_disp = TransDisp( + init_disp = TransfDisp( s_vec, self.zmat_obj, self.options.disp, @@ -281,7 +283,7 @@ def run(self): self.options.proj_tol, self.zmat_obj, self.TED_obj, - "init", + cma="init", ) init_GF.run() @@ -299,7 +301,7 @@ def run(self): self.options.proj_tol, self.zmat_obj, self.TED_obj, - False, + cma=False, ) TED_GF.run() @@ -320,7 +322,7 @@ def run(self): ) s_vec.run(self.zmat_obj.cartesians_final, False, proj=self.TED_obj.proj) - transdisp = TransDisp( + transf_disp = TransfDisp( s_vec, self.zmat_obj, self.options.disp, @@ -337,9 +339,9 @@ def run(self): # self.zmat_obj, self.zmat_obj.cartesians_final, B_tensor, self.options # ) # second_B.run() - transdisp.run() - p_disp = transdisp.p_disp - m_disp = transdisp.m_disp + transf_disp.run() + p_disp = transf_disp.p_disp + m_disp = transf_disp.m_disp if self.options.disp_check: raise RuntimeError @@ -356,7 +358,7 @@ def run(self): dir_obj = DirectoryTree( progname, self.zmat_obj, - transdisp, + transf_disp, self.options.cart_insert, p_disp, m_disp, @@ -420,16 +422,16 @@ def run(self): reap_obj = Reap( progname, self.zmat_obj, - transdisp.disp_cart, + transf_disp.disp_cart, self.options, - transdisp.n_coord, + transf_disp.n_coord, eigs, algo.indices, self.options.energy_regex, self.options.gradient_regex, self.options.molly_regex_init, self.options.success_regex, - #disp_sym = transdisp.disp_sym + #disp_sym = transf_disp.disp_sym ) reap_obj.run() @@ -438,7 +440,7 @@ def run(self): ref_en = reap_obj.ref_en fc = ForceConstant( - transdisp, p_en_array, m_en_array, ref_en, self.options, algo.indices + transf_disp, p_en_array, m_en_array, ref_en, self.options, algo.indices ) fc.run() print("Computed Force Constants:") @@ -460,7 +462,7 @@ def run(self): if self.options.coords != "ZMAT": g_mat.G = np.dot(self.TED_obj.proj.T, np.dot(g_mat.G, self.TED_obj.proj)) - self.G = np.dot(np.dot(transdisp.eig_inv, g_mat.G), transdisp.eig_inv.T) + self.G = np.dot(np.dot(transf_disp.eig_inv, g_mat.G), transf_disp.eig_inv.T) self.G[np.abs(self.G) < self.options.tol] = 0 if self.options.benchmark_full: @@ -477,7 +479,7 @@ def run(self): self.options.proj_tol, self.zmat_obj, self.TED_obj, - cma, + cma=cma, ) final_GF.run() @@ -504,7 +506,7 @@ def run(self): # This code converts the force constants back into cartesian # coordinates and writes out an "output.default.hess" file, which # is of the same format as FCMFINAL of CFOUR. - self.F = np.dot(np.dot(transdisp.eig_inv.T, self.F), transdisp.eig_inv) + self.F = np.dot(np.dot(transf_disp.eig_inv.T, self.F), transf_disp.eig_inv) if self.options.coords != "ZMAT": self.F = np.dot(self.TED_obj.proj, np.dot(self.F, self.TED_obj.proj.T)) cart_conv = FcConv( @@ -563,7 +565,7 @@ def run(self): self.options.proj_tol, self.zmat_obj, self.TED_obj, - cma, + cma=cma, ) final_GF.run() @@ -590,7 +592,7 @@ def run(self): # This code converts the force constants back into cartesian # coordinates and writes out an "output.default.hess" file, which # is of the same format as FCMFINAL of CFOUR. - # self.F = np.dot(np.dot(transdisp.eig_inv.T, self.F), transdisp.eig_inv) + # self.F = np.dot(np.dot(transf_disp.eig_inv.T, self.F), transf_disp.eig_inv) # if self.options.coords != "ZMAT": # self.F = np.dot(self.TED_obj.proj, np.dot(self.F, self.TED_obj.proj.T)) # cart_conv = FcConv( @@ -623,15 +625,15 @@ def run(self): algo.run() print("printing algo indices", algo.indices) diagnostic_indices = algo.indices - with open("L_full.npy", "rb") as w: - L_full = np.load(w) - with open("L_0.npy", "rb") as x: - L_0 = np.load(x) - - L_inv = LA.inv(L_full) - S = np.dot(L_inv, L_0) - print("printing overlap") - print(S) + # with open("L_full.npy", "rb") as w: + # L_full = np.load(w) + # with open("L_0.npy", "rb") as x: + # L_0 = np.load(x) + + # L_inv = LA.inv(L_full) + # S = np.dot(L_inv, L_0) + # print("printing overlap") + # print(S) # with open("S.npy", "wb") as y: # np.save(y, S) self.options.mode_coupling_check = False @@ -656,7 +658,7 @@ def run(self): self.options.proj_tol, self.zmat_obj, self.TED_obj, - cma, + cma=cma, ) final_GF.run() @@ -667,8 +669,8 @@ def run(self): print("//{:^40s}//".format(" Final TED")) print("////////////////////////////////////////////") self.TED_obj.run(np.dot(init_GF.L, final_GF.L), final_GF.freq) - if self.options.clean_house: - os.system("rm L_full.npy") + # if self.options.clean_house: + # os.system("rm L_full.npy") # This code prints out the frequencies in order of energy as well # as the ZPVE in several different units. @@ -681,10 +683,10 @@ def run(self): + "{:6.2f}".format(0.5 * np.sum(final_GF.freq) / 219474.6313708) + " (hartrees) " ) - if self.options.clean_house: - os.system("rm L_0.npy L_full.npy S.npy Full_fc_levelB.npy") - if self.options.clean_house: - os.system("rm S_p.npy") - path = os.getcwd() + "/L_full.npy" - if os.path.isfile(path): - os.system("rm L_full.npy") + # if self.options.clean_house: + # os.system("rm L_0.npy L_full.npy S.npy Full_fc_levelB.npy") + # if self.options.clean_house: + # os.system("rm S_p.npy") + # path = os.getcwd() + "/L_full.npy" + # if os.path.isfile(path): + # os.system("rm L_full.npy") diff --git a/directory_tree.py b/directory_tree.py index 4d4cbb1c..28d1acdc 100644 --- a/directory_tree.py +++ b/directory_tree.py @@ -25,7 +25,7 @@ def __init__( self.zmat = zmat self.insertion_index = insertion_index self.dir_name = dir_name - self.disps = disps # This should be the 'TransDisp' object + self.disps = disps # This should be the 'TransfDisp' object # nate self.p_disp = p_disp self.m_disp = m_disp @@ -41,7 +41,7 @@ def make_input(self, data, dispp, n_at, at, index): if index == -1: print( "The user needs to specify a different value for the \ - cartInsert keyword." + cart_insert keyword." ) raise RuntimeError else: @@ -72,6 +72,7 @@ def run(self): if prog_name == "molpro" or prog_name == "psi4" or prog_name == "cfour": with open(self.template, "r") as file: data = file.readlines() + # print(data) else: print("Specified program not supported: " + prog_name) raise RuntimeError diff --git a/gf_method.py b/gf_method.py index 8fb057cc..ce02fadb 100644 --- a/gf_method.py +++ b/gf_method.py @@ -11,7 +11,7 @@ class GFMethod(object): TODO: Insert standard uncertainties of amu_elmass and HARTREE_WAVENUM """ - def __init__(self, G, F, tol, proj_tol, zmat, ted, cma): + def __init__(self, G, F, tol, proj_tol, zmat, ted, cma=None): self.G = G self.F = F self.tol = tol @@ -34,21 +34,21 @@ def run(self): self.L = np.real(self.L) L = np.absolute(self.L) L_p = np.real(self.L_p) - S_p = np.dot(np.absolute(LA.inv(L_p)), np.absolute(L_p)) + # S_p = np.dot(np.absolute(LA.inv(L_p)), np.absolute(L_p)) self.L_p = L_p # make sure the correct "primed" or unprimed version is being saved in each instance - if self.cma: - with open("L_full.npy", "wb") as z: - np.save(z, L) - # if self.cma == False: - # with open("L_intermediate.npy", "wb") as z: - # np.save(z, L) - if self.cma is None: - with open("L_0.npy", "wb") as z: - np.save(z, L) - if self.cma == "init": - with open("S_p.npy", "wb") as z: - np.save(z, S_p) + # if self.cma: + # with open("L_full.npy", "wb") as z: + # np.save(z, L) + # # if self.cma == False: + # # with open("L_intermediate.npy", "wb") as z: + # # np.save(z, L) + # if self.cma is None: + # with open("L_0.npy", "wb") as z: + # np.save(z, L) + # if self.cma == "init": + # with open("S_p.npy", "wb") as z: + # np.save(z, S_p) # Construct the normal mode overlap matrix. Will be useful for off-diagonal diagnostics. L = np.absolute(np.real(self.L)) L_inv = LA.inv(L) @@ -57,13 +57,18 @@ def run(self): self.L[np.abs(self.L) < self.tol] = 0 # Compute the frequencies by the square root of the eigenvalues. - self.freq = np.sqrt(self.eig_v, dtype=np.complex) + self.freq = np.sqrt(self.eig_v, dtype=complex) # Filter for imaginary modes. for i in range(len(self.freq)): if np.real(self.freq[i]) > 0.0: self.freq[i] = np.real(self.freq[i]) else: self.freq[i] = -np.imag(self.freq[i]) + + # # This seems to fix the constant warning I get about casting out imaginary values from the complex numbers, + # # however I will need to test it on transition states to see if it captures the imaginary frequencies. + # self.freq = np.real(self.freq) + # print(self.freq) self.freq = self.freq.astype(float) # Convert from Hartrees to wavenumbers. self.freq *= self.HARTREE_WAVENUM diff --git a/int2cart.py b/int2cart.py index 1da99036..30363592 100644 --- a/int2cart.py +++ b/int2cart.py @@ -2,7 +2,6 @@ from numpy import linalg as LA from . import masses - class Int2Cart(object): def __init__(self, zmat, var_dict): self.zmat = zmat diff --git a/reap.py b/reap.py index 27c3cd3d..432efe80 100644 --- a/reap.py +++ b/reap.py @@ -96,8 +96,9 @@ def run(self): p_en_array[i, j] = energy = self.reap_energies( direc, success_regex, energy_regex ) - print(energy) + # print(energy) rel = ref_en - energy + print("Relative plus " + "{:4d}".format(i) + " " + "{:4d}".format(j) + ": " + "{:10.9f}".format(rel)) rel_en_p[i, j] = rel relative_energies.append([(i, j), "plus", rel, direc]) absolute_energies.append([(i, j), "plus", energy, direc]) @@ -113,8 +114,10 @@ def run(self): m_en_array[i, j] = energy = self.reap_energies( direc + 1, success_regex, energy_regex ) - print(energy) + # print(energy) rel = ref_en - energy + # print("Relative minus " + str(i) + " " + str(j) + ": " + "{:10.6f}".format(rel)) + print("Relative minus " + "{:4d}".format(i) + " " + "{:4d}".format(j) + ": " + "{:10.9f}".format(rel)) rel_en_m[i, j] = rel relative_energies.append([(i, j), "minus", rel, direc + 1]) absolute_energies.append([(i, j), "minus", energy, direc + 1]) @@ -135,17 +138,17 @@ def run(self): ) print(rel_en_m) os.chdir("..") - if self.options.printout_rel_e: - auxiliary = "" - header = "Index, relative energy, directory \n" - print(json.dumps(energy)) - with open("auxiliary", "a") as file: - file.seek(0) - file.truncate() - file.writelines(header) - for energy in print_en: - with open("auxiliary", "a") as file: - file.writelines(str(energy) + "\n") + # if self.options.printout_rel_e: + # auxiliary = "" + # header = "Index, relative energy, directory \n" + # print(json.dumps(energy)) + # with open("auxiliary", "a") as file: + # file.seek(0) + # file.truncate() + # file.writelines(header) + # for energy in print_en: + # with open("auxiliary", "a") as file: + # file.writelines(str(energy) + "\n") else: indices = self.indices p_grad_array = np.array([]) @@ -170,6 +173,7 @@ def run(self): self.p_grad_array = p_grad_array.reshape((-1, len(grad))) self.m_grad_array = m_grad_array.reshape((-1, len(grad))) os.chdir("..") + def reap_molly(self, direc, molly1_regex, molly2_regex): os.chdir("./" + str(direc)) with open("output.dat", "r") as file: @@ -224,7 +228,8 @@ def reap_molly(self, direc, molly1_regex, molly2_regex): rearrange.append(j) os.chdir("..") - return rearrange, insertion + return rearrange, insertion + def reap_energies(self, direc, success_regex, energy_regex): if self.options.dir_reap: os.chdir("./" + str(direc)) diff --git a/s_vectors.py b/s_vectors.py index d44839ea..09fb5aee 100644 --- a/s_vectors.py +++ b/s_vectors.py @@ -18,13 +18,13 @@ def __init__(self, zmat, options, variable_dict): self.s_2center_dict = {} self.s_3center_dict = {} self.s_4center_dict = {} - self.bond_indices = np.array(zmat.bond_indices).astype(np.int) - self.angle_indices = np.array(zmat.angle_indices).astype(np.int) - self.torsion_indices = np.array(zmat.torsion_indices).astype(np.int) - self.oop_indices = np.array(zmat.oop_indices).astype(np.int) - self.lin_indices = np.array(zmat.lin_indices).astype(np.int) - self.linx_indices = np.array(zmat.linx_indices).astype(np.int) - self.liny_indices = np.array(zmat.liny_indices).astype(np.int) + self.bond_indices = np.array(zmat.bond_indices).astype(int) + self.angle_indices = np.array(zmat.angle_indices).astype(int) + self.torsion_indices = np.array(zmat.torsion_indices).astype(int) + self.oop_indices = np.array(zmat.oop_indices).astype(int) + self.lin_indices = np.array(zmat.lin_indices).astype(int) + self.linx_indices = np.array(zmat.linx_indices).astype(int) + self.liny_indices = np.array(zmat.liny_indices).astype(int) self.options = options self.variable_dict = variable_dict self.zmat = zmat @@ -661,9 +661,9 @@ def second_order_B(self): TED_obj = TED(np.eye(len(self.B)), self.zmat) # Initialize then generate the internal coordinate displacements - from concordantmodes.trans_disp import TransDisp + from concordantmodes.transf_disp import TransfDisp - B_disp = TransDisp( + B_disp = TransfDisp( self, self.zmat, self.options.disp, diff --git a/test.py b/test.py deleted file mode 100644 index 5d7b92e9..00000000 --- a/test.py +++ /dev/null @@ -1,3 +0,0 @@ -import algorithm as algo - - diff --git a/Example/2_Methanol/molpro/CMA_0B/.template.dat.swp b/test_suite/.nfs00000000504572b10000065d similarity index 74% rename from Example/2_Methanol/molpro/CMA_0B/.template.dat.swp rename to test_suite/.nfs00000000504572b10000065d index 24d2dd14d61951e20e9c93cce58cf0ff31f4234e..96fbed9c21253d6d7a348e8a92ca2e8959dadbd6 100644 GIT binary patch literal 12288 zcmeI2ONbmr7{@E(BW4p7g@AbJv zZXn6ki+D6fgCKhH7EkI$y@&?!CP=`GdhjG3^q?aC>ot#c638)F4ZrQ~`o8+=tAD)) zwwHIGKDHPfptA(mLxjwIe>vIFo_paGo(rDupWQ#ZPnm9Yt>#rPEBDeQc{QQ^9-}<% zPx8O$0?yPdd4=`3oJp!OsYJ@krl?Z9H(WNc>}L%(kAkzB*6Wj^`7*D7SK#&(*hcp4 z-LqTOc|6<^Jo50V+pF%qy#ihVuYgy;E8rFI3U~#)0$zbTT7jnCL@uERciCQ?wf9XM z?)KH+yaHYUuYgy;E8rFI3U~#)0$u^HfLFjP;1#$76<{eLf8R~W<$IAl{^x(z_TkqD z3Hce^0N;R5z*TS&TmXw80Dn9{$d}*>D8W(iDENIFAzy%Zz}w&ocniD+mH`9Dz%H;A zOo89F67mzc4&DQoz0YL3VZ~vfe*m@K#j$lz+YYguYgzJ|EPfe5KMjj6;0!y!NsKH zq6zkxw@T7vCCx+>QaVFvXq{@2l})6o#ntjTTEx7JnGkG!TF2O6t~Z!fGwL$V<~aze zy2+|iQrS-uE@doukFODDRd?r6RC&H`?5&9oJ;Bn9m(8twc*#X?VicD5Dw>sPhBU_G zFSP0L@sc!?H7(<$!pC*v7MtvNp>|h);)IE2-1gGqTxYzb7F91US;0-QlRG#VoKOR% zyY4g@Qw<&>T;^PaV?Lu@)-DT~VBIbcIx9Sw*Lnn*T#`GZrCm$u&LxUJ(1gGfDj!-pqHonzEsc-wXsuz5@nMqjDo>12r;T291S@6t2s&X# zh^WXq^I@0ND_rMr6IruTL^&@b)%tWRc&;jW%PDC34vVR)V=c5%b)mh;o0Te!7Ft1j z;7(QNTwMyK&&9e#CmmQ_Y)k|xYnoO~WXrWb?X+BRFD_U^5r5P^ZEC9&Ze6>JMNzI& zNK-KEzGQ&iOGekop zm}kaadm`Y;(>!S^A#GRPB-VlHDiax7&UuVYNbQPDtm{A~gl^(IItPi1I?K6TC|a5k zBg>P?7EBDa#YR=XsryZ=&Hxj6qyQ-nLt*Plqfj-86Cl8)Ov(c#kxktgApCGt+K1uO zPOw{{b~mA^uCD{Q#ie&n3AgYBzGg1f7s}(CmXZ>E*N4)<;J|2Q)Oy|=8t(8KIj&{| z@5X45;Q_~#>f;QOPkA>OIrE-YXMR^yMX=!uX{tIKWJO)!FjU=~?A7SSj$x9ua~`h$ zn^fWHz;*t}WFI|A)a-DcZnjKzS3Pu|5WAl2WhHlxR=UZ)dOczxI%m5sZ{pmI3%wZ) zyzS;R*}aQnnGG~B)8l5IY7bFAN9;hD)jio+?WuY*bXA}5{DsWYIzrN7)~yRXe}vy!W~FP8Esej<3>7Q%fC`g`{E@bfW$Zr{%r zM=ITI?HheR?N@mkSGovAysC6;%GDKL_;}GUsT!(Rc~W>+_)uy`)|aMFp0Bm-T9eG) zEe+M$`8Kh>?SfC9EuX4{4DV_(ajEHw_E>@d1ojHt6!TfCc1IpQxG(SCd9(L4HX#53 z2tWV=5P$##AOL~?OMtoq@rfVl+W1(9<9zVPJeHUs009U<00Izz00bZa0SG_<0ucBI z1#~II7ryl0xW#{--~V6S|9^7*gF~E}Q*kusHRly4F82Ll2SfB*y_ z009U<00Izz00bcLw+d{FqAwrO;}fgb4Mj7h&c!y=rX0`S zbQometu>B>TnJeiZw>KcCbvT7z7BkU<~16+Y&~p5MRhQJ9T{grHDqb5%4s@_{H~d9 z$67_+na0srE+YEiFPFZfD(Ld}_9Ein@3?6{9-j+qtPew!Dy1STCXMgji$ys L=})C?++6$uf<1=9 diff --git a/test_suite/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc b/test_suite/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1114f2b227200a0c1ed59e366ad296b6ce0593ec GIT binary patch literal 1519 zcmZWpOOG5i5VqZ~>3QtVJ`#cis|W=|UuN=HazHE!Vz~w+BBA)wa@wA3XZt1F6SAZ3 z3&WipIdGUca^c5t^p#WoLM~8tv#=~}*)CUo<*xe5Hk(X_2)-M?|C~Mb5c;+@pIS2R!@{(S44;MM?Aq{)-+b*hF79IS5YsY}2^{@+cY-3%MpKf(w8*YYM)J5Nc-G{dJFsi2akZSJ&OSV0Q4j$1pkHP;u ze!J??2AfeEwM36wZ;e~8^|wJ6xoie5-l!d%lP+%K*I1qD$!3Rxyuf@2UV{bM`h28! zH`6V8i2!j3h`l!2;@4OnfxK_!itrI1UqOB9P_RFsP8|wlK#lq27jhGIL%zdz+hLAD z9_a%>9JZq^UgIBtrw*zOm76|Z9nR)bEK<%ioAX?z8mcsZ6GKUizk(9du&j$l)~m4= zWm7OMW`H$VuBMlY6gIHRRWO^)XR`#qB_}5dUhRMQadUAuQMXS{Zd>twqKt2UWMc3T zQdF5p2=xGDhx@A?rj(G{fsYeqmB+~qLuzG$>v42t;EWDTKi| zom!(%IjdB<$SYRRnCZGqi(F~xyR_;?R5k?0i@Xww4oh|}V83RmjaPte_^7#nJ#@;X z*-JB46tH(Av$|}U6lM(O^w}~mG{j)Sq6UOAw^DUhFAMIV>GPs~#)`CJr7&@-m`%5l zX6Fl+A>5I#q^zYmNEfxVv5Qy0ZN=>ENya9s`+Foqn_a+j)ij0x?Ll5~@rshuC&pjo zg^;#T(moG#WTWZ{yw@-Ktsh)neDW)j?*aPlH}kW)6!VwMB4gFO6ve~ihsO`*4a?5i zbD`#0U1hc8tkPx8VeRNp%Up|Igkto!+8vl#b76KJy^yDZZBwg^B-BndonwoPrOHEibN^ z(mpPRK*d6Jw$yoHf@)bpsHAG>JJ&LtT~h9j*x_}nJz)J=JGyTAFBR^LxpW-SSBCd( bG=tB8&t)M#hvyC{8}J8s&^Iy$I>z2#mv*bN literal 0 HcmV?d00001 diff --git a/test_suite/__pycache__/test_f_convert.cpython-39-pytest-7.2.0.pyc b/test_suite/__pycache__/test_f_convert.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7b27aaeeb156dc646349061041533b62431468a3 GIT binary patch literal 2573 zcmb7GNpIUm6y{JAB~gnPd5_~T&f+MGl&xtS6h%@uzO+q&#OQ$+g652Es@yO`xwR`_ zqF!_FQMwe!t(X3V9*d&KxfUppOMieb?R!I6aGhRCo8P>7Go0nU@0*cVuUi^C^S}S# z|6J0vKd^H4F`)7UUhxUhG^$Y&Y7SAQ9u;(rXp!L*N#0^QCDl@P%Brk56)5%4imFak z^(lmARCDUeHo`_UO=XwDxoF;*S9UpEh!&kiWmm$bXxUjN z8Y^{Is70%<3E1V~1zH=SHACwI;;gdO;l&ZGku?XJvql?i&Ar5y*&4Lj%pP8*QzPQ6 zgLQ?itMBaLRn^}fUQ^{fv)LN6yVnN=XM=4FFM@r8PLFgLbCGRyTg)El&P_G*430o& zY4dx{xkcybJe0TDtpUz|8}>@Ggi0ml%ntj&XA8r{k#?Yo zAEDP0w(_6AT1G3@X+0nd+Od(XfbT-z7?A;a1?)X8Pz`d?c+P9ED_IWWjB&`q){(XA zyHLX*y+vWXfw)r$YvhIEh*A6W8yo6AvmwYLgLn#?CU%@;Hbm9mx3hg_ zLn;_&vCrDP0Yje5GR`55cH;Xz&gf(7yJJbLlR4{SPYA{{_4&0M>EYd$kOe5DnSaq* zm3ks%(ch;5=cr6s*xKY0vg*QgvMAgG<^wCfc)Bf1KoK|D>B>@)Q%Dwjagf1?yccs! zt<>XGRs_pvu)BMYO0p%3JONrrLj*@mnqHbRs98_aL!^)EaXI7S_C2uGQX{bkvn!7@ zx=9er8gzDddO?^4u>f)>K15C~xne)*h1BINIarlA*mD1=s#FX7UQTbqyo$5h1&S;blNCEd#_`J(Q>(fA{b`DdN|Bx0R| zUg&#qCt~5FhmRgU=%k+iwYSGa2h!&!90d_26zXcfq8DT=H**z1a@y&koK>w8*L_&Y zHJC);$~0mTLti3gy$tUPF^K-RVOWHJ0B!$LmkExEy8eR7|5TR_TB<7b8E4dYMs2hR z>H`Ih)mI-jKyg)2pGixgKG3dG-z%j)r8%{N%0zue-w=N)^;w|4>KXObKz()En5Yjm znyc@(GwN$7^%ckJD^ApBDD_R{>f=+e^)093dmO?Vc=1sc=!`WKA)kg;K7-IiKmqYN zgn5Joghd35eQT93qrHNF^57Q`RuL{DtRY-Nun{gJtRrChlqUEUw5}ptN7z8PfzU#@ ziEs! zIg>TzZ0ENX*TKyTs_pZq&hk0=v?tn7X>bm<)_f%`Nr{i#Ze&gouSnkhu0v7 zpDPfr^IvC-a+H;vJKusA9mmU3PQ#(+rW|y8I+vo1VvFK~jlE1ifg?dE*2oHe4ab*9 zoodp{(q5*nR9RF0lqWtDV%!UkJb&EaCs7)NOfDUGJn(ix=F-5&gUsWHaM1*rBBq?0 zuwN*zG+@MTPF2i4$K;-&iXx5TOZg)>uzDf;7=E5<;xWKFfs=>SNKJ?L^bc$c{klm^ XC@o^?a6;(~($H(VRVX*h^CtNRKEb#F literal 0 HcmV?d00001 diff --git a/test_suite/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc b/test_suite/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..834e54ff2ca7b5add27d8aa50d254ca7a9b0197c GIT binary patch literal 4217 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 literal 0 HcmV?d00001 diff --git a/test_suite/__pycache__/test_gf_method.cpython-39-pytest-7.2.0.pyc b/test_suite/__pycache__/test_gf_method.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..18064ab1b4b6da79f58b85f3a9c1cb0f7ca09c51 GIT binary patch literal 2261 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 K1zgaKlm7+CfGREk literal 0 HcmV?d00001 diff --git a/test_suite/__pycache__/test_zmat.cpython-39-pytest-7.2.0.pyc b/test_suite/__pycache__/test_zmat.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7a5d593858429afc2bce9feb4b8435ebf9c07bf8 GIT binary patch literal 7454 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 Input File <== + +-------------------------------------------------------------------------- +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H -0.0000000000 -1.4246254000 0.9959240800 + O 0.0000000000 0.0000000000 -0.1255045400 + H -0.0000000000 1.4246254000 0.9959240800 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) +-------------------------------------------------------------------------- + + Memory set to 13.039 GiB by Python driver. + +Scratch directory: /tmp/795504.1.gen5.q/ + +*** tstart() called on n070 +*** at Mon Oct 24 14:59:12 2022 + + => Loading Basis Set <= + + Name: CC-PVTZ + Role: ORBITAL + Keyword: BASIS + atoms 1, 3 entry H line 23 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + atoms 2 entry O line 262 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + + + --------------------------------------------------------- + SCF + by Justin Turney, Rob Parrish, Andy Simmonett + and Daniel G. A. Smith + RHF Reference + 4 Threads, 13351 MiB Core + --------------------------------------------------------- + + ==> Geometry <== + + Molecular point group: c2v + Full point group: C2v + + Geometry (in Bohr), charge = 0, multiplicity = 1: + + Center X Y Z Mass + ------------ ----------------- ----------------- ----------------- ----------------- + H 0.000000000000 -1.424625400000 0.995924078091 1.007825032230 + O 0.000000000000 0.000000000000 -0.125504541909 15.994914619570 + H -0.000000000000 1.424625400000 0.995924078091 1.007825032230 + + Running in c2v symmetry. + + Rotational constants: A = 26.74122 B = 14.71559 C = 9.49212 [cm^-1] + Rotational constants: A = 801681.62459 B = 441162.33894 C = 284566.48700 [MHz] + Nuclear repulsion = 9.175865170715298 + + Charge = 0 + Multiplicity = 1 + Electrons = 10 + Nalpha = 5 + Nbeta = 5 + + ==> Algorithm <== + + SCF Algorithm Type is PK. + DIIS enabled. + MOM disabled. + Fractional occupation disabled. + Guess Type is SAD. + Energy threshold = 1.00e-10 + Density threshold = 1.00e-10 + Integral threshold = 0.00e+00 + + ==> Primary Basis <== + + Basis Set: CC-PVTZ + Blend: CC-PVTZ + Number of shells: 22 + Number of basis function: 58 + Number of Cartesian functions: 65 + Spherical Harmonics?: true + Max angular momentum: 3 + + ==> Integral Setup <== + + Using in-core PK algorithm. + Calculation information: + Number of atoms: 3 + Number of AO shells: 22 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Integral cutoff 1.00e-12 + Number of threads: 4 + + Performing in-core PK + Using 2929232 doubles for integral storage. + We computed 43467 shell quartets total. + Whereas there are 32131 unique shell quartets. + 35.28 percent of shell quartets recomputed by reordering. + + ==> DiskJK: Disk-Based J/K Matrices <== + + J tasked: Yes + K tasked: Yes + wK tasked: No + Memory [MiB]: 10013 + Schwarz Cutoff: 1E-12 + + OpenMP threads: 4 + + Minimum eigenvalue in the overlap matrix is 2.2512814586E-03. + Reciprocal condition number of the overlap matrix is 5.1641568133E-04. + Using symmetric orthogonalization. + + ==> Pre-Iterations <== + + SCF Guess: Superposition of Atomic Densities via on-the-fly atomic UHF (no occupation information). + + ------------------------- + Irrep Nso Nmo + ------------------------- + A1 23 23 + A2 7 7 + B1 11 11 + B2 17 17 + ------------------------- + Total 58 58 + ------------------------- + + ==> Iterations <== + + Total Energy Delta E RMS |[F,P]| + + @RHF iter SAD: -75.49984560216008 -7.54998e+01 0.00000e+00 + @RHF iter 1: -75.97838441582422 -4.78539e-01 1.43650e-02 DIIS + @RHF iter 2: -76.03096649682797 -5.25821e-02 9.29043e-03 DIIS + @RHF iter 3: -76.05653006434191 -2.55636e-02 6.93793e-04 DIIS + @RHF iter 4: -76.05691983418866 -3.89770e-04 1.69847e-04 DIIS + @RHF iter 5: -76.05694457289381 -2.47387e-05 3.51917e-05 DIIS + @RHF iter 6: -76.05694613288351 -1.55999e-06 6.79625e-06 DIIS + @RHF iter 7: -76.05694619215595 -5.92724e-08 1.07780e-06 DIIS + @RHF iter 8: -76.05694619337250 -1.21655e-09 1.64313e-07 DIIS + @RHF iter 9: -76.05694619340150 -2.90044e-11 4.59078e-08 DIIS + @RHF iter 10: -76.05694619340386 -2.35900e-12 6.00155e-09 DIIS + @RHF iter 11: -76.05694619340397 -1.13687e-13 8.43089e-10 DIIS + @RHF iter 12: -76.05694619340396 1.42109e-14 1.36270e-10 DIIS + @RHF iter 13: -76.05694619340400 -4.26326e-14 1.63432e-11 DIIS + Energy and wave function converged. + + + ==> Post-Iterations <== + + Orbital Energies [Eh] + --------------------- + + Doubly Occupied: + + 1A1 -20.555585 2A1 -1.345240 1B2 -0.706805 + 3A1 -0.579155 1B1 -0.504608 + + Virtual: + + 4A1 0.141864 2B2 0.204046 3B2 0.541748 + 5A1 0.604355 6A1 0.667973 2B1 0.787211 + 7A1 0.795792 4B2 0.805753 1A2 0.862648 + 3B1 0.951096 8A1 1.134430 5B2 1.198540 + 6B2 1.522759 9A1 1.564981 4B1 2.040301 + 7B2 2.054866 2A2 2.063150 10A1 2.172450 + 11A1 2.233608 12A1 2.584358 8B2 2.964767 + 5B1 3.346986 13A1 3.485413 3A2 3.588113 + 9B2 3.659077 6B1 3.797563 10B2 3.876436 + 14A1 3.886771 4A2 3.963406 7B1 4.016813 + 11B2 4.072642 15A1 4.191150 5A2 4.305823 + 16A1 4.374839 12B2 4.594262 8B1 4.682100 + 13B2 4.861668 17A1 5.157033 18A1 5.250132 + 14B2 5.523814 9B1 6.051625 19A1 6.574639 + 10B1 6.913903 6A2 6.937808 11B1 7.004305 + 20A1 7.017380 15B2 7.036960 21A1 7.176102 + 7A2 7.235069 22A1 7.449053 16B2 7.793111 + 17B2 8.286764 23A1 12.836801 + + Final Occupation by Irrep: + A1 A2 B1 B2 + DOCC [ 3, 0, 1, 1 ] + + @RHF Final Energy: -76.05694619340400 + + => Energetics <= + + Nuclear Repulsion Energy = 9.1758651707152978 + One-Electron Energy = -123.0828375213169750 + Two-Electron Energy = 37.8500261571976750 + Total Energy = -76.0569461934040021 + +Computation Completed + + +Properties will be evaluated at 0.000000, 0.000000, 0.000000 [a0] + +Properties computed using the SCF density matrix + + Nuclear Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: 0.9878 + + Electronic Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: -0.1846 + + Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: 0.8032 Total: 0.8032 + + Dipole Moment: [D] + X: 0.0000 Y: 0.0000 Z: 2.0416 Total: 2.0416 + + +*** tstop() called on n070 at Mon Oct 24 14:59:13 2022 +Module time: + user time = 3.55 seconds = 0.06 minutes + system time = 0.05 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes +Total time: + user time = 3.55 seconds = 0.06 minutes + system time = 0.05 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + MINTS: Wrapper to libmints. + by Justin Turney + + Calculation information: + Number of threads: 4 + Number of atoms: 3 + Number of AO shells: 22 + Number of SO shells: 16 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Number of irreps: 4 + Integral cutoff 0.00e+00 + Number of functions per irrep: [ 23 7 11 17 ] + + OEINTS: Overlap, kinetic, potential, dipole, and quadrupole integrals + stored in file 35. + + Computing two-electron integrals...done + Computed 360572 non-zero two-electron integrals. + Stored in file 33. + + +*** tstart() called on n070 +*** at Mon Oct 24 14:59:13 2022 + + + Wfn Parameters: + -------------------- + Wavefunction = CCSD_T + Number of irreps = 4 + Number of MOs = 58 + Number of active MOs = 57 + AO-Basis = NONE + Semicanonical = false + Reference = RHF + Print Level = 1 + + IRREP # MOs # FZDC # DOCC # SOCC # VIRT # FZVR + ----- ----- ------ ------ ------ ------ ------ + A1 23 1 2 0 20 0 + A2 7 0 0 0 7 0 + B1 11 0 1 0 10 0 + B2 17 0 1 0 16 0 + Transforming integrals... + IWL integrals will be deleted. + (OO|OO)... + Presorting SO-basis two-electron integrals. + Sorting File: SO Ints (nn|nn) nbuckets = 1 + Transforming the one-electron integrals and constructing Fock matrices + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + Frozen core energy = -61.31166475271053 + + Size of irrep 0 of integrals: 0.648 (MW) / 5.184 (MB) + Size of irrep 1 of integrals: 0.360 (MW) / 2.880 (MB) + Size of irrep 2 of integrals: 0.389 (MW) / 3.115 (MB) + Size of irrep 3 of integrals: 0.608 (MW) / 4.867 (MB) + Total: 2.006 (MW) / 16.046 (MB) + + Size of irrep 0 of integrals: 0.053 (MW) / 0.425 (MB) + Size of irrep 1 of integrals: 0.024 (MW) / 0.192 (MB) + Size of irrep 2 of integrals: 0.029 (MW) / 0.235 (MB) + Size of irrep 3 of integrals: 0.046 (MW) / 0.368 (MB) + Total: 0.152 (MW) / 1.220 (MB) + + Size of irrep 0 of tijab amplitudes: 0.005 (MW) / 0.039 (MB) + Size of irrep 1 of tijab amplitudes: 0.001 (MW) / 0.010 (MB) + Size of irrep 2 of tijab amplitudes: 0.002 (MW) / 0.020 (MB) + Size of irrep 3 of tijab amplitudes: 0.003 (MW) / 0.025 (MB) + Total: 0.012 (MW) / 0.093 (MB) + + Nuclear Rep. energy = 9.17586517071530 + SCF energy = -76.05694619340400 + One-electron energy = -41.57067770841164 + Two-electron energy = 17.64953109700307 + Reference energy = -76.05694619340380 + +*** tstop() called on n070 at Mon Oct 24 14:59:14 2022 +Module time: + user time = 0.42 seconds = 0.01 minutes + system time = 0.10 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes +Total time: + user time = 4.36 seconds = 0.07 minutes + system time = 0.16 seconds = 0.00 minutes + total time = 2 seconds = 0.03 minutes + ************************** + * * + * CCENERGY * + * * + ************************** + + Nuclear Rep. energy (wfn) = 9.175865170715298 + SCF energy (wfn) = -76.056946193404002 + Reference energy (file100) = -76.056946193403803 + + Input parameters: + ----------------- + Wave function = CCSD_T + Reference wfn = RHF + Brueckner = No + Memory (Mbytes) = 14000.0 + Maxiter = 300 + R_Convergence = 1.0e-08 + E_Convergence = 1.0e-10 + Restart = Yes + DIIS = Yes + AO Basis = NONE + ABCD = NEW + Cache Level = 2 + Cache Type = LOW + Print Level = 1 + Num. of threads = 4 + # Amps to Print = 10 + Print MP2 Amps? = No + Analyze T2 Amps = No + Print Pair Ener = No + Local CC = No + SCS-MP2 = False + SCSN-MP2 = False + SCS-CCSD = False + +MP2 correlation energy -0.2617111539921139 + Solving CC Amplitude Equations + ------------------------------ + Iter Energy RMS T1Diag D1Diag New D1Diag D2Diag + ---- --------------------- --------- ---------- ---------- ---------- -------- + 0 -0.261711153992114 0.000e+00 0.000000 0.000000 0.000000 0.116210 + 1 -0.262027959170023 2.912e-02 0.005707 0.009297 0.009297 0.119871 + 2 -0.266874495062261 1.004e-02 0.005905 0.009456 0.009456 0.124553 + 3 -0.267584649606283 3.225e-03 0.006493 0.010594 0.010594 0.126205 + 4 -0.267576929915734 6.557e-04 0.006531 0.010686 0.010686 0.126413 + 5 -0.267598849025209 2.070e-04 0.006551 0.010776 0.010776 0.126461 + 6 -0.267599392081675 6.175e-05 0.006557 0.010812 0.010812 0.126457 + 7 -0.267599477275411 1.982e-05 0.006560 0.010828 0.010828 0.126456 + 8 -0.267599166329532 5.098e-06 0.006561 0.010833 0.010833 0.126455 + 9 -0.267599077305756 1.048e-06 0.006561 0.010833 0.010833 0.126455 + 10 -0.267599090227977 2.347e-07 0.006561 0.010833 0.010833 0.126455 + 11 -0.267599088923969 4.559e-08 0.006561 0.010834 0.010834 0.126455 + 12 -0.267599090549703 1.010e-08 0.006561 0.010834 0.010834 0.126455 + 13 -0.267599090587878 2.426e-09 0.006561 0.010834 0.010834 0.126455 + 14 -0.267599090597044 6.036e-10 0.006561 0.010834 0.010834 0.126455 + + Iterations converged. + + + Largest TIA Amplitudes: + 2 27 -0.0075232754 + 1 0 0.0058497681 + 3 41 -0.0058208327 + 2 28 -0.0049346779 + 1 3 -0.0045601107 + 1 5 -0.0041865631 + 0 2 -0.0040247505 + 1 2 0.0038579510 + 3 46 -0.0038475697 + 1 11 -0.0037850582 + + Largest TIjAb Amplitudes: + 2 2 27 27 -0.0476609522 + 1 1 2 2 -0.0295849536 + 3 3 38 38 -0.0270795588 + 1 2 2 27 0.0259253229 + 2 1 27 2 0.0259253229 + 3 3 1 1 -0.0253314480 + 3 3 39 39 -0.0226715320 + 2 3 27 39 0.0222651857 + 3 2 39 27 0.0222651857 + 1 1 38 38 -0.0221567795 + + SCF energy (wfn) = -76.056946193404002 + Reference energy (file100) = -76.056946193403803 + + Opposite-spin MP2 correlation energy = -0.198148415814943 + Same-spin MP2 correlation energy = -0.063562738177171 + Singles MP2 correlation energy = -0.000000000000000 + MP2 correlation energy = -0.261711153992114 + * MP2 total energy = -76.318657347395913 + + Opposite-spin CCSD correlation energy = -0.210925239256676 + Same-spin CCSD correlation energy = -0.056673851340368 + Singles CCSD correlation energy = 0.000000000000000 + CCSD correlation energy = -0.267599090597044 + * CCSD total energy = -76.324545284000848 + + ************************** + * * + * CCTRIPLES * + * * + ************************** + + + Wave function = CCSD_T + Reference wfn = RHF + + Nuclear Rep. energy (wfn) = 9.175865170715298 + SCF energy (wfn) = -76.056946193404002 + Reference energy (file100) = -76.056946193403803 + CCSD energy (file100) = -0.267599090597044 + Total CCSD energy (file100) = -76.324545284000848 + + Number of ijk index combinations: 20 + Memory available in words : 1750000000 + ~Words needed per explicit thread: 32000 + Number of threads for explicit ijk threading: 4 + + MKL num_threads set to 1 for explicit threading. + + (T) energy = -0.007671234894980 + * CCSD(T) total energy = -76.332216518895819 + +Giraffe The Energy is -76.332216518896 + + Psi4 stopped on: Monday, 24 October 2022 02:59PM + Psi4 wall time for execution: 0:00:06.11 + +*** Psi4 exiting successfully. Buy a developer a beer! diff --git a/test_suite/ref_data/reap_test/Disps/1/timer.dat b/test_suite/ref_data/reap_test/Disps/1/timer.dat new file mode 100644 index 00000000..23fdab1c --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/1/timer.dat @@ -0,0 +1,92 @@ + +Host: n070 + +Timers On : Mon Oct 24 14:59:09 2022 +Timers Off: Mon Oct 24 14:59:18 2022 + +Wall Time: 8.15 seconds + + Time (seconds) +Module User System Wall Calls +Total PK formation time : 1.350u 0.000s 0.382w 1 calls +HF: Form core H : 0.083u 0.017s 0.013w 1 calls +HF: Form S/X : 0.000u 0.000s 0.001w 1 calls +HF: Guess : 2.583u 0.050s 0.413w 1 calls +SAD Guess : 2.433u 0.050s 0.392w 1 calls +HF: Form G : 0.367u 0.000s 0.058w 14 calls +JK: D : 0.000u 0.000s 0.000w 14 calls +JK: USO2AO : 0.017u 0.000s 0.001w 14 calls +JK: JK : 0.333u 0.000s 0.055w 14 calls +PK computes JK : 0.333u 0.000s 0.055w 14 calls +JK: AO2USO : 0.017u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.017u 0.000s 0.010w 13 calls +DIISManager::add_entry : 0.000u 0.000s 0.002w 13 calls +DIISManager::extrapolate : 0.000u 0.000s 0.002w 13 calls +bMatrix setup : 0.000u 0.000s 0.001w 13 calls +bMatrix pseudoinverse : 0.000u 0.000s 0.001w 13 calls +New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.002w 13 calls +ccenergy : 12.117u 1.117s 3.349w 1 calls +F build : 0.100u 0.033s 0.036w 14 calls +Wmbej build : 0.267u 0.033s 0.065w 14 calls +C->Wmbej : 0.000u 0.000s 0.003w 14 calls +F->Wmbej : 0.117u 0.033s 0.038w 14 calls +E->Wmbej : 0.083u 0.000s 0.009w 14 calls +X->Wmbej : 0.050u 0.000s 0.012w 14 calls +Z : 0.000u 0.017s 0.008w 14 calls +T2 Build : 1.500u 0.300s 0.260w 14 calls +BT2 : 0.950u 0.183s 0.173w 14 calls +ABCD:new : 0.950u 0.183s 0.173w 14 calls +ABCD:S : 0.133u 0.017s 0.029w 14 calls +ABCD:A : 0.133u 0.033s 0.028w 14 calls +ABCD:axpy : 0.617u 0.133s 0.109w 14 calls +FT2 : 0.083u 0.017s 0.010w 14 calls +WmbejT2 : 0.150u 0.050s 0.020w 14 calls +CT2 : 0.167u 0.017s 0.031w 14 calls +cctriples : 1.150u 0.067s 0.543w 1 calls +ET_RHF : 0.350u 0.017s 0.058w 1 calls + +-------------------------------------------------------------------------------------- +Total PK formation time : 1.350u 0.000s 0.382w 1 calls +HF: Form core H : 0.083u 0.017s 0.013w 1 calls +HF: Form S/X : 0.000u 0.000s 0.001w 1 calls +HF: Guess : 2.583u 0.050s 0.413w 1 calls +| SAD Guess : 2.433u 0.050s 0.392w 1 calls +HF: Form G : 0.367u 0.000s 0.058w 14 calls +| JK: D : 0.000u 0.000s 0.000w 14 calls +| JK: USO2AO : 0.017u 0.000s 0.001w 14 calls +| JK: JK : 0.333u 0.000s 0.055w 14 calls +| | PK computes JK : 0.333u 0.000s 0.055w 14 calls +| JK: AO2USO : 0.017u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.017u 0.000s 0.010w 13 calls +| DIISManager::add_entry : 0.000u 0.000s 0.002w 13 calls +| DIISManager::extrapolate : 0.000u 0.000s 0.002w 13 calls +| | bMatrix setup : 0.000u 0.000s 0.001w 13 calls +| | bMatrix pseudoinverse : 0.000u 0.000s 0.001w 13 calls +| | New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.002w 13 calls +ccenergy : 12.117u 1.117s 3.349w 1 calls +| F build : 0.100u 0.033s 0.036w 14 calls +| Wmbej build : 0.267u 0.033s 0.065w 14 calls +| | C->Wmbej : 0.000u 0.000s 0.003w 14 calls +| | F->Wmbej : 0.117u 0.033s 0.038w 14 calls +| | E->Wmbej : 0.083u 0.000s 0.009w 14 calls +| | X->Wmbej : 0.050u 0.000s 0.012w 14 calls +| Z : 0.000u 0.017s 0.008w 14 calls +| T2 Build : 1.500u 0.300s 0.260w 14 calls +| | BT2 : 0.950u 0.183s 0.173w 14 calls +| | | ABCD:new : 0.950u 0.183s 0.173w 14 calls +| | | | ABCD:S : 0.133u 0.017s 0.029w 14 calls +| | | | ABCD:A : 0.133u 0.033s 0.028w 14 calls +| | | | ABCD:axpy : 0.617u 0.133s 0.109w 14 calls +| | FT2 : 0.083u 0.017s 0.010w 14 calls +| | WmbejT2 : 0.150u 0.050s 0.020w 14 calls +| | CT2 : 0.167u 0.017s 0.031w 14 calls +cctriples : 1.150u 0.067s 0.543w 1 calls +| ET_RHF : 0.350u 0.017s 0.058w 1 calls + +************************************************************************************** diff --git a/test_suite/ref_data/reap_test/Disps/2/ijk.dat b/test_suite/ref_data/reap_test/Disps/2/ijk.dat new file mode 100644 index 00000000..502f5c85 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/2/ijk.dat @@ -0,0 +1,85 @@ +Total number of IJK combinations =: 20 +Num. of IJK with (Gi,Gj,Gk)=(0,0,0) =: 4 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 + thread 3: first_ijk=3, last_ijk=3 +Num. of IJK with (Gi,Gj,Gk)=(0,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,0) =: 3 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 +Num. of IJK with (Gi,Gj,Gk)=(2,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(2,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,0) =: 3 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 +Num. of IJK with (Gi,Gj,Gk)=(3,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(3,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(3,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,3) =: 1 + thread 0: first_ijk=0, last_ijk=0 diff --git a/test_suite/ref_data/reap_test/Disps/2/input.dat b/test_suite/ref_data/reap_test/Disps/2/input.dat new file mode 100644 index 00000000..0f7254a8 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/2/input.dat @@ -0,0 +1,24 @@ +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H 0.0000000000 -1.4297526393 0.9934268630 + O 0.0000000000 -0.0000000000 -0.1205101060 + H 0.0000000000 1.4297526393 0.9934268630 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) diff --git a/test_suite/ref_data/reap_test/Disps/2/output.dat b/test_suite/ref_data/reap_test/Disps/2/output.dat new file mode 100644 index 00000000..aac51665 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/2/output.dat @@ -0,0 +1,533 @@ + + ----------------------------------------------------------------------- + Psi4: An Open-Source Ab Initio Electronic Structure Package + Psi4 1.4a2.dev629 + + Git: Rev {master} 2938fc2 dirty + + + D. G. A. Smith, L. A. Burns, A. C. Simmonett, R. M. Parrish, + M. C. Schieber, R. Galvelis, P. Kraus, H. Kruse, R. Di Remigio, + A. Alenaizan, A. M. James, S. Lehtola, J. P. Misiewicz, M. Scheurer, + R. A. Shaw, J. B. Schriber, Y. Xie, Z. L. Glick, D. A. Sirianni, + J. S. O'Brien, J. M. Waldrop, A. Kumar, E. G. Hohenstein, + B. P. Pritchard, B. R. Brooks, H. F. Schaefer III, A. Yu. Sokolov, + K. Patkowski, A. E. DePrince III, U. Bozkaya, R. A. King, + F. A. Evangelista, J. M. Turney, T. D. Crawford, C. D. Sherrill, + J. Chem. Phys. 152(18) 184108 (2020). https://doi.org/10.1063/5.0006002 + + Additional Code Authors + E. T. Seidl, C. L. Janssen, E. F. Valeev, M. L. Leininger, + J. F. Gonthier, R. M. Richard, H. R. McAlexander, M. Saitow, X. Wang, + P. Verma, and M. H. Lechner + + Previous Authors, Complete List of Code Contributors, + and Citations for Specific Modules + https://github.com/psi4/psi4/blob/master/codemeta.json + https://github.com/psi4/psi4/graphs/contributors + http://psicode.org/psi4manual/master/introduction.html#citing-psifour + + ----------------------------------------------------------------------- + + + Psi4 started on: Monday, 24 October 2022 02:59PM + + Process ID: 7803 + Host: n077 + PSIDATADIR: /opt/psi/4/master/share/psi4 + Memory: 500.0 MiB + Threads: 4 + + ==> Input File <== + +-------------------------------------------------------------------------- +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H 0.0000000000 -1.4297526393 0.9934268630 + O 0.0000000000 -0.0000000000 -0.1205101060 + H 0.0000000000 1.4297526393 0.9934268630 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) +-------------------------------------------------------------------------- + + Memory set to 13.039 GiB by Python driver. + +Scratch directory: /tmp/795504.2.gen6.q/ + +*** tstart() called on n077 +*** at Mon Oct 24 14:59:07 2022 + + => Loading Basis Set <= + + Name: CC-PVTZ + Role: ORBITAL + Keyword: BASIS + atoms 1, 3 entry H line 23 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + atoms 2 entry O line 262 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + + + --------------------------------------------------------- + SCF + by Justin Turney, Rob Parrish, Andy Simmonett + and Daniel G. A. Smith + RHF Reference + 4 Threads, 13351 MiB Core + --------------------------------------------------------- + + ==> Geometry <== + + Molecular point group: c2v + Full point group: C2v + + Geometry (in Bohr), charge = 0, multiplicity = 1: + + Center X Y Z Mass + ------------ ----------------- ----------------- ----------------- ----------------- + H 0.000000000000 -1.429752639300 0.989270854263 1.007825032230 + O 0.000000000000 0.000000000000 -0.124666114737 15.994914619570 + H -0.000000000000 1.429752639300 0.989270854263 1.007825032230 + + Running in c2v symmetry. + + Rotational constants: A = 27.10212 B = 14.61024 C = 9.49283 [cm^-1] + Rotational constants: A = 812501.11467 B = 438003.90574 C = 284587.95114 [MHz] + Nuclear repulsion = 9.177442250434311 + + Charge = 0 + Multiplicity = 1 + Electrons = 10 + Nalpha = 5 + Nbeta = 5 + + ==> Algorithm <== + + SCF Algorithm Type is PK. + DIIS enabled. + MOM disabled. + Fractional occupation disabled. + Guess Type is SAD. + Energy threshold = 1.00e-10 + Density threshold = 1.00e-10 + Integral threshold = 0.00e+00 + + ==> Primary Basis <== + + Basis Set: CC-PVTZ + Blend: CC-PVTZ + Number of shells: 22 + Number of basis function: 58 + Number of Cartesian functions: 65 + Spherical Harmonics?: true + Max angular momentum: 3 + + ==> Integral Setup <== + + Using in-core PK algorithm. + Calculation information: + Number of atoms: 3 + Number of AO shells: 22 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Integral cutoff 1.00e-12 + Number of threads: 4 + + Performing in-core PK + Using 2929232 doubles for integral storage. + We computed 43467 shell quartets total. + Whereas there are 32131 unique shell quartets. + 35.28 percent of shell quartets recomputed by reordering. + + ==> DiskJK: Disk-Based J/K Matrices <== + + J tasked: Yes + K tasked: Yes + wK tasked: No + Memory [MiB]: 10013 + Schwarz Cutoff: 1E-12 + + OpenMP threads: 4 + + Minimum eigenvalue in the overlap matrix is 2.2456298047E-03. + Reciprocal condition number of the overlap matrix is 5.1529959503E-04. + Using symmetric orthogonalization. + + ==> Pre-Iterations <== + + SCF Guess: Superposition of Atomic Densities via on-the-fly atomic UHF (no occupation information). + + ------------------------- + Irrep Nso Nmo + ------------------------- + A1 23 23 + A2 7 7 + B1 11 11 + B2 17 17 + ------------------------- + Total 58 58 + ------------------------- + + ==> Iterations <== + + Total Energy Delta E RMS |[F,P]| + + @RHF iter SAD: -75.49958246547348 -7.54996e+01 0.00000e+00 + @RHF iter 1: -75.97854473848278 -4.78962e-01 1.43642e-02 DIIS + @RHF iter 2: -76.03109899172595 -5.25543e-02 9.28030e-03 DIIS + @RHF iter 3: -76.05659738098460 -2.54984e-02 6.93094e-04 DIIS + @RHF iter 4: -76.05698718430075 -3.89803e-04 1.69551e-04 DIIS + @RHF iter 5: -76.05701186000508 -2.46757e-05 3.51183e-05 DIIS + @RHF iter 6: -76.05701341920536 -1.55920e-06 6.81100e-06 DIIS + @RHF iter 7: -76.05701347917001 -5.99646e-08 1.09264e-06 DIIS + @RHF iter 8: -76.05701348044036 -1.27035e-09 1.68835e-07 DIIS + @RHF iter 9: -76.05701348047137 -3.10081e-11 4.71630e-08 DIIS + @RHF iter 10: -76.05701348047405 -2.68585e-12 6.02384e-09 DIIS + @RHF iter 11: -76.05701348047407 -1.42109e-14 8.45213e-10 DIIS + @RHF iter 12: -76.05701348047408 -1.42109e-14 1.36131e-10 DIIS + @RHF iter 13: -76.05701348047404 4.26326e-14 1.65177e-11 DIIS + Energy and wave function converged. + + + ==> Post-Iterations <== + + Orbital Energies [Eh] + --------------------- + + Doubly Occupied: + + 1A1 -20.555247 2A1 -1.344962 1B2 -0.708072 + 3A1 -0.578073 1B1 -0.504441 + + Virtual: + + 4A1 0.142005 2B2 0.203955 3B2 0.542836 + 5A1 0.602471 6A1 0.668309 2B1 0.787320 + 7A1 0.798649 4B2 0.805413 1A2 0.861487 + 3B1 0.953532 8A1 1.133527 5B2 1.197057 + 6B2 1.524424 9A1 1.564200 4B1 2.037805 + 7B2 2.054834 2A2 2.064523 10A1 2.171528 + 11A1 2.234284 12A1 2.587261 8B2 2.963349 + 5B1 3.352471 13A1 3.488444 3A2 3.583588 + 9B2 3.655966 6B1 3.798682 10B2 3.876794 + 14A1 3.885327 4A2 3.961742 7B1 4.018160 + 11B2 4.074463 15A1 4.190874 5A2 4.309027 + 16A1 4.381633 12B2 4.585827 8B1 4.683149 + 13B2 4.861688 17A1 5.154393 18A1 5.250844 + 14B2 5.525901 9B1 6.049872 19A1 6.568411 + 10B1 6.917197 6A2 6.939537 11B1 7.002952 + 20A1 7.017225 15B2 7.050458 21A1 7.170208 + 7A2 7.234183 22A1 7.452624 16B2 7.791420 + 17B2 8.284053 23A1 12.844900 + + Final Occupation by Irrep: + A1 A2 B1 B2 + DOCC [ 3, 0, 1, 1 ] + + @RHF Final Energy: -76.05701348047404 + + => Energetics <= + + Nuclear Repulsion Energy = 9.1774422504343107 + One-Electron Energy = -123.0873212408864390 + Two-Electron Energy = 37.8528655099780877 + Total Energy = -76.0570134804740405 + +Computation Completed + + +Properties will be evaluated at 0.000000, 0.000000, 0.000000 [a0] + +Properties computed using the SCF density matrix + + Nuclear Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: 0.9812 + + Electronic Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: -0.1817 + + Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: 0.7995 Total: 0.7995 + + Dipole Moment: [D] + X: 0.0000 Y: 0.0000 Z: 2.0322 Total: 2.0322 + + +*** tstop() called on n077 at Mon Oct 24 14:59:08 2022 +Module time: + user time = 1.68 seconds = 0.03 minutes + system time = 0.02 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes +Total time: + user time = 1.68 seconds = 0.03 minutes + system time = 0.02 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + MINTS: Wrapper to libmints. + by Justin Turney + + Calculation information: + Number of threads: 4 + Number of atoms: 3 + Number of AO shells: 22 + Number of SO shells: 16 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Number of irreps: 4 + Integral cutoff 0.00e+00 + Number of functions per irrep: [ 23 7 11 17 ] + + OEINTS: Overlap, kinetic, potential, dipole, and quadrupole integrals + stored in file 35. + + Computing two-electron integrals...done + Computed 359314 non-zero two-electron integrals. + Stored in file 33. + + +*** tstart() called on n077 +*** at Mon Oct 24 14:59:08 2022 + + + Wfn Parameters: + -------------------- + Wavefunction = CCSD_T + Number of irreps = 4 + Number of MOs = 58 + Number of active MOs = 57 + AO-Basis = NONE + Semicanonical = false + Reference = RHF + Print Level = 1 + + IRREP # MOs # FZDC # DOCC # SOCC # VIRT # FZVR + ----- ----- ------ ------ ------ ------ ------ + A1 23 1 2 0 20 0 + A2 7 0 0 0 7 0 + B1 11 0 1 0 10 0 + B2 17 0 1 0 16 0 + Transforming integrals... + IWL integrals will be deleted. + (OO|OO)... + Presorting SO-basis two-electron integrals. + Sorting File: SO Ints (nn|nn) nbuckets = 1 + Transforming the one-electron integrals and constructing Fock matrices + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + Frozen core energy = -61.31236959208407 + + Size of irrep 0 of integrals: 0.648 (MW) / 5.184 (MB) + Size of irrep 1 of integrals: 0.360 (MW) / 2.880 (MB) + Size of irrep 2 of integrals: 0.389 (MW) / 3.115 (MB) + Size of irrep 3 of integrals: 0.608 (MW) / 4.867 (MB) + Total: 2.006 (MW) / 16.046 (MB) + + Size of irrep 0 of integrals: 0.053 (MW) / 0.425 (MB) + Size of irrep 1 of integrals: 0.024 (MW) / 0.192 (MB) + Size of irrep 2 of integrals: 0.029 (MW) / 0.235 (MB) + Size of irrep 3 of integrals: 0.046 (MW) / 0.368 (MB) + Total: 0.152 (MW) / 1.220 (MB) + + Size of irrep 0 of tijab amplitudes: 0.005 (MW) / 0.039 (MB) + Size of irrep 1 of tijab amplitudes: 0.001 (MW) / 0.010 (MB) + Size of irrep 2 of tijab amplitudes: 0.002 (MW) / 0.020 (MB) + Size of irrep 3 of tijab amplitudes: 0.003 (MW) / 0.025 (MB) + Total: 0.012 (MW) / 0.093 (MB) + + Nuclear Rep. energy = 9.17744225043431 + SCF energy = -76.05701348047404 + One-electron energy = -41.57307648171895 + Two-electron energy = 17.65099034289468 + Reference energy = -76.05701348047404 + +*** tstop() called on n077 at Mon Oct 24 14:59:08 2022 +Module time: + user time = 0.43 seconds = 0.01 minutes + system time = 0.06 seconds = 0.00 minutes + total time = 0 seconds = 0.00 minutes +Total time: + user time = 2.55 seconds = 0.04 minutes + system time = 0.09 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + ************************** + * * + * CCENERGY * + * * + ************************** + + Nuclear Rep. energy (wfn) = 9.177442250434311 + SCF energy (wfn) = -76.057013480474041 + Reference energy (file100) = -76.057013480474041 + + Input parameters: + ----------------- + Wave function = CCSD_T + Reference wfn = RHF + Brueckner = No + Memory (Mbytes) = 14000.0 + Maxiter = 300 + R_Convergence = 1.0e-08 + E_Convergence = 1.0e-10 + Restart = Yes + DIIS = Yes + AO Basis = NONE + ABCD = NEW + Cache Level = 2 + Cache Type = LOW + Print Level = 1 + Num. of threads = 4 + # Amps to Print = 10 + Print MP2 Amps? = No + Analyze T2 Amps = No + Print Pair Ener = No + Local CC = No + SCS-MP2 = False + SCSN-MP2 = False + SCS-CCSD = False + +MP2 correlation energy -0.2616341709629163 + Solving CC Amplitude Equations + ------------------------------ + Iter Energy RMS T1Diag D1Diag New D1Diag D2Diag + ---- --------------------- --------- ---------- ---------- ---------- -------- + 0 -0.261634170962916 0.000e+00 0.000000 0.000000 0.000000 0.116111 + 1 -0.261971111169574 2.908e-02 0.005693 0.009278 0.009278 0.119779 + 2 -0.266811235343318 1.003e-02 0.005891 0.009440 0.009440 0.124449 + 3 -0.267517774288192 3.216e-03 0.006476 0.010574 0.010574 0.126092 + 4 -0.267510376581931 6.543e-04 0.006514 0.010667 0.010667 0.126299 + 5 -0.267532196098243 2.068e-04 0.006534 0.010757 0.010757 0.126346 + 6 -0.267532731363032 6.197e-05 0.006540 0.010794 0.010794 0.126342 + 7 -0.267532810533913 1.988e-05 0.006543 0.010810 0.010810 0.126341 + 8 -0.267532497643624 5.091e-06 0.006544 0.010814 0.010814 0.126341 + 9 -0.267532408841902 1.049e-06 0.006544 0.010815 0.010815 0.126341 + 10 -0.267532421951108 2.349e-07 0.006544 0.010815 0.010815 0.126341 + 11 -0.267532420649508 4.576e-08 0.006544 0.010815 0.010815 0.126341 + 12 -0.267532422282873 1.014e-08 0.006544 0.010815 0.010815 0.126341 + 13 -0.267532422318532 2.446e-09 0.006544 0.010815 0.010815 0.126341 + 14 -0.267532422327343 6.070e-10 0.006544 0.010815 0.010815 0.126341 + + Iterations converged. + + + Largest TIA Amplitudes: + 2 27 -0.0074939527 + 1 0 0.0058307640 + 3 41 -0.0058117908 + 2 28 -0.0049045295 + 1 3 -0.0045333265 + 1 5 -0.0041772053 + 0 2 -0.0040085295 + 1 2 0.0038787238 + 3 46 -0.0038363948 + 1 11 -0.0037721840 + + Largest TIjAb Amplitudes: + 2 2 27 27 -0.0476606219 + 1 1 2 2 -0.0296666658 + 3 3 38 38 -0.0269543012 + 1 2 2 27 0.0259614272 + 2 1 27 2 0.0259614272 + 3 3 1 1 -0.0254755470 + 3 3 39 39 -0.0226737954 + 2 3 27 39 0.0222566823 + 3 2 39 27 0.0222566823 + 1 1 38 38 -0.0221022958 + + SCF energy (wfn) = -76.057013480474041 + Reference energy (file100) = -76.057013480474041 + + Opposite-spin MP2 correlation energy = -0.198091853930755 + Same-spin MP2 correlation energy = -0.063542317032161 + Singles MP2 correlation energy = -0.000000000000000 + MP2 correlation energy = -0.261634170962916 + * MP2 total energy = -76.318647651436962 + + Opposite-spin CCSD correlation energy = -0.210869123863273 + Same-spin CCSD correlation energy = -0.056663298464070 + Singles CCSD correlation energy = 0.000000000000000 + CCSD correlation energy = -0.267532422327343 + * CCSD total energy = -76.324545902801390 + + ************************** + * * + * CCTRIPLES * + * * + ************************** + + + Wave function = CCSD_T + Reference wfn = RHF + + Nuclear Rep. energy (wfn) = 9.177442250434311 + SCF energy (wfn) = -76.057013480474041 + Reference energy (file100) = -76.057013480474041 + CCSD energy (file100) = -0.267532422327343 + Total CCSD energy (file100) = -76.324545902801390 + + Number of ijk index combinations: 20 + Memory available in words : 1750000000 + ~Words needed per explicit thread: 32000 + Number of threads for explicit ijk threading: 4 + + MKL num_threads set to 1 for explicit threading. + + (T) energy = -0.007662546790363 + * CCSD(T) total energy = -76.332208449591747 + +Giraffe The Energy is -76.332208449592 + + Psi4 stopped on: Monday, 24 October 2022 02:59PM + Psi4 wall time for execution: 0:00:03.09 + +*** Psi4 exiting successfully. Buy a developer a beer! diff --git a/test_suite/ref_data/reap_test/Disps/2/timer.dat b/test_suite/ref_data/reap_test/Disps/2/timer.dat new file mode 100644 index 00000000..b7af79ae --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/2/timer.dat @@ -0,0 +1,92 @@ + +Host: n077 + +Timers On : Mon Oct 24 14:59:06 2022 +Timers Off: Mon Oct 24 14:59:10 2022 + +Wall Time: 4.21 seconds + + Time (seconds) +Module User System Wall Calls +Total PK formation time : 0.400u 0.017s 0.113w 1 calls +HF: Form core H : 0.050u 0.000s 0.006w 1 calls +HF: Form S/X : 0.000u 0.000s 0.000w 1 calls +HF: Guess : 1.233u 0.017s 0.191w 1 calls +SAD Guess : 1.183u 0.017s 0.181w 1 calls +HF: Form G : 0.300u 0.000s 0.048w 14 calls +JK: D : 0.000u 0.000s 0.000w 14 calls +JK: USO2AO : 0.000u 0.000s 0.001w 14 calls +JK: JK : 0.283u 0.000s 0.046w 14 calls +PK computes JK : 0.283u 0.000s 0.046w 14 calls +JK: AO2USO : 0.017u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.183u 0.000s 0.031w 13 calls +DIISManager::add_entry : 0.117u 0.000s 0.025w 13 calls +DIISManager::extrapolate : 0.000u 0.000s 0.001w 13 calls +bMatrix setup : 0.000u 0.000s 0.000w 13 calls +bMatrix pseudoinverse : 0.000u 0.000s 0.000w 13 calls +New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.002w 13 calls +ccenergy : 9.650u 0.233s 1.899w 1 calls +F build : 0.033u 0.000s 0.012w 14 calls +Wmbej build : 0.150u 0.000s 0.021w 14 calls +C->Wmbej : 0.000u 0.000s 0.001w 14 calls +F->Wmbej : 0.033u 0.000s 0.012w 14 calls +E->Wmbej : 0.050u 0.000s 0.003w 14 calls +X->Wmbej : 0.050u 0.000s 0.004w 14 calls +Z : 0.017u 0.000s 0.002w 14 calls +T2 Build : 0.483u 0.083s 0.088w 14 calls +BT2 : 0.300u 0.067s 0.060w 14 calls +ABCD:new : 0.300u 0.067s 0.060w 14 calls +ABCD:S : 0.033u 0.000s 0.010w 14 calls +ABCD:A : 0.017u 0.017s 0.009w 14 calls +ABCD:axpy : 0.233u 0.050s 0.038w 14 calls +FT2 : 0.033u 0.017s 0.004w 14 calls +WmbejT2 : 0.033u 0.000s 0.007w 14 calls +CT2 : 0.067u 0.000s 0.010w 14 calls +cctriples : 0.700u 0.017s 0.132w 1 calls +ET_RHF : 0.117u 0.000s 0.018w 1 calls + +-------------------------------------------------------------------------------------- +Total PK formation time : 0.400u 0.017s 0.113w 1 calls +HF: Form core H : 0.050u 0.000s 0.006w 1 calls +HF: Form S/X : 0.000u 0.000s 0.000w 1 calls +HF: Guess : 1.233u 0.017s 0.191w 1 calls +| SAD Guess : 1.183u 0.017s 0.181w 1 calls +HF: Form G : 0.300u 0.000s 0.048w 14 calls +| JK: D : 0.000u 0.000s 0.000w 14 calls +| JK: USO2AO : 0.000u 0.000s 0.001w 14 calls +| JK: JK : 0.283u 0.000s 0.046w 14 calls +| | PK computes JK : 0.283u 0.000s 0.046w 14 calls +| JK: AO2USO : 0.017u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.183u 0.000s 0.031w 13 calls +| DIISManager::add_entry : 0.117u 0.000s 0.025w 13 calls +| DIISManager::extrapolate : 0.000u 0.000s 0.001w 13 calls +| | bMatrix setup : 0.000u 0.000s 0.000w 13 calls +| | bMatrix pseudoinverse : 0.000u 0.000s 0.000w 13 calls +| | New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.002w 13 calls +ccenergy : 9.650u 0.233s 1.899w 1 calls +| F build : 0.033u 0.000s 0.012w 14 calls +| Wmbej build : 0.150u 0.000s 0.021w 14 calls +| | C->Wmbej : 0.000u 0.000s 0.001w 14 calls +| | F->Wmbej : 0.033u 0.000s 0.012w 14 calls +| | E->Wmbej : 0.050u 0.000s 0.003w 14 calls +| | X->Wmbej : 0.050u 0.000s 0.004w 14 calls +| Z : 0.017u 0.000s 0.002w 14 calls +| T2 Build : 0.483u 0.083s 0.088w 14 calls +| | BT2 : 0.300u 0.067s 0.060w 14 calls +| | | ABCD:new : 0.300u 0.067s 0.060w 14 calls +| | | | ABCD:S : 0.033u 0.000s 0.010w 14 calls +| | | | ABCD:A : 0.017u 0.017s 0.009w 14 calls +| | | | ABCD:axpy : 0.233u 0.050s 0.038w 14 calls +| | FT2 : 0.033u 0.017s 0.004w 14 calls +| | WmbejT2 : 0.033u 0.000s 0.007w 14 calls +| | CT2 : 0.067u 0.000s 0.010w 14 calls +cctriples : 0.700u 0.017s 0.132w 1 calls +| ET_RHF : 0.117u 0.000s 0.018w 1 calls + +************************************************************************************** diff --git a/test_suite/ref_data/reap_test/Disps/3/ijk.dat b/test_suite/ref_data/reap_test/Disps/3/ijk.dat new file mode 100644 index 00000000..502f5c85 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/3/ijk.dat @@ -0,0 +1,85 @@ +Total number of IJK combinations =: 20 +Num. of IJK with (Gi,Gj,Gk)=(0,0,0) =: 4 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 + thread 3: first_ijk=3, last_ijk=3 +Num. of IJK with (Gi,Gj,Gk)=(0,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,0) =: 3 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 +Num. of IJK with (Gi,Gj,Gk)=(2,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(2,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,0) =: 3 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 +Num. of IJK with (Gi,Gj,Gk)=(3,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(3,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(3,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,3) =: 1 + thread 0: first_ijk=0, last_ijk=0 diff --git a/test_suite/ref_data/reap_test/Disps/3/input.dat b/test_suite/ref_data/reap_test/Disps/3/input.dat new file mode 100644 index 00000000..176181a1 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/3/input.dat @@ -0,0 +1,24 @@ +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H -0.0000000000 -1.4194589775 0.9984134852 + O 0.0000000000 0.0000000000 -0.1304833504 + H 0.0000000000 1.4194589775 0.9984134852 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) diff --git a/test_suite/ref_data/reap_test/Disps/3/output.dat b/test_suite/ref_data/reap_test/Disps/3/output.dat new file mode 100644 index 00000000..30a33f7a --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/3/output.dat @@ -0,0 +1,533 @@ + + ----------------------------------------------------------------------- + Psi4: An Open-Source Ab Initio Electronic Structure Package + Psi4 1.4a2.dev629 + + Git: Rev {master} 2938fc2 dirty + + + D. G. A. Smith, L. A. Burns, A. C. Simmonett, R. M. Parrish, + M. C. Schieber, R. Galvelis, P. Kraus, H. Kruse, R. Di Remigio, + A. Alenaizan, A. M. James, S. Lehtola, J. P. Misiewicz, M. Scheurer, + R. A. Shaw, J. B. Schriber, Y. Xie, Z. L. Glick, D. A. Sirianni, + J. S. O'Brien, J. M. Waldrop, A. Kumar, E. G. Hohenstein, + B. P. Pritchard, B. R. Brooks, H. F. Schaefer III, A. Yu. Sokolov, + K. Patkowski, A. E. DePrince III, U. Bozkaya, R. A. King, + F. A. Evangelista, J. M. Turney, T. D. Crawford, C. D. Sherrill, + J. Chem. Phys. 152(18) 184108 (2020). https://doi.org/10.1063/5.0006002 + + Additional Code Authors + E. T. Seidl, C. L. Janssen, E. F. Valeev, M. L. Leininger, + J. F. Gonthier, R. M. Richard, H. R. McAlexander, M. Saitow, X. Wang, + P. Verma, and M. H. Lechner + + Previous Authors, Complete List of Code Contributors, + and Citations for Specific Modules + https://github.com/psi4/psi4/blob/master/codemeta.json + https://github.com/psi4/psi4/graphs/contributors + http://psicode.org/psi4manual/master/introduction.html#citing-psifour + + ----------------------------------------------------------------------- + + + Psi4 started on: Monday, 24 October 2022 02:59PM + + Process ID: 7165 + Host: n079 + PSIDATADIR: /opt/psi/4/master/share/psi4 + Memory: 500.0 MiB + Threads: 4 + + ==> Input File <== + +-------------------------------------------------------------------------- +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H -0.0000000000 -1.4194589775 0.9984134852 + O 0.0000000000 0.0000000000 -0.1304833504 + H 0.0000000000 1.4194589775 0.9984134852 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) +-------------------------------------------------------------------------- + + Memory set to 13.039 GiB by Python driver. + +Scratch directory: /tmp/795504.3.gen6.q/ + +*** tstart() called on n079 +*** at Mon Oct 24 14:59:09 2022 + + => Loading Basis Set <= + + Name: CC-PVTZ + Role: ORBITAL + Keyword: BASIS + atoms 1, 3 entry H line 23 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + atoms 2 entry O line 262 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + + + --------------------------------------------------------- + SCF + by Justin Turney, Rob Parrish, Andy Simmonett + and Daniel G. A. Smith + RHF Reference + 4 Threads, 13351 MiB Core + --------------------------------------------------------- + + ==> Geometry <== + + Molecular point group: c2v + Full point group: C2v + + Geometry (in Bohr), charge = 0, multiplicity = 1: + + Center X Y Z Mass + ------------ ----------------- ----------------- ----------------- ----------------- + H 0.000000000000 -1.419458977500 1.002556489289 1.007825032230 + O 0.000000000000 0.000000000000 -0.126340346311 15.994914619570 + H -0.000000000000 1.419458977500 1.002556489289 1.007825032230 + + Running in c2v symmetry. + + Rotational constants: A = 26.38858 B = 14.82291 C = 9.49142 [cm^-1] + Rotational constants: A = 791109.66248 B = 444379.59135 C = 284545.56560 [MHz] + Nuclear repulsion = 9.174308732822899 + + Charge = 0 + Multiplicity = 1 + Electrons = 10 + Nalpha = 5 + Nbeta = 5 + + ==> Algorithm <== + + SCF Algorithm Type is PK. + DIIS enabled. + MOM disabled. + Fractional occupation disabled. + Guess Type is SAD. + Energy threshold = 1.00e-10 + Density threshold = 1.00e-10 + Integral threshold = 0.00e+00 + + ==> Primary Basis <== + + Basis Set: CC-PVTZ + Blend: CC-PVTZ + Number of shells: 22 + Number of basis function: 58 + Number of Cartesian functions: 65 + Spherical Harmonics?: true + Max angular momentum: 3 + + ==> Integral Setup <== + + Using in-core PK algorithm. + Calculation information: + Number of atoms: 3 + Number of AO shells: 22 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Integral cutoff 1.00e-12 + Number of threads: 4 + + Performing in-core PK + Using 2929232 doubles for integral storage. + We computed 43467 shell quartets total. + Whereas there are 32131 unique shell quartets. + 35.28 percent of shell quartets recomputed by reordering. + + ==> DiskJK: Disk-Based J/K Matrices <== + + J tasked: Yes + K tasked: Yes + wK tasked: No + Memory [MiB]: 10013 + Schwarz Cutoff: 1E-12 + + OpenMP threads: 4 + + Minimum eigenvalue in the overlap matrix is 2.2568111004E-03. + Reciprocal condition number of the overlap matrix is 5.1750156802E-04. + Using symmetric orthogonalization. + + ==> Pre-Iterations <== + + SCF Guess: Superposition of Atomic Densities via on-the-fly atomic UHF (no occupation information). + + ------------------------- + Irrep Nso Nmo + ------------------------- + A1 23 23 + A2 7 7 + B1 11 11 + B2 17 17 + ------------------------- + Total 58 58 + ------------------------- + + ==> Iterations <== + + Total Energy Delta E RMS |[F,P]| + + @RHF iter SAD: -75.50011668392499 -7.55001e+01 0.00000e+00 + @RHF iter 1: -75.97820559780934 -4.78089e-01 1.43659e-02 DIIS + @RHF iter 2: -76.03081511829627 -5.26095e-02 9.30077e-03 DIIS + @RHF iter 3: -76.05644523539502 -2.56301e-02 6.94470e-04 DIIS + @RHF iter 4: -76.05683495967287 -3.89724e-04 1.70153e-04 DIIS + @RHF iter 5: -76.05685976803707 -2.48084e-05 3.52749e-05 DIIS + @RHF iter 6: -76.05686132999074 -1.56195e-06 6.78476e-06 DIIS + @RHF iter 7: -76.05686138864505 -5.86543e-08 1.06349e-06 DIIS + @RHF iter 8: -76.05686138981065 -1.16560e-09 1.59682e-07 DIIS + @RHF iter 9: -76.05686138983751 -2.68585e-11 4.45202e-08 DIIS + @RHF iter 10: -76.05686138983981 -2.30216e-12 5.97423e-09 DIIS + @RHF iter 11: -76.05686138983971 9.94760e-14 8.40616e-10 DIIS + @RHF iter 12: -76.05686138983990 -1.84741e-13 1.36410e-10 DIIS + @RHF iter 13: -76.05686138983985 4.26326e-14 1.61793e-11 DIIS + Energy and wave function converged. + + + ==> Post-Iterations <== + + Orbital Energies [Eh] + --------------------- + + Doubly Occupied: + + 1A1 -20.555920 2A1 -1.345521 1B2 -0.705530 + 3A1 -0.580239 1B1 -0.504773 + + Virtual: + + 4A1 0.141718 2B2 0.204137 3B2 0.540676 + 5A1 0.606214 6A1 0.667657 2B1 0.787102 + 7A1 0.793007 4B2 0.806092 1A2 0.863818 + 3B1 0.948668 8A1 1.135334 5B2 1.200023 + 6B2 1.521123 9A1 1.565768 4B1 2.042759 + 7B2 2.054932 2A2 2.061781 10A1 2.173117 + 11A1 2.232887 12A1 2.581890 8B2 2.966130 + 5B1 3.341457 13A1 3.482311 3A2 3.592684 + 9B2 3.662088 6B1 3.796417 10B2 3.876292 + 14A1 3.888364 4A2 3.965039 7B1 4.015510 + 11B2 4.070848 15A1 4.191400 5A2 4.302812 + 16A1 4.368038 12B2 4.602412 8B1 4.681015 + 13B2 4.862136 17A1 5.159516 18A1 5.249579 + 14B2 5.521799 9B1 6.053147 19A1 6.580467 + 10B1 6.910621 6A2 6.936078 11B1 7.005840 + 20A1 7.017408 15B2 7.023448 21A1 7.182202 + 7A2 7.235788 22A1 7.445764 16B2 7.794705 + 17B2 8.289369 23A1 12.828751 + + Final Occupation by Irrep: + A1 A2 B1 B2 + DOCC [ 3, 0, 1, 1 ] + + @RHF Final Energy: -76.05686138983985 + + => Energetics <= + + Nuclear Repulsion Energy = 9.1743087328228992 + One-Electron Energy = -123.0783737853796538 + Two-Electron Energy = 37.8472036627169004 + Total Energy = -76.0568613898398667 + +Computation Completed + + +Properties will be evaluated at 0.000000, 0.000000, 0.000000 [a0] + +Properties computed using the SCF density matrix + + Nuclear Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: 0.9944 + + Electronic Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: -0.1875 + + Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: 0.8069 Total: 0.8069 + + Dipole Moment: [D] + X: 0.0000 Y: 0.0000 Z: 2.0508 Total: 2.0508 + + +*** tstop() called on n079 at Mon Oct 24 14:59:10 2022 +Module time: + user time = 1.68 seconds = 0.03 minutes + system time = 0.02 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes +Total time: + user time = 1.68 seconds = 0.03 minutes + system time = 0.02 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + MINTS: Wrapper to libmints. + by Justin Turney + + Calculation information: + Number of threads: 4 + Number of atoms: 3 + Number of AO shells: 22 + Number of SO shells: 16 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Number of irreps: 4 + Integral cutoff 0.00e+00 + Number of functions per irrep: [ 23 7 11 17 ] + + OEINTS: Overlap, kinetic, potential, dipole, and quadrupole integrals + stored in file 35. + + Computing two-electron integrals...done + Computed 356228 non-zero two-electron integrals. + Stored in file 33. + + +*** tstart() called on n079 +*** at Mon Oct 24 14:59:10 2022 + + + Wfn Parameters: + -------------------- + Wavefunction = CCSD_T + Number of irreps = 4 + Number of MOs = 58 + Number of active MOs = 57 + AO-Basis = NONE + Semicanonical = false + Reference = RHF + Print Level = 1 + + IRREP # MOs # FZDC # DOCC # SOCC # VIRT # FZVR + ----- ----- ------ ------ ------ ------ ------ + A1 23 1 2 0 20 0 + A2 7 0 0 0 7 0 + B1 11 0 1 0 10 0 + B2 17 0 1 0 16 0 + Transforming integrals... + IWL integrals will be deleted. + (OO|OO)... + Presorting SO-basis two-electron integrals. + Sorting File: SO Ints (nn|nn) nbuckets = 1 + Transforming the one-electron integrals and constructing Fock matrices + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + Frozen core energy = -61.31096034826962 + + Size of irrep 0 of integrals: 0.648 (MW) / 5.184 (MB) + Size of irrep 1 of integrals: 0.360 (MW) / 2.880 (MB) + Size of irrep 2 of integrals: 0.389 (MW) / 3.115 (MB) + Size of irrep 3 of integrals: 0.608 (MW) / 4.867 (MB) + Total: 2.006 (MW) / 16.046 (MB) + + Size of irrep 0 of integrals: 0.053 (MW) / 0.425 (MB) + Size of irrep 1 of integrals: 0.024 (MW) / 0.192 (MB) + Size of irrep 2 of integrals: 0.029 (MW) / 0.235 (MB) + Size of irrep 3 of integrals: 0.046 (MW) / 0.368 (MB) + Total: 0.152 (MW) / 1.220 (MB) + + Size of irrep 0 of tijab amplitudes: 0.005 (MW) / 0.039 (MB) + Size of irrep 1 of tijab amplitudes: 0.001 (MW) / 0.010 (MB) + Size of irrep 2 of tijab amplitudes: 0.002 (MW) / 0.020 (MB) + Size of irrep 3 of tijab amplitudes: 0.003 (MW) / 0.025 (MB) + Total: 0.012 (MW) / 0.093 (MB) + + Nuclear Rep. energy = 9.17430873282290 + SCF energy = -76.05686138983985 + One-electron energy = -41.56829393554835 + Two-electron energy = 17.64808416115516 + Reference energy = -76.05686138983991 + +*** tstop() called on n079 at Mon Oct 24 14:59:11 2022 +Module time: + user time = 0.43 seconds = 0.01 minutes + system time = 0.06 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes +Total time: + user time = 2.55 seconds = 0.04 minutes + system time = 0.08 seconds = 0.00 minutes + total time = 2 seconds = 0.03 minutes + ************************** + * * + * CCENERGY * + * * + ************************** + + Nuclear Rep. energy (wfn) = 9.174308732822899 + SCF energy (wfn) = -76.056861389839852 + Reference energy (file100) = -76.056861389839909 + + Input parameters: + ----------------- + Wave function = CCSD_T + Reference wfn = RHF + Brueckner = No + Memory (Mbytes) = 14000.0 + Maxiter = 300 + R_Convergence = 1.0e-08 + E_Convergence = 1.0e-10 + Restart = Yes + DIIS = Yes + AO Basis = NONE + ABCD = NEW + Cache Level = 2 + Cache Type = LOW + Print Level = 1 + Num. of threads = 4 + # Amps to Print = 10 + Print MP2 Amps? = No + Analyze T2 Amps = No + Print Pair Ener = No + Local CC = No + SCS-MP2 = False + SCSN-MP2 = False + SCS-CCSD = False + +MP2 correlation energy -0.2617898223280312 + Solving CC Amplitude Equations + ------------------------------ + Iter Energy RMS T1Diag D1Diag New D1Diag D2Diag + ---- --------------------- --------- ---------- ---------- ---------- -------- + 0 -0.261789822328031 0.000e+00 0.000000 0.000000 0.000000 0.116310 + 1 -0.262085910808258 2.916e-02 0.005722 0.009316 0.009316 0.119963 + 2 -0.266938885776382 1.006e-02 0.005919 0.009471 0.009471 0.124657 + 3 -0.267652709224971 3.235e-03 0.006510 0.010613 0.010613 0.126317 + 4 -0.267644661177525 6.571e-04 0.006548 0.010704 0.010704 0.126527 + 5 -0.267666680933383 2.072e-04 0.006569 0.010795 0.010795 0.126576 + 6 -0.267667232116781 6.152e-05 0.006574 0.010831 0.010831 0.126572 + 7 -0.267667323420821 1.976e-05 0.006577 0.010847 0.010847 0.126571 + 8 -0.267667014525038 5.105e-06 0.006578 0.010851 0.010851 0.126570 + 9 -0.267666925280958 1.047e-06 0.006578 0.010852 0.010852 0.126570 + 10 -0.267666938019782 2.345e-07 0.006578 0.010852 0.010852 0.126570 + 11 -0.267666936713322 4.542e-08 0.006578 0.010852 0.010852 0.126570 + 12 -0.267666938331621 1.005e-08 0.006578 0.010852 0.010852 0.126570 + 13 -0.267666938372274 2.406e-09 0.006578 0.010852 0.010852 0.126570 + 14 -0.267666938381818 6.001e-10 0.006578 0.010852 0.010852 0.126570 + + Iterations converged. + + + Largest TIA Amplitudes: + 2 27 -0.0075527658 + 1 0 0.0058682435 + 3 41 -0.0058290820 + 2 28 -0.0049646817 + 1 3 -0.0045854879 + 1 5 -0.0041957341 + 0 2 -0.0040409964 + 3 46 -0.0038587635 + 1 2 0.0038369286 + 1 11 -0.0038000184 + + Largest TIjAb Amplitudes: + 2 2 27 27 -0.0476615027 + 1 1 2 2 -0.0295026586 + 3 3 38 38 -0.0272037547 + 1 2 2 27 0.0258888794 + 2 1 27 2 0.0258888794 + 3 3 1 1 -0.0251814910 + 3 3 39 39 -0.0226699038 + 2 3 27 39 0.0222739674 + 3 2 39 27 0.0222739674 + 1 1 38 38 -0.0222101031 + + SCF energy (wfn) = -76.056861389839852 + Reference energy (file100) = -76.056861389839909 + + Opposite-spin MP2 correlation energy = -0.198205892255597 + Same-spin MP2 correlation energy = -0.063583930072434 + Singles MP2 correlation energy = -0.000000000000000 + MP2 correlation energy = -0.261789822328031 + * MP2 total energy = -76.318651212167936 + + Opposite-spin CCSD correlation energy = -0.210981992025619 + Same-spin CCSD correlation energy = -0.056684946356199 + Singles CCSD correlation energy = 0.000000000000000 + CCSD correlation energy = -0.267666938381818 + * CCSD total energy = -76.324528328221731 + + ************************** + * * + * CCTRIPLES * + * * + ************************** + + + Wave function = CCSD_T + Reference wfn = RHF + + Nuclear Rep. energy (wfn) = 9.174308732822899 + SCF energy (wfn) = -76.056861389839852 + Reference energy (file100) = -76.056861389839909 + CCSD energy (file100) = -0.267666938381818 + Total CCSD energy (file100) = -76.324528328221731 + + Number of ijk index combinations: 20 + Memory available in words : 1750000000 + ~Words needed per explicit thread: 32000 + Number of threads for explicit ijk threading: 4 + + MKL num_threads set to 1 for explicit threading. + + (T) energy = -0.007680073229709 + * CCSD(T) total energy = -76.332208401451439 + +Giraffe The Energy is -76.332208401451 + + Psi4 stopped on: Monday, 24 October 2022 02:59PM + Psi4 wall time for execution: 0:00:03.57 + +*** Psi4 exiting successfully. Buy a developer a beer! diff --git a/test_suite/ref_data/reap_test/Disps/3/timer.dat b/test_suite/ref_data/reap_test/Disps/3/timer.dat new file mode 100644 index 00000000..1c17e155 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/3/timer.dat @@ -0,0 +1,92 @@ + +Host: n079 + +Timers On : Mon Oct 24 14:59:07 2022 +Timers Off: Mon Oct 24 14:59:13 2022 + +Wall Time: 5.26 seconds + + Time (seconds) +Module User System Wall Calls +Total PK formation time : 0.400u 0.017s 0.351w 1 calls +HF: Form core H : 0.033u 0.000s 0.007w 1 calls +HF: Form S/X : 0.000u 0.000s 0.000w 1 calls +HF: Guess : 1.233u 0.017s 0.191w 1 calls +SAD Guess : 1.167u 0.017s 0.181w 1 calls +HF: Form G : 0.367u 0.000s 0.048w 14 calls +JK: D : 0.000u 0.000s 0.000w 14 calls +JK: USO2AO : 0.017u 0.000s 0.001w 14 calls +JK: JK : 0.333u 0.000s 0.046w 14 calls +PK computes JK : 0.333u 0.000s 0.046w 14 calls +JK: AO2USO : 0.017u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.150u 0.000s 0.030w 13 calls +DIISManager::add_entry : 0.117u 0.000s 0.024w 13 calls +DIISManager::extrapolate : 0.000u 0.000s 0.001w 13 calls +bMatrix setup : 0.000u 0.000s 0.000w 13 calls +bMatrix pseudoinverse : 0.000u 0.000s 0.000w 13 calls +New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.002w 13 calls +ccenergy : 9.583u 0.317s 1.899w 1 calls +F build : 0.050u 0.017s 0.012w 14 calls +Wmbej build : 0.133u 0.017s 0.021w 14 calls +C->Wmbej : 0.000u 0.000s 0.001w 14 calls +F->Wmbej : 0.083u 0.017s 0.012w 14 calls +E->Wmbej : 0.017u 0.000s 0.003w 14 calls +X->Wmbej : 0.033u 0.000s 0.004w 14 calls +Z : 0.000u 0.000s 0.002w 14 calls +T2 Build : 0.500u 0.117s 0.087w 14 calls +BT2 : 0.300u 0.067s 0.058w 14 calls +ABCD:new : 0.283u 0.067s 0.058w 14 calls +ABCD:S : 0.000u 0.017s 0.010w 14 calls +ABCD:A : 0.100u 0.017s 0.009w 14 calls +ABCD:axpy : 0.167u 0.033s 0.037w 14 calls +FT2 : 0.000u 0.000s 0.004w 14 calls +WmbejT2 : 0.017u 0.000s 0.007w 14 calls +CT2 : 0.083u 0.050s 0.010w 14 calls +cctriples : 0.767u 0.017s 0.152w 1 calls +ET_RHF : 0.117u 0.017s 0.020w 1 calls + +-------------------------------------------------------------------------------------- +Total PK formation time : 0.400u 0.017s 0.351w 1 calls +HF: Form core H : 0.033u 0.000s 0.007w 1 calls +HF: Form S/X : 0.000u 0.000s 0.000w 1 calls +HF: Guess : 1.233u 0.017s 0.191w 1 calls +| SAD Guess : 1.167u 0.017s 0.181w 1 calls +HF: Form G : 0.367u 0.000s 0.048w 14 calls +| JK: D : 0.000u 0.000s 0.000w 14 calls +| JK: USO2AO : 0.017u 0.000s 0.001w 14 calls +| JK: JK : 0.333u 0.000s 0.046w 14 calls +| | PK computes JK : 0.333u 0.000s 0.046w 14 calls +| JK: AO2USO : 0.017u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.150u 0.000s 0.030w 13 calls +| DIISManager::add_entry : 0.117u 0.000s 0.024w 13 calls +| DIISManager::extrapolate : 0.000u 0.000s 0.001w 13 calls +| | bMatrix setup : 0.000u 0.000s 0.000w 13 calls +| | bMatrix pseudoinverse : 0.000u 0.000s 0.000w 13 calls +| | New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.002w 13 calls +ccenergy : 9.583u 0.317s 1.899w 1 calls +| F build : 0.050u 0.017s 0.012w 14 calls +| Wmbej build : 0.133u 0.017s 0.021w 14 calls +| | C->Wmbej : 0.000u 0.000s 0.001w 14 calls +| | F->Wmbej : 0.083u 0.017s 0.012w 14 calls +| | E->Wmbej : 0.017u 0.000s 0.003w 14 calls +| | X->Wmbej : 0.033u 0.000s 0.004w 14 calls +| Z : 0.000u 0.000s 0.002w 14 calls +| T2 Build : 0.500u 0.117s 0.087w 14 calls +| | BT2 : 0.300u 0.067s 0.058w 14 calls +| | | ABCD:new : 0.283u 0.067s 0.058w 14 calls +| | | | ABCD:S : 0.000u 0.017s 0.010w 14 calls +| | | | ABCD:A : 0.100u 0.017s 0.009w 14 calls +| | | | ABCD:axpy : 0.167u 0.033s 0.037w 14 calls +| | FT2 : 0.000u 0.000s 0.004w 14 calls +| | WmbejT2 : 0.017u 0.000s 0.007w 14 calls +| | CT2 : 0.083u 0.050s 0.010w 14 calls +cctriples : 0.767u 0.017s 0.152w 1 calls +| ET_RHF : 0.117u 0.017s 0.020w 1 calls + +************************************************************************************** diff --git a/test_suite/ref_data/reap_test/Disps/4/ijk.dat b/test_suite/ref_data/reap_test/Disps/4/ijk.dat new file mode 100644 index 00000000..502f5c85 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/4/ijk.dat @@ -0,0 +1,85 @@ +Total number of IJK combinations =: 20 +Num. of IJK with (Gi,Gj,Gk)=(0,0,0) =: 4 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 + thread 3: first_ijk=3, last_ijk=3 +Num. of IJK with (Gi,Gj,Gk)=(0,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,0) =: 3 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 +Num. of IJK with (Gi,Gj,Gk)=(2,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(2,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,0) =: 3 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 +Num. of IJK with (Gi,Gj,Gk)=(3,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(3,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(3,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,3) =: 1 + thread 0: first_ijk=0, last_ijk=0 diff --git a/test_suite/ref_data/reap_test/Disps/4/input.dat b/test_suite/ref_data/reap_test/Disps/4/input.dat new file mode 100644 index 00000000..41dc8e60 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/4/input.dat @@ -0,0 +1,24 @@ +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H -0.0000000000 -1.4190195595 0.9944761964 + O 0.0000000000 -0.0000000000 -0.1226087728 + H 0.0000000000 1.4190195595 0.9944761964 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) diff --git a/test_suite/ref_data/reap_test/Disps/4/output.dat b/test_suite/ref_data/reap_test/Disps/4/output.dat new file mode 100644 index 00000000..9fb82c4d --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/4/output.dat @@ -0,0 +1,533 @@ + + ----------------------------------------------------------------------- + Psi4: An Open-Source Ab Initio Electronic Structure Package + Psi4 1.4a2.dev629 + + Git: Rev {master} 2938fc2 dirty + + + D. G. A. Smith, L. A. Burns, A. C. Simmonett, R. M. Parrish, + M. C. Schieber, R. Galvelis, P. Kraus, H. Kruse, R. Di Remigio, + A. Alenaizan, A. M. James, S. Lehtola, J. P. Misiewicz, M. Scheurer, + R. A. Shaw, J. B. Schriber, Y. Xie, Z. L. Glick, D. A. Sirianni, + J. S. O'Brien, J. M. Waldrop, A. Kumar, E. G. Hohenstein, + B. P. Pritchard, B. R. Brooks, H. F. Schaefer III, A. Yu. Sokolov, + K. Patkowski, A. E. DePrince III, U. Bozkaya, R. A. King, + F. A. Evangelista, J. M. Turney, T. D. Crawford, C. D. Sherrill, + J. Chem. Phys. 152(18) 184108 (2020). https://doi.org/10.1063/5.0006002 + + Additional Code Authors + E. T. Seidl, C. L. Janssen, E. F. Valeev, M. L. Leininger, + J. F. Gonthier, R. M. Richard, H. R. McAlexander, M. Saitow, X. Wang, + P. Verma, and M. H. Lechner + + Previous Authors, Complete List of Code Contributors, + and Citations for Specific Modules + https://github.com/psi4/psi4/blob/master/codemeta.json + https://github.com/psi4/psi4/graphs/contributors + http://psicode.org/psi4manual/master/introduction.html#citing-psifour + + ----------------------------------------------------------------------- + + + Psi4 started on: Monday, 24 October 2022 02:59PM + + Process ID: 18753 + Host: n090 + PSIDATADIR: /opt/psi/4/master/share/psi4 + Memory: 500.0 MiB + Threads: 4 + + ==> Input File <== + +-------------------------------------------------------------------------- +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H -0.0000000000 -1.4190195595 0.9944761964 + O 0.0000000000 -0.0000000000 -0.1226087728 + H 0.0000000000 1.4190195595 0.9944761964 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) +-------------------------------------------------------------------------- + + Memory set to 13.039 GiB by Python driver. + +Scratch directory: /tmp/795504.4.gen6.q/ + +*** tstart() called on n090 +*** at Mon Oct 24 14:59:10 2022 + + => Loading Basis Set <= + + Name: CC-PVTZ + Role: ORBITAL + Keyword: BASIS + atoms 1, 3 entry H line 23 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + atoms 2 entry O line 262 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + + + --------------------------------------------------------- + SCF + by Justin Turney, Rob Parrish, Andy Simmonett + and Daniel G. A. Smith + RHF Reference + 4 Threads, 13351 MiB Core + --------------------------------------------------------- + + ==> Geometry <== + + Molecular point group: c2v + Full point group: C2v + + Geometry (in Bohr), charge = 0, multiplicity = 1: + + Center X Y Z Mass + ------------ ----------------- ----------------- ----------------- ----------------- + H 0.000000000000 -1.419019559500 0.992066546420 1.007825032230 + O 0.000000000000 0.000000000000 -0.125018422780 15.994914619570 + H -0.000000000000 1.419019559500 0.992066546420 1.007825032230 + + Running in c2v symmetry. + + Rotational constants: A = 26.94958 B = 14.83209 C = 9.56684 [cm^-1] + Rotational constants: A = 807928.23113 B = 444654.84989 C = 286806.68913 [MHz] + Nuclear repulsion = 9.211904697718058 + + Charge = 0 + Multiplicity = 1 + Electrons = 10 + Nalpha = 5 + Nbeta = 5 + + ==> Algorithm <== + + SCF Algorithm Type is PK. + DIIS enabled. + MOM disabled. + Fractional occupation disabled. + Guess Type is SAD. + Energy threshold = 1.00e-10 + Density threshold = 1.00e-10 + Integral threshold = 0.00e+00 + + ==> Primary Basis <== + + Basis Set: CC-PVTZ + Blend: CC-PVTZ + Number of shells: 22 + Number of basis function: 58 + Number of Cartesian functions: 65 + Spherical Harmonics?: true + Max angular momentum: 3 + + ==> Integral Setup <== + + Using in-core PK algorithm. + Calculation information: + Number of atoms: 3 + Number of AO shells: 22 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Integral cutoff 1.00e-12 + Number of threads: 4 + + Performing in-core PK + Using 2929232 doubles for integral storage. + We computed 43467 shell quartets total. + Whereas there are 32131 unique shell quartets. + 35.28 percent of shell quartets recomputed by reordering. + + ==> DiskJK: Disk-Based J/K Matrices <== + + J tasked: Yes + K tasked: Yes + wK tasked: No + Memory [MiB]: 10013 + Schwarz Cutoff: 1E-12 + + OpenMP threads: 4 + + Minimum eigenvalue in the overlap matrix is 2.2204366584E-03. + Reciprocal condition number of the overlap matrix is 5.0856287355E-04. + Using symmetric orthogonalization. + + ==> Pre-Iterations <== + + SCF Guess: Superposition of Atomic Densities via on-the-fly atomic UHF (no occupation information). + + ------------------------- + Irrep Nso Nmo + ------------------------- + A1 23 23 + A2 7 7 + B1 11 11 + B2 17 17 + ------------------------- + Total 58 58 + ------------------------- + + ==> Iterations <== + + Total Energy Delta E RMS |[F,P]| + + @RHF iter SAD: -75.50442055234336 -7.55044e+01 0.00000e+00 + @RHF iter 1: -75.97880236247386 -4.74382e-01 1.43753e-02 DIIS + @RHF iter 2: -76.03144011087635 -5.26377e-02 9.25870e-03 DIIS + @RHF iter 3: -76.05678562799910 -2.53455e-02 6.90476e-04 DIIS + @RHF iter 4: -76.05716999083054 -3.84363e-04 1.67690e-04 DIIS + @RHF iter 5: -76.05719395424150 -2.39634e-05 3.47163e-05 DIIS + @RHF iter 6: -76.05719546536210 -1.51112e-06 6.70819e-06 DIIS + @RHF iter 7: -76.05719552304488 -5.76828e-08 1.06615e-06 DIIS + @RHF iter 8: -76.05719552423257 -1.18769e-09 1.60601e-07 DIIS + @RHF iter 9: -76.05719552425998 -2.74127e-11 4.46572e-08 DIIS + @RHF iter 10: -76.05719552426217 -2.18847e-12 5.89148e-09 DIIS + @RHF iter 11: -76.05719552426220 -2.84217e-14 8.25254e-10 DIIS + @RHF iter 12: -76.05719552426221 -1.42109e-14 1.33389e-10 DIIS + @RHF iter 13: -76.05719552426220 1.42109e-14 1.62043e-11 DIIS + Energy and wave function converged. + + + ==> Post-Iterations <== + + Orbital Energies [Eh] + --------------------- + + Doubly Occupied: + + 1A1 -20.554916 2A1 -1.347192 1B2 -0.708841 + 3A1 -0.579878 1B1 -0.504912 + + Virtual: + + 4A1 0.142249 2B2 0.204390 3B2 0.543295 + 5A1 0.606601 6A1 0.667299 2B1 0.787220 + 7A1 0.796468 4B2 0.805832 1A2 0.863446 + 3B1 0.951517 8A1 1.131714 5B2 1.200756 + 6B2 1.526133 9A1 1.570847 4B1 2.041892 + 7B2 2.049488 2A2 2.064601 10A1 2.173517 + 11A1 2.232421 12A1 2.586468 8B2 2.968045 + 5B1 3.346816 13A1 3.487320 3A2 3.590850 + 9B2 3.664449 6B1 3.800635 10B2 3.880591 + 14A1 3.887986 4A2 3.966108 7B1 4.017439 + 11B2 4.074268 15A1 4.195849 5A2 4.311767 + 16A1 4.380293 12B2 4.604237 8B1 4.685346 + 13B2 4.869761 17A1 5.171136 18A1 5.252500 + 14B2 5.526288 9B1 6.059089 19A1 6.589026 + 10B1 6.926918 6A2 6.943815 11B1 7.005165 + 20A1 7.027565 15B2 7.049460 21A1 7.178580 + 7A2 7.243588 22A1 7.452145 16B2 7.802987 + 17B2 8.303478 23A1 12.898977 + + Final Occupation by Irrep: + A1 A2 B1 B2 + DOCC [ 3, 0, 1, 1 ] + + @RHF Final Energy: -76.05719552426220 + + => Energetics <= + + Nuclear Repulsion Energy = 9.2119046977180581 + One-Electron Energy = -123.1467221258976537 + Two-Electron Energy = 37.8776219039174009 + Total Energy = -76.0571955242621982 + +Computation Completed + + +Properties will be evaluated at 0.000000, 0.000000, 0.000000 [a0] + +Properties computed using the SCF density matrix + + Nuclear Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: 0.9840 + + Electronic Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: -0.1819 + + Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: 0.8020 Total: 0.8020 + + Dipole Moment: [D] + X: 0.0000 Y: 0.0000 Z: 2.0386 Total: 2.0386 + + +*** tstop() called on n090 at Mon Oct 24 14:59:11 2022 +Module time: + user time = 1.73 seconds = 0.03 minutes + system time = 0.02 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes +Total time: + user time = 1.73 seconds = 0.03 minutes + system time = 0.02 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + MINTS: Wrapper to libmints. + by Justin Turney + + Calculation information: + Number of threads: 4 + Number of atoms: 3 + Number of AO shells: 22 + Number of SO shells: 16 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Number of irreps: 4 + Integral cutoff 0.00e+00 + Number of functions per irrep: [ 23 7 11 17 ] + + OEINTS: Overlap, kinetic, potential, dipole, and quadrupole integrals + stored in file 35. + + Computing two-electron integrals...done + Computed 360660 non-zero two-electron integrals. + Stored in file 33. + + +*** tstart() called on n090 +*** at Mon Oct 24 14:59:11 2022 + + + Wfn Parameters: + -------------------- + Wavefunction = CCSD_T + Number of irreps = 4 + Number of MOs = 58 + Number of active MOs = 57 + AO-Basis = NONE + Semicanonical = false + Reference = RHF + Print Level = 1 + + IRREP # MOs # FZDC # DOCC # SOCC # VIRT # FZVR + ----- ----- ------ ------ ------ ------ ------ + A1 23 1 2 0 20 0 + A2 7 0 0 0 7 0 + B1 11 0 1 0 10 0 + B2 17 0 1 0 16 0 + Transforming integrals... + IWL integrals will be deleted. + (OO|OO)... + Presorting SO-basis two-electron integrals. + Sorting File: SO Ints (nn|nn) nbuckets = 1 + Transforming the one-electron integrals and constructing Fock matrices + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + Frozen core energy = -61.32032010488116 + + Size of irrep 0 of integrals: 0.648 (MW) / 5.184 (MB) + Size of irrep 1 of integrals: 0.360 (MW) / 2.880 (MB) + Size of irrep 2 of integrals: 0.389 (MW) / 3.115 (MB) + Size of irrep 3 of integrals: 0.608 (MW) / 4.867 (MB) + Total: 2.006 (MW) / 16.046 (MB) + + Size of irrep 0 of integrals: 0.053 (MW) / 0.425 (MB) + Size of irrep 1 of integrals: 0.024 (MW) / 0.192 (MB) + Size of irrep 2 of integrals: 0.029 (MW) / 0.235 (MB) + Size of irrep 3 of integrals: 0.046 (MW) / 0.368 (MB) + Total: 0.152 (MW) / 1.220 (MB) + + Size of irrep 0 of tijab amplitudes: 0.005 (MW) / 0.039 (MB) + Size of irrep 1 of tijab amplitudes: 0.001 (MW) / 0.010 (MB) + Size of irrep 2 of tijab amplitudes: 0.002 (MW) / 0.020 (MB) + Size of irrep 3 of tijab amplitudes: 0.003 (MW) / 0.025 (MB) + Total: 0.012 (MW) / 0.093 (MB) + + Nuclear Rep. energy = 9.21190469771806 + SCF energy = -76.05719552426220 + One-electron energy = -41.61591439646610 + Two-electron energy = 17.66713427936697 + Reference energy = -76.05719552426223 + +*** tstop() called on n090 at Mon Oct 24 14:59:11 2022 +Module time: + user time = 0.42 seconds = 0.01 minutes + system time = 0.06 seconds = 0.00 minutes + total time = 0 seconds = 0.00 minutes +Total time: + user time = 2.60 seconds = 0.04 minutes + system time = 0.09 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + ************************** + * * + * CCENERGY * + * * + ************************** + + Nuclear Rep. energy (wfn) = 9.211904697718058 + SCF energy (wfn) = -76.057195524262198 + Reference energy (file100) = -76.057195524262227 + + Input parameters: + ----------------- + Wave function = CCSD_T + Reference wfn = RHF + Brueckner = No + Memory (Mbytes) = 14000.0 + Maxiter = 300 + R_Convergence = 1.0e-08 + E_Convergence = 1.0e-10 + Restart = Yes + DIIS = Yes + AO Basis = NONE + ABCD = NEW + Cache Level = 2 + Cache Type = LOW + Print Level = 1 + Num. of threads = 4 + # Amps to Print = 10 + Print MP2 Amps? = No + Analyze T2 Amps = No + Print Pair Ener = No + Local CC = No + SCS-MP2 = False + SCSN-MP2 = False + SCS-CCSD = False + +MP2 correlation energy -0.2614399975020811 + Solving CC Amplitude Equations + ------------------------------ + Iter Energy RMS T1Diag D1Diag New D1Diag D2Diag + ---- --------------------- --------- ---------- ---------- ---------- -------- + 0 -0.261439997502081 0.000e+00 0.000000 0.000000 0.000000 0.115845 + 1 -0.261830140400047 2.895e-02 0.005670 0.009239 0.009239 0.119494 + 2 -0.266640455008172 9.950e-03 0.005867 0.009396 0.009396 0.124123 + 3 -0.267339420596539 3.183e-03 0.006446 0.010514 0.010514 0.125743 + 4 -0.267331647775493 6.457e-04 0.006483 0.010601 0.010601 0.125947 + 5 -0.267353165009497 2.025e-04 0.006503 0.010688 0.010688 0.125994 + 6 -0.267353728928736 6.005e-05 0.006508 0.010723 0.010723 0.125990 + 7 -0.267353820284085 1.932e-05 0.006511 0.010739 0.010739 0.125989 + 8 -0.267353520251449 4.975e-06 0.006512 0.010743 0.010743 0.125989 + 9 -0.267353433455381 1.020e-06 0.006512 0.010744 0.010744 0.125988 + 10 -0.267353446140572 2.273e-07 0.006512 0.010744 0.010744 0.125988 + 11 -0.267353444872453 4.411e-08 0.006512 0.010744 0.010744 0.125988 + 12 -0.267353446442119 9.734e-09 0.006512 0.010744 0.010744 0.125988 + 13 -0.267353446472728 2.347e-09 0.006512 0.010744 0.010744 0.125988 + 14 -0.267353446480468 5.809e-10 0.006512 0.010744 0.010744 0.125988 + + Iterations converged. + + + Largest TIA Amplitudes: + 2 27 -0.0074205654 + 3 41 -0.0057691778 + 1 0 0.0057456637 + 2 28 -0.0049517146 + 1 3 -0.0045666734 + 1 5 -0.0041276097 + 0 2 -0.0039651867 + 1 2 0.0038830471 + 3 46 -0.0038218078 + 1 11 -0.0037719377 + + Largest TIjAb Amplitudes: + 2 2 27 27 -0.0476024195 + 1 1 2 2 -0.0295948726 + 3 3 38 38 -0.0268066419 + 1 2 2 27 0.0258999743 + 2 1 27 2 0.0258999743 + 3 3 1 1 -0.0251287982 + 3 3 39 39 -0.0227242800 + 2 3 27 39 0.0222606390 + 3 2 39 27 0.0222606390 + 1 1 38 38 -0.0220399339 + + SCF energy (wfn) = -76.057195524262198 + Reference energy (file100) = -76.057195524262227 + + Opposite-spin MP2 correlation energy = -0.197934590356951 + Same-spin MP2 correlation energy = -0.063505407145130 + Singles MP2 correlation energy = -0.000000000000000 + MP2 correlation energy = -0.261439997502081 + * MP2 total energy = -76.318635521764307 + + Opposite-spin CCSD correlation energy = -0.210688679519075 + Same-spin CCSD correlation energy = -0.056664766961393 + Singles CCSD correlation energy = 0.000000000000000 + CCSD correlation energy = -0.267353446480468 + * CCSD total energy = -76.324548970742697 + + ************************** + * * + * CCTRIPLES * + * * + ************************** + + + Wave function = CCSD_T + Reference wfn = RHF + + Nuclear Rep. energy (wfn) = 9.211904697718058 + SCF energy (wfn) = -76.057195524262198 + Reference energy (file100) = -76.057195524262227 + CCSD energy (file100) = -0.267353446480468 + Total CCSD energy (file100) = -76.324548970742697 + + Number of ijk index combinations: 20 + Memory available in words : 1750000000 + ~Words needed per explicit thread: 32000 + Number of threads for explicit ijk threading: 4 + + MKL num_threads set to 1 for explicit threading. + + (T) energy = -0.007640199610620 + * CCSD(T) total energy = -76.332189170353317 + +Giraffe The Energy is -76.332189170353 + + Psi4 stopped on: Monday, 24 October 2022 02:59PM + Psi4 wall time for execution: 0:00:03.58 + +*** Psi4 exiting successfully. Buy a developer a beer! diff --git a/test_suite/ref_data/reap_test/Disps/4/timer.dat b/test_suite/ref_data/reap_test/Disps/4/timer.dat new file mode 100644 index 00000000..49684139 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/4/timer.dat @@ -0,0 +1,92 @@ + +Host: n090 + +Timers On : Mon Oct 24 14:59:08 2022 +Timers Off: Mon Oct 24 14:59:13 2022 + +Wall Time: 5.47 seconds + + Time (seconds) +Module User System Wall Calls +Total PK formation time : 0.467u 0.017s 0.373w 1 calls +HF: Form core H : 0.050u 0.000s 0.007w 1 calls +HF: Form S/X : 0.000u 0.000s 0.000w 1 calls +HF: Guess : 1.267u 0.017s 0.200w 1 calls +SAD Guess : 1.200u 0.017s 0.190w 1 calls +HF: Form G : 0.333u 0.000s 0.048w 14 calls +JK: D : 0.000u 0.000s 0.000w 14 calls +JK: USO2AO : 0.017u 0.000s 0.001w 14 calls +JK: JK : 0.317u 0.000s 0.046w 14 calls +PK computes JK : 0.317u 0.000s 0.046w 14 calls +JK: AO2USO : 0.000u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.117u 0.000s 0.026w 13 calls +DIISManager::add_entry : 0.100u 0.000s 0.020w 13 calls +DIISManager::extrapolate : 0.000u 0.000s 0.001w 13 calls +bMatrix setup : 0.000u 0.000s 0.000w 13 calls +bMatrix pseudoinverse : 0.000u 0.000s 0.000w 13 calls +New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.002w 13 calls +ccenergy : 9.533u 0.333s 1.892w 1 calls +F build : 0.033u 0.000s 0.012w 14 calls +Wmbej build : 0.217u 0.017s 0.021w 14 calls +C->Wmbej : 0.017u 0.000s 0.001w 14 calls +F->Wmbej : 0.117u 0.017s 0.012w 14 calls +E->Wmbej : 0.000u 0.000s 0.003w 14 calls +X->Wmbej : 0.067u 0.000s 0.004w 14 calls +Z : 0.000u 0.000s 0.002w 14 calls +T2 Build : 0.483u 0.150s 0.089w 14 calls +BT2 : 0.267u 0.133s 0.060w 14 calls +ABCD:new : 0.267u 0.133s 0.060w 14 calls +ABCD:S : 0.017u 0.050s 0.010w 14 calls +ABCD:A : 0.050u 0.050s 0.009w 14 calls +ABCD:axpy : 0.200u 0.033s 0.038w 14 calls +FT2 : 0.067u 0.017s 0.004w 14 calls +WmbejT2 : 0.067u 0.000s 0.007w 14 calls +CT2 : 0.033u 0.000s 0.010w 14 calls +cctriples : 0.750u 0.017s 0.145w 1 calls +ET_RHF : 0.150u 0.000s 0.024w 1 calls + +-------------------------------------------------------------------------------------- +Total PK formation time : 0.467u 0.017s 0.373w 1 calls +HF: Form core H : 0.050u 0.000s 0.007w 1 calls +HF: Form S/X : 0.000u 0.000s 0.000w 1 calls +HF: Guess : 1.267u 0.017s 0.200w 1 calls +| SAD Guess : 1.200u 0.017s 0.190w 1 calls +HF: Form G : 0.333u 0.000s 0.048w 14 calls +| JK: D : 0.000u 0.000s 0.000w 14 calls +| JK: USO2AO : 0.017u 0.000s 0.001w 14 calls +| JK: JK : 0.317u 0.000s 0.046w 14 calls +| | PK computes JK : 0.317u 0.000s 0.046w 14 calls +| JK: AO2USO : 0.000u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.117u 0.000s 0.026w 13 calls +| DIISManager::add_entry : 0.100u 0.000s 0.020w 13 calls +| DIISManager::extrapolate : 0.000u 0.000s 0.001w 13 calls +| | bMatrix setup : 0.000u 0.000s 0.000w 13 calls +| | bMatrix pseudoinverse : 0.000u 0.000s 0.000w 13 calls +| | New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.002w 13 calls +ccenergy : 9.533u 0.333s 1.892w 1 calls +| F build : 0.033u 0.000s 0.012w 14 calls +| Wmbej build : 0.217u 0.017s 0.021w 14 calls +| | C->Wmbej : 0.017u 0.000s 0.001w 14 calls +| | F->Wmbej : 0.117u 0.017s 0.012w 14 calls +| | E->Wmbej : 0.000u 0.000s 0.003w 14 calls +| | X->Wmbej : 0.067u 0.000s 0.004w 14 calls +| Z : 0.000u 0.000s 0.002w 14 calls +| T2 Build : 0.483u 0.150s 0.089w 14 calls +| | BT2 : 0.267u 0.133s 0.060w 14 calls +| | | ABCD:new : 0.267u 0.133s 0.060w 14 calls +| | | | ABCD:S : 0.017u 0.050s 0.010w 14 calls +| | | | ABCD:A : 0.050u 0.050s 0.009w 14 calls +| | | | ABCD:axpy : 0.200u 0.033s 0.038w 14 calls +| | FT2 : 0.067u 0.017s 0.004w 14 calls +| | WmbejT2 : 0.067u 0.000s 0.007w 14 calls +| | CT2 : 0.033u 0.000s 0.010w 14 calls +cctriples : 0.750u 0.017s 0.145w 1 calls +| ET_RHF : 0.150u 0.000s 0.024w 1 calls + +************************************************************************************** diff --git a/test_suite/ref_data/reap_test/Disps/5/ijk.dat b/test_suite/ref_data/reap_test/Disps/5/ijk.dat new file mode 100644 index 00000000..502f5c85 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/5/ijk.dat @@ -0,0 +1,85 @@ +Total number of IJK combinations =: 20 +Num. of IJK with (Gi,Gj,Gk)=(0,0,0) =: 4 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 + thread 3: first_ijk=3, last_ijk=3 +Num. of IJK with (Gi,Gj,Gk)=(0,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,0) =: 3 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 +Num. of IJK with (Gi,Gj,Gk)=(2,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(2,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(2,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(2,3,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,0) =: 3 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 +Num. of IJK with (Gi,Gj,Gk)=(3,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,0,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,2) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,1,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(3,2,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(3,2,3) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,0) =: 2 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 +Num. of IJK with (Gi,Gj,Gk)=(3,3,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,2) =: 1 + thread 0: first_ijk=0, last_ijk=0 +Num. of IJK with (Gi,Gj,Gk)=(3,3,3) =: 1 + thread 0: first_ijk=0, last_ijk=0 diff --git a/test_suite/ref_data/reap_test/Disps/5/input.dat b/test_suite/ref_data/reap_test/Disps/5/input.dat new file mode 100644 index 00000000..005fe2c2 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/5/input.dat @@ -0,0 +1,24 @@ +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H 0.0000000000 -1.4302315031 0.9973718515 + O 0.0000000000 0.0000000000 -0.1284000831 + H 0.0000000000 1.4302315031 0.9973718515 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) diff --git a/test_suite/ref_data/reap_test/Disps/5/output.dat b/test_suite/ref_data/reap_test/Disps/5/output.dat new file mode 100644 index 00000000..b54b9d4c --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/5/output.dat @@ -0,0 +1,533 @@ + + ----------------------------------------------------------------------- + Psi4: An Open-Source Ab Initio Electronic Structure Package + Psi4 1.4a2.dev629 + + Git: Rev {master} 2938fc2 dirty + + + D. G. A. Smith, L. A. Burns, A. C. Simmonett, R. M. Parrish, + M. C. Schieber, R. Galvelis, P. Kraus, H. Kruse, R. Di Remigio, + A. Alenaizan, A. M. James, S. Lehtola, J. P. Misiewicz, M. Scheurer, + R. A. Shaw, J. B. Schriber, Y. Xie, Z. L. Glick, D. A. Sirianni, + J. S. O'Brien, J. M. Waldrop, A. Kumar, E. G. Hohenstein, + B. P. Pritchard, B. R. Brooks, H. F. Schaefer III, A. Yu. Sokolov, + K. Patkowski, A. E. DePrince III, U. Bozkaya, R. A. King, + F. A. Evangelista, J. M. Turney, T. D. Crawford, C. D. Sherrill, + J. Chem. Phys. 152(18) 184108 (2020). https://doi.org/10.1063/5.0006002 + + Additional Code Authors + E. T. Seidl, C. L. Janssen, E. F. Valeev, M. L. Leininger, + J. F. Gonthier, R. M. Richard, H. R. McAlexander, M. Saitow, X. Wang, + P. Verma, and M. H. Lechner + + Previous Authors, Complete List of Code Contributors, + and Citations for Specific Modules + https://github.com/psi4/psi4/blob/master/codemeta.json + https://github.com/psi4/psi4/graphs/contributors + http://psicode.org/psi4manual/master/introduction.html#citing-psifour + + ----------------------------------------------------------------------- + + + Psi4 started on: Monday, 24 October 2022 02:59PM + + Process ID: 161616 + Host: n070 + PSIDATADIR: /opt/psi/4/master/share/psi4 + Memory: 500.0 MiB + Threads: 4 + + ==> Input File <== + +-------------------------------------------------------------------------- +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H 0.0000000000 -1.4302315031 0.9973718515 + O 0.0000000000 0.0000000000 -0.1284000831 + H 0.0000000000 1.4302315031 0.9973718515 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) +-------------------------------------------------------------------------- + + Memory set to 13.039 GiB by Python driver. + +Scratch directory: /tmp/795504.5.gen5.q/ + +*** tstart() called on n070 +*** at Mon Oct 24 14:59:41 2022 + + => Loading Basis Set <= + + Name: CC-PVTZ + Role: ORBITAL + Keyword: BASIS + atoms 1, 3 entry H line 23 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + atoms 2 entry O line 262 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + + + --------------------------------------------------------- + SCF + by Justin Turney, Rob Parrish, Andy Simmonett + and Daniel G. A. Smith + RHF Reference + 4 Threads, 13351 MiB Core + --------------------------------------------------------- + + ==> Geometry <== + + Molecular point group: c2v + Full point group: C2v + + Geometry (in Bohr), charge = 0, multiplicity = 1: + + Center X Y Z Mass + ------------ ----------------- ----------------- ----------------- ----------------- + H 0.000000000000 -1.430231503100 0.999781311188 1.007825032230 + O 0.000000000000 0.000000000000 -0.125990623412 15.994914619570 + H -0.000000000000 1.430231503100 0.999781311188 1.007825032230 + + Running in c2v symmetry. + + Rotational constants: A = 26.53528 B = 14.60046 C = 9.41826 [cm^-1] + Rotational constants: A = 795507.65884 B = 437710.65378 C = 282352.42201 [MHz] + Nuclear repulsion = 9.140106474070180 + + Charge = 0 + Multiplicity = 1 + Electrons = 10 + Nalpha = 5 + Nbeta = 5 + + ==> Algorithm <== + + SCF Algorithm Type is PK. + DIIS enabled. + MOM disabled. + Fractional occupation disabled. + Guess Type is SAD. + Energy threshold = 1.00e-10 + Density threshold = 1.00e-10 + Integral threshold = 0.00e+00 + + ==> Primary Basis <== + + Basis Set: CC-PVTZ + Blend: CC-PVTZ + Number of shells: 22 + Number of basis function: 58 + Number of Cartesian functions: 65 + Spherical Harmonics?: true + Max angular momentum: 3 + + ==> Integral Setup <== + + Using in-core PK algorithm. + Calculation information: + Number of atoms: 3 + Number of AO shells: 22 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Integral cutoff 1.00e-12 + Number of threads: 4 + + Performing in-core PK + Using 2929232 doubles for integral storage. + We computed 43467 shell quartets total. + Whereas there are 32131 unique shell quartets. + 35.28 percent of shell quartets recomputed by reordering. + + ==> DiskJK: Disk-Based J/K Matrices <== + + J tasked: Yes + K tasked: Yes + wK tasked: No + Memory [MiB]: 10013 + Schwarz Cutoff: 1E-12 + + OpenMP threads: 4 + + Minimum eigenvalue in the overlap matrix is 2.2827252347E-03. + Reciprocal condition number of the overlap matrix is 5.2443056371E-04. + Using symmetric orthogonalization. + + ==> Pre-Iterations <== + + SCF Guess: Superposition of Atomic Densities via on-the-fly atomic UHF (no occupation information). + + ------------------------- + Irrep Nso Nmo + ------------------------- + A1 23 23 + A2 7 7 + B1 11 11 + B2 17 17 + ------------------------- + Total 58 58 + ------------------------- + + ==> Iterations <== + + Total Energy Delta E RMS |[F,P]| + + @RHF iter SAD: -75.49524492538055 -7.54952e+01 0.00000e+00 + @RHF iter 1: -75.97790354157809 -4.82659e-01 1.43554e-02 DIIS + @RHF iter 2: -76.03043268093974 -5.25291e-02 9.32282e-03 DIIS + @RHF iter 3: -76.05621905768797 -2.57864e-02 6.97168e-04 DIIS + @RHF iter 4: -76.05661434139506 -3.95284e-04 1.72021e-04 DIIS + @RHF iter 5: -76.05663987454979 -2.55332e-05 3.56664e-05 DIIS + @RHF iter 6: -76.05664148419066 -1.60964e-06 6.88359e-06 DIIS + @RHF iter 7: -76.05664154505882 -6.08682e-08 1.08955e-06 DIIS + @RHF iter 8: -76.05664154630519 -1.24636e-09 1.68130e-07 DIIS + @RHF iter 9: -76.05664154633595 -3.07665e-11 4.71897e-08 DIIS + @RHF iter 10: -76.05664154633840 -2.44427e-12 6.11242e-09 DIIS + @RHF iter 11: -76.05664154633847 -7.10543e-14 8.60996e-10 DIIS + @RHF iter 12: -76.05664154633845 1.42109e-14 1.39171e-10 DIIS + @RHF iter 13: -76.05664154633843 2.84217e-14 1.64822e-11 DIIS + Energy and wave function converged. + + + ==> Post-Iterations <== + + Orbital Energies [Eh] + --------------------- + + Doubly Occupied: + + 1A1 -20.556250 2A1 -1.343308 1B2 -0.704779 + 3A1 -0.578432 1B1 -0.504307 + + Virtual: + + 4A1 0.141473 2B2 0.203697 3B2 0.540199 + 5A1 0.602097 6A1 0.668677 2B1 0.787179 + 7A1 0.795124 4B2 0.805696 1A2 0.861851 + 3B1 0.950700 8A1 1.137194 5B2 1.196326 + 6B2 1.519400 9A1 1.559134 4B1 2.038703 + 7B2 2.060285 2A2 2.061684 10A1 2.171348 + 11A1 2.234874 12A1 2.582300 8B2 2.961464 + 5B1 3.347153 13A1 3.483536 3A2 3.585365 + 9B2 3.653742 6B1 3.794482 10B2 3.872211 + 14A1 3.885594 4A2 3.960755 7B1 4.016238 + 11B2 4.070978 15A1 4.186393 5A2 4.299889 + 16A1 4.369343 12B2 4.584280 8B1 4.678808 + 13B2 4.853727 17A1 5.143099 18A1 5.247835 + 14B2 5.521554 9B1 6.044229 19A1 6.560274 + 10B1 6.900299 6A2 6.931252 11B1 7.004089 + 20A1 7.006866 15B2 7.024612 21A1 7.174196 + 7A2 7.227154 22A1 7.446082 16B2 7.783389 + 17B2 8.270074 23A1 12.775016 + + Final Occupation by Irrep: + A1 A2 B1 B2 + DOCC [ 3, 0, 1, 1 ] + + @RHF Final Energy: -76.05664154633843 + + => Energetics <= + + Nuclear Repulsion Energy = 9.1401064740701798 + One-Electron Energy = -123.0193422533992589 + Two-Electron Energy = 37.8225942329906601 + Total Energy = -76.0566415463384260 + +Computation Completed + + +Properties will be evaluated at 0.000000, 0.000000, 0.000000 [a0] + +Properties computed using the SCF density matrix + + Nuclear Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: 0.9916 + + Electronic Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: -0.1872 + + Dipole Moment: [e a0] + X: 0.0000 Y: 0.0000 Z: 0.8044 Total: 0.8044 + + Dipole Moment: [D] + X: 0.0000 Y: 0.0000 Z: 2.0446 Total: 2.0446 + + +*** tstop() called on n070 at Mon Oct 24 14:59:42 2022 +Module time: + user time = 2.75 seconds = 0.05 minutes + system time = 0.05 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes +Total time: + user time = 2.75 seconds = 0.05 minutes + system time = 0.05 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + MINTS: Wrapper to libmints. + by Justin Turney + + Calculation information: + Number of threads: 4 + Number of atoms: 3 + Number of AO shells: 22 + Number of SO shells: 16 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Number of irreps: 4 + Integral cutoff 0.00e+00 + Number of functions per irrep: [ 23 7 11 17 ] + + OEINTS: Overlap, kinetic, potential, dipole, and quadrupole integrals + stored in file 35. + + Computing two-electron integrals...done + Computed 359446 non-zero two-electron integrals. + Stored in file 33. + + +*** tstart() called on n070 +*** at Mon Oct 24 14:59:42 2022 + + + Wfn Parameters: + -------------------- + Wavefunction = CCSD_T + Number of irreps = 4 + Number of MOs = 58 + Number of active MOs = 57 + AO-Basis = NONE + Semicanonical = false + Reference = RHF + Print Level = 1 + + IRREP # MOs # FZDC # DOCC # SOCC # VIRT # FZVR + ----- ----- ------ ------ ------ ------ ------ + A1 23 1 2 0 20 0 + A2 7 0 0 0 7 0 + B1 11 0 1 0 10 0 + B2 17 0 1 0 16 0 + Transforming integrals... + IWL integrals will be deleted. + (OO|OO)... + Presorting SO-basis two-electron integrals. + Sorting File: SO Ints (nn|nn) nbuckets = 1 + Transforming the one-electron integrals and constructing Fock matrices + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + Frozen core energy = -61.30307681306065 + + Size of irrep 0 of integrals: 0.648 (MW) / 5.184 (MB) + Size of irrep 1 of integrals: 0.360 (MW) / 2.880 (MB) + Size of irrep 2 of integrals: 0.389 (MW) / 3.115 (MB) + Size of irrep 3 of integrals: 0.608 (MW) / 4.867 (MB) + Total: 2.006 (MW) / 16.046 (MB) + + Size of irrep 0 of integrals: 0.053 (MW) / 0.425 (MB) + Size of irrep 1 of integrals: 0.024 (MW) / 0.192 (MB) + Size of irrep 2 of integrals: 0.029 (MW) / 0.235 (MB) + Size of irrep 3 of integrals: 0.046 (MW) / 0.368 (MB) + Total: 0.152 (MW) / 1.220 (MB) + + Size of irrep 0 of tijab amplitudes: 0.005 (MW) / 0.039 (MB) + Size of irrep 1 of tijab amplitudes: 0.001 (MW) / 0.010 (MB) + Size of irrep 2 of tijab amplitudes: 0.002 (MW) / 0.020 (MB) + Size of irrep 3 of tijab amplitudes: 0.003 (MW) / 0.025 (MB) + Total: 0.012 (MW) / 0.093 (MB) + + Nuclear Rep. energy = 9.14010647407018 + SCF energy = -76.05664154633843 + One-electron energy = -41.52568886768393 + Two-electron energy = 17.63201766033597 + Reference energy = -76.05664154633843 + +*** tstop() called on n070 at Mon Oct 24 14:59:42 2022 +Module time: + user time = 0.41 seconds = 0.01 minutes + system time = 0.09 seconds = 0.00 minutes + total time = 0 seconds = 0.00 minutes +Total time: + user time = 3.77 seconds = 0.06 minutes + system time = 0.16 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + ************************** + * * + * CCENERGY * + * * + ************************** + + Nuclear Rep. energy (wfn) = 9.140106474070180 + SCF energy (wfn) = -76.056641546338426 + Reference energy (file100) = -76.056641546338426 + + Input parameters: + ----------------- + Wave function = CCSD_T + Reference wfn = RHF + Brueckner = No + Memory (Mbytes) = 14000.0 + Maxiter = 300 + R_Convergence = 1.0e-08 + E_Convergence = 1.0e-10 + Restart = Yes + DIIS = Yes + AO Basis = NONE + ABCD = NEW + Cache Level = 2 + Cache Type = LOW + Print Level = 1 + Num. of threads = 4 + # Amps to Print = 10 + Print MP2 Amps? = No + Analyze T2 Amps = No + Print Pair Ener = No + Local CC = No + SCS-MP2 = False + SCSN-MP2 = False + SCS-CCSD = False + +MP2 correlation energy -0.2619831384762842 + Solving CC Amplitude Equations + ------------------------------ + Iter Energy RMS T1Diag D1Diag New D1Diag D2Diag + ---- --------------------- --------- ---------- ---------- ---------- -------- + 0 -0.261983138476284 0.000e+00 0.000000 0.000000 0.000000 0.116576 + 1 -0.262226178760577 2.929e-02 0.005744 0.009356 0.009356 0.120249 + 2 -0.267109282014324 1.014e-02 0.005943 0.009516 0.009516 0.124985 + 3 -0.267830815683136 3.269e-03 0.006540 0.010675 0.010675 0.126669 + 4 -0.267823151569473 6.659e-04 0.006579 0.010771 0.010771 0.126882 + 5 -0.267845480654242 2.117e-04 0.006601 0.010865 0.010865 0.126931 + 6 -0.267846001544122 6.348e-05 0.006607 0.010903 0.010903 0.126927 + 7 -0.267846080446138 2.032e-05 0.006610 0.010920 0.010920 0.126925 + 8 -0.267845758448233 5.224e-06 0.006610 0.010924 0.010924 0.126925 + 9 -0.267845667118351 1.077e-06 0.006611 0.010925 0.010925 0.126925 + 10 -0.267845680279797 2.424e-07 0.006611 0.010925 0.010925 0.126925 + 11 -0.267845678938305 4.712e-08 0.006611 0.010925 0.010925 0.126925 + 12 -0.267845680622278 1.048e-08 0.006611 0.010925 0.010925 0.126925 + 13 -0.267845680668519 2.508e-09 0.006611 0.010925 0.010925 0.126925 + 14 -0.267845680679237 6.275e-10 0.006611 0.010925 0.010925 0.126925 + + Iterations converged. + + + Largest TIA Amplitudes: + 2 27 -0.0076263703 + 1 0 0.0059549046 + 3 41 -0.0058727684 + 2 28 -0.0049162962 + 1 3 -0.0045528077 + 1 5 -0.0042461409 + 0 2 -0.0040828469 + 3 46 -0.0038740312 + 1 2 0.0038312570 + 1 11 -0.0037987674 + + Largest TIjAb Amplitudes: + 2 2 27 27 -0.0477127378 + 1 1 2 2 -0.0295829370 + 3 3 38 38 -0.0273494794 + 1 2 2 27 0.0259501502 + 2 1 27 2 0.0259501502 + 3 3 1 1 -0.0255194503 + 3 3 39 39 -0.0226194348 + 1 1 38 38 -0.0222719756 + 2 3 27 39 0.0222668043 + 3 2 39 27 0.0222668043 + + SCF energy (wfn) = -76.056641546338426 + Reference energy (file100) = -76.056641546338426 + + Opposite-spin MP2 correlation energy = -0.198363050790996 + Same-spin MP2 correlation energy = -0.063620087685288 + Singles MP2 correlation energy = -0.000000000000000 + MP2 correlation energy = -0.261983138476284 + * MP2 total energy = -76.318624684814708 + + Opposite-spin CCSD correlation energy = -0.211163008591429 + Same-spin CCSD correlation energy = -0.056682672087808 + Singles CCSD correlation energy = 0.000000000000000 + CCSD correlation energy = -0.267845680679237 + * CCSD total energy = -76.324487227017670 + + ************************** + * * + * CCTRIPLES * + * * + ************************** + + + Wave function = CCSD_T + Reference wfn = RHF + + Nuclear Rep. energy (wfn) = 9.140106474070180 + SCF energy (wfn) = -76.056641546338426 + Reference energy (file100) = -76.056641546338426 + CCSD energy (file100) = -0.267845680679237 + Total CCSD energy (file100) = -76.324487227017670 + + Number of ijk index combinations: 20 + Memory available in words : 1750000000 + ~Words needed per explicit thread: 32000 + Number of threads for explicit ijk threading: 4 + + MKL num_threads set to 1 for explicit threading. + + (T) energy = -0.007702419716674 + * CCSD(T) total energy = -76.332189646734335 + +Giraffe The Energy is -76.332189646734 + + Psi4 stopped on: Monday, 24 October 2022 02:59PM + Psi4 wall time for execution: 0:00:05.04 + +*** Psi4 exiting successfully. Buy a developer a beer! diff --git a/test_suite/ref_data/reap_test/Disps/5/timer.dat b/test_suite/ref_data/reap_test/Disps/5/timer.dat new file mode 100644 index 00000000..50418df0 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/5/timer.dat @@ -0,0 +1,92 @@ + +Host: n070 + +Timers On : Mon Oct 24 14:59:39 2022 +Timers Off: Mon Oct 24 14:59:46 2022 + +Wall Time: 6.56 seconds + + Time (seconds) +Module User System Wall Calls +Total PK formation time : 1.183u 0.017s 0.293w 1 calls +HF: Form core H : 0.050u 0.000s 0.010w 1 calls +HF: Form S/X : 0.017u 0.000s 0.000w 1 calls +HF: Guess : 2.100u 0.050s 0.323w 1 calls +SAD Guess : 2.017u 0.050s 0.309w 1 calls +HF: Form G : 0.300u 0.000s 0.043w 14 calls +JK: D : 0.000u 0.000s 0.000w 14 calls +JK: USO2AO : 0.000u 0.000s 0.001w 14 calls +JK: JK : 0.283u 0.000s 0.040w 14 calls +PK computes JK : 0.283u 0.000s 0.040w 14 calls +JK: AO2USO : 0.017u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.050u 0.000s 0.009w 13 calls +DIISManager::add_entry : 0.017u 0.000s 0.002w 13 calls +DIISManager::extrapolate : 0.000u 0.000s 0.002w 13 calls +bMatrix setup : 0.000u 0.000s 0.001w 13 calls +bMatrix pseudoinverse : 0.000u 0.000s 0.001w 13 calls +New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.002w 13 calls +ccenergy : 15.850u 1.233s 3.129w 1 calls +F build : 0.217u 0.017s 0.034w 14 calls +Wmbej build : 0.383u 0.050s 0.061w 14 calls +C->Wmbej : 0.017u 0.000s 0.002w 14 calls +F->Wmbej : 0.200u 0.033s 0.036w 14 calls +E->Wmbej : 0.067u 0.017s 0.009w 14 calls +X->Wmbej : 0.050u 0.000s 0.011w 14 calls +Z : 0.050u 0.000s 0.007w 14 calls +T2 Build : 1.417u 0.233s 0.247w 14 calls +BT2 : 0.917u 0.167s 0.165w 14 calls +ABCD:new : 0.917u 0.167s 0.165w 14 calls +ABCD:S : 0.133u 0.000s 0.027w 14 calls +ABCD:A : 0.150u 0.033s 0.026w 14 calls +ABCD:axpy : 0.583u 0.117s 0.106w 14 calls +FT2 : 0.050u 0.017s 0.010w 14 calls +WmbejT2 : 0.150u 0.033s 0.019w 14 calls +CT2 : 0.150u 0.017s 0.029w 14 calls +cctriples : 1.283u 0.083s 0.242w 1 calls +ET_RHF : 0.350u 0.017s 0.055w 1 calls + +-------------------------------------------------------------------------------------- +Total PK formation time : 1.183u 0.017s 0.293w 1 calls +HF: Form core H : 0.050u 0.000s 0.010w 1 calls +HF: Form S/X : 0.017u 0.000s 0.000w 1 calls +HF: Guess : 2.100u 0.050s 0.323w 1 calls +| SAD Guess : 2.017u 0.050s 0.309w 1 calls +HF: Form G : 0.300u 0.000s 0.043w 14 calls +| JK: D : 0.000u 0.000s 0.000w 14 calls +| JK: USO2AO : 0.000u 0.000s 0.001w 14 calls +| JK: JK : 0.283u 0.000s 0.040w 14 calls +| | PK computes JK : 0.283u 0.000s 0.040w 14 calls +| JK: AO2USO : 0.017u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.050u 0.000s 0.009w 13 calls +| DIISManager::add_entry : 0.017u 0.000s 0.002w 13 calls +| DIISManager::extrapolate : 0.000u 0.000s 0.002w 13 calls +| | bMatrix setup : 0.000u 0.000s 0.001w 13 calls +| | bMatrix pseudoinverse : 0.000u 0.000s 0.001w 13 calls +| | New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.002w 13 calls +ccenergy : 15.850u 1.233s 3.129w 1 calls +| F build : 0.217u 0.017s 0.034w 14 calls +| Wmbej build : 0.383u 0.050s 0.061w 14 calls +| | C->Wmbej : 0.017u 0.000s 0.002w 14 calls +| | F->Wmbej : 0.200u 0.033s 0.036w 14 calls +| | E->Wmbej : 0.067u 0.017s 0.009w 14 calls +| | X->Wmbej : 0.050u 0.000s 0.011w 14 calls +| Z : 0.050u 0.000s 0.007w 14 calls +| T2 Build : 1.417u 0.233s 0.247w 14 calls +| | BT2 : 0.917u 0.167s 0.165w 14 calls +| | | ABCD:new : 0.917u 0.167s 0.165w 14 calls +| | | | ABCD:S : 0.133u 0.000s 0.027w 14 calls +| | | | ABCD:A : 0.150u 0.033s 0.026w 14 calls +| | | | ABCD:axpy : 0.583u 0.117s 0.106w 14 calls +| | FT2 : 0.050u 0.017s 0.010w 14 calls +| | WmbejT2 : 0.150u 0.033s 0.019w 14 calls +| | CT2 : 0.150u 0.017s 0.029w 14 calls +cctriples : 1.283u 0.083s 0.242w 1 calls +| ET_RHF : 0.350u 0.017s 0.055w 1 calls + +************************************************************************************** diff --git a/test_suite/ref_data/reap_test/Disps/6/ijk.dat b/test_suite/ref_data/reap_test/Disps/6/ijk.dat new file mode 100644 index 00000000..c7020b85 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/6/ijk.dat @@ -0,0 +1,21 @@ +Total number of IJK combinations =: 20 +Num. of IJK with (Gi,Gj,Gk)=(0,0,0) =: 10 + thread 0: first_ijk=0, last_ijk=2 + thread 1: first_ijk=3, last_ijk=5 + thread 2: first_ijk=6, last_ijk=7 + thread 3: first_ijk=8, last_ijk=9 +Num. of IJK with (Gi,Gj,Gk)=(0,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,0) =: 6 + thread 0: first_ijk=0, last_ijk=1 + thread 1: first_ijk=2, last_ijk=3 + thread 2: first_ijk=4, last_ijk=4 + thread 3: first_ijk=5, last_ijk=5 +Num. of IJK with (Gi,Gj,Gk)=(1,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,0) =: 3 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 +Num. of IJK with (Gi,Gj,Gk)=(1,1,1) =: 1 + thread 0: first_ijk=0, last_ijk=0 diff --git a/test_suite/ref_data/reap_test/Disps/6/input.dat b/test_suite/ref_data/reap_test/Disps/6/input.dat new file mode 100644 index 00000000..a05aa3b3 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/6/input.dat @@ -0,0 +1,24 @@ +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H 0.0000000000 -1.4221446069 0.9939633569 + O 0.0000000000 -0.0049723254 -0.1254971809 + H 0.0000000000 1.4271169322 0.9978774440 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) diff --git a/test_suite/ref_data/reap_test/Disps/6/output.dat b/test_suite/ref_data/reap_test/Disps/6/output.dat new file mode 100644 index 00000000..d5655f4d --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/6/output.dat @@ -0,0 +1,523 @@ + + ----------------------------------------------------------------------- + Psi4: An Open-Source Ab Initio Electronic Structure Package + Psi4 1.4a2.dev629 + + Git: Rev {master} 2938fc2 dirty + + + D. G. A. Smith, L. A. Burns, A. C. Simmonett, R. M. Parrish, + M. C. Schieber, R. Galvelis, P. Kraus, H. Kruse, R. Di Remigio, + A. Alenaizan, A. M. James, S. Lehtola, J. P. Misiewicz, M. Scheurer, + R. A. Shaw, J. B. Schriber, Y. Xie, Z. L. Glick, D. A. Sirianni, + J. S. O'Brien, J. M. Waldrop, A. Kumar, E. G. Hohenstein, + B. P. Pritchard, B. R. Brooks, H. F. Schaefer III, A. Yu. Sokolov, + K. Patkowski, A. E. DePrince III, U. Bozkaya, R. A. King, + F. A. Evangelista, J. M. Turney, T. D. Crawford, C. D. Sherrill, + J. Chem. Phys. 152(18) 184108 (2020). https://doi.org/10.1063/5.0006002 + + Additional Code Authors + E. T. Seidl, C. L. Janssen, E. F. Valeev, M. L. Leininger, + J. F. Gonthier, R. M. Richard, H. R. McAlexander, M. Saitow, X. Wang, + P. Verma, and M. H. Lechner + + Previous Authors, Complete List of Code Contributors, + and Citations for Specific Modules + https://github.com/psi4/psi4/blob/master/codemeta.json + https://github.com/psi4/psi4/graphs/contributors + http://psicode.org/psi4manual/master/introduction.html#citing-psifour + + ----------------------------------------------------------------------- + + + Psi4 started on: Monday, 24 October 2022 02:59PM + + Process ID: 24758 + Host: n089 + PSIDATADIR: /opt/psi/4/master/share/psi4 + Memory: 500.0 MiB + Threads: 4 + + ==> Input File <== + +-------------------------------------------------------------------------- +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H 0.0000000000 -1.4221446069 0.9939633569 + O 0.0000000000 -0.0049723254 -0.1254971809 + H 0.0000000000 1.4271169322 0.9978774440 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) +-------------------------------------------------------------------------- + + Memory set to 13.039 GiB by Python driver. + +Scratch directory: /tmp/795504.6.gen6.q/ + +*** tstart() called on n089 +*** at Mon Oct 24 14:59:37 2022 + + => Loading Basis Set <= + + Name: CC-PVTZ + Role: ORBITAL + Keyword: BASIS + atoms 1, 3 entry H line 23 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + atoms 2 entry O line 262 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + + + --------------------------------------------------------- + SCF + by Justin Turney, Rob Parrish, Andy Simmonett + and Daniel G. A. Smith + RHF Reference + 4 Threads, 13351 MiB Core + --------------------------------------------------------- + + ==> Geometry <== + + Molecular point group: cs + Full point group: Cs + + Geometry (in Bohr), charge = 0, multiplicity = 1: + + Center X Y Z Mass + ------------ ----------------- ----------------- ----------------- ----------------- + H 1.418006997245 -0.993957231280 0.000000000000 1.007825032230 + O 0.000834715745 0.125503306520 0.000000000000 15.994914619570 + H -1.431254541855 -0.997871318380 0.000000000000 1.007825032230 + + Running in cs symmetry. + + Rotational constants: A = 26.74439 B = 14.71429 C = 9.49198 [cm^-1] + Rotational constants: A = 801776.73276 B = 441123.42706 C = 284562.27743 [MHz] + Nuclear repulsion = 9.175997752373910 + + Charge = 0 + Multiplicity = 1 + Electrons = 10 + Nalpha = 5 + Nbeta = 5 + + ==> Algorithm <== + + SCF Algorithm Type is PK. + DIIS enabled. + MOM disabled. + Fractional occupation disabled. + Guess Type is SAD. + Energy threshold = 1.00e-10 + Density threshold = 1.00e-10 + Integral threshold = 0.00e+00 + + ==> Primary Basis <== + + Basis Set: CC-PVTZ + Blend: CC-PVTZ + Number of shells: 22 + Number of basis function: 58 + Number of Cartesian functions: 65 + Spherical Harmonics?: true + Max angular momentum: 3 + + ==> Integral Setup <== + + Using in-core PK algorithm. + Calculation information: + Number of atoms: 3 + Number of AO shells: 22 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Integral cutoff 1.00e-12 + Number of threads: 4 + + Performing in-core PK + Using 2929232 doubles for integral storage. + We computed 43467 shell quartets total. + Whereas there are 32131 unique shell quartets. + 35.28 percent of shell quartets recomputed by reordering. + + ==> DiskJK: Disk-Based J/K Matrices <== + + J tasked: Yes + K tasked: Yes + wK tasked: No + Memory [MiB]: 10013 + Schwarz Cutoff: 1E-12 + + OpenMP threads: 4 + + Minimum eigenvalue in the overlap matrix is 2.5222793325E-03. + Reciprocal condition number of the overlap matrix is 4.9300249924E-04. + Using symmetric orthogonalization. + + ==> Pre-Iterations <== + + SCF Guess: Superposition of Atomic Densities via on-the-fly atomic UHF (no occupation information). + + ------------------------- + Irrep Nso Nmo + ------------------------- + A' 40 40 + A" 18 18 + ------------------------- + Total 58 58 + ------------------------- + + ==> Iterations <== + + Total Energy Delta E RMS |[F,P]| + + @RHF iter SAD: -75.49982990580993 -7.54998e+01 0.00000e+00 + @RHF iter 1: -75.97834956930032 -4.78520e-01 1.02943e-02 DIIS + @RHF iter 2: -76.03093590716050 -5.25863e-02 6.65787e-03 DIIS + @RHF iter 3: -76.05650222756586 -2.55663e-02 4.97220e-04 DIIS + @RHF iter 4: -76.05689212343788 -3.89896e-04 1.21735e-04 DIIS + @RHF iter 5: -76.05691687700292 -2.47536e-05 2.52303e-05 DIIS + @RHF iter 6: -76.05691843886930 -1.56187e-06 4.87434e-06 DIIS + @RHF iter 7: -76.05691849826209 -5.93928e-08 7.73255e-07 DIIS + @RHF iter 8: -76.05691849948249 -1.22040e-09 1.18036e-07 DIIS + @RHF iter 9: -76.05691849951157 -2.90754e-11 3.30063e-08 DIIS + @RHF iter 10: -76.05691849951410 -2.52953e-12 4.32460e-09 DIIS + @RHF iter 11: -76.05691849951408 1.42109e-14 6.29488e-10 DIIS + @RHF iter 12: -76.05691849951413 -4.26326e-14 1.24971e-10 DIIS + @RHF iter 13: -76.05691849951414 -1.42109e-14 2.20297e-11 DIIS + Energy and wave function converged. + + + ==> Post-Iterations <== + + Orbital Energies [Eh] + --------------------- + + Doubly Occupied: + + 1Ap -20.555582 2Ap -1.345254 3Ap -0.706810 + 4Ap -0.579150 1App -0.504609 + + Virtual: + + 5Ap 0.141858 6Ap 0.204047 7Ap 0.541684 + 8Ap 0.604408 9Ap 0.667983 2App 0.787191 + 10Ap 0.795795 11Ap 0.805775 3App 0.862663 + 4App 0.951103 12Ap 1.134401 13Ap 1.198550 + 14Ap 1.522148 15Ap 1.565635 5App 2.040152 + 16Ap 2.054906 6App 2.063289 17Ap 2.172471 + 18Ap 2.233642 19Ap 2.584353 20Ap 2.964785 + 7App 3.346991 21Ap 3.485406 8App 3.588102 + 22Ap 3.659063 9App 3.797567 23Ap 3.876020 + 24Ap 3.887132 10App 3.963392 11App 4.016808 + 25Ap 4.072523 26Ap 4.191261 12App 4.305846 + 27Ap 4.374883 28Ap 4.594173 13App 4.682107 + 29Ap 4.861363 30Ap 5.157623 31Ap 5.250128 + 32Ap 5.523857 14App 6.051665 33Ap 6.574661 + 15App 6.910012 16App 6.940886 17App 7.004761 + 34Ap 7.012527 35Ap 7.042028 36Ap 7.176123 + 18App 7.235497 37Ap 7.448982 38Ap 7.793290 + 39Ap 8.286717 40Ap 12.837042 + + Final Occupation by Irrep: + Ap App + DOCC [ 4, 1 ] + + @RHF Final Energy: -76.05691849951414 + + => Energetics <= + + Nuclear Repulsion Energy = 9.1759977523739096 + One-Electron Energy = -123.0830212545642581 + Two-Electron Energy = 37.8501050026762158 + Total Energy = -76.0569184995141399 + +Computation Completed + + +Properties will be evaluated at 0.000000, 0.000000, 0.000000 [a0] + +Properties computed using the SCF density matrix + + Nuclear Dipole Moment: [e a0] + X: -0.0066 Y: -0.9878 Z: 0.0000 + + Electronic Dipole Moment: [e a0] + X: 0.0029 Y: 0.1846 Z: 0.0000 + + Dipole Moment: [e a0] + X: -0.0036 Y: -0.8032 Z: 0.0000 Total: 0.8032 + + Dipole Moment: [D] + X: -0.0092 Y: -2.0416 Z: 0.0000 Total: 2.0416 + + +*** tstop() called on n089 at Mon Oct 24 14:59:38 2022 +Module time: + user time = 1.69 seconds = 0.03 minutes + system time = 0.02 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes +Total time: + user time = 1.69 seconds = 0.03 minutes + system time = 0.02 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + MINTS: Wrapper to libmints. + by Justin Turney + + Calculation information: + Number of threads: 4 + Number of atoms: 3 + Number of AO shells: 22 + Number of SO shells: 22 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Number of irreps: 2 + Integral cutoff 0.00e+00 + Number of functions per irrep: [ 40 18 ] + + OEINTS: Overlap, kinetic, potential, dipole, and quadrupole integrals + stored in file 35. + + Computing two-electron integrals...done + Computed 711555 non-zero two-electron integrals. + Stored in file 33. + + +*** tstart() called on n089 +*** at Mon Oct 24 14:59:38 2022 + + + Wfn Parameters: + -------------------- + Wavefunction = CCSD_T + Number of irreps = 2 + Number of MOs = 58 + Number of active MOs = 57 + AO-Basis = NONE + Semicanonical = false + Reference = RHF + Print Level = 1 + + IRREP # MOs # FZDC # DOCC # SOCC # VIRT # FZVR + ----- ----- ------ ------ ------ ------ ------ + Ap 40 1 3 0 36 0 + App 18 0 1 0 17 0 + Transforming integrals... + IWL integrals will be deleted. + (OO|OO)... + Presorting SO-basis two-electron integrals. + Sorting File: SO Ints (nn|nn) nbuckets = 1 + Transforming the one-electron integrals and constructing Fock matrices + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + Frozen core energy = -61.31169827071542 + + Size of irrep 0 of integrals: 2.512 (MW) / 20.098 (MB) + Size of irrep 1 of integrals: 1.498 (MW) / 11.985 (MB) + Total: 4.010 (MW) / 32.083 (MB) + + Size of irrep 0 of integrals: 0.198 (MW) / 1.585 (MB) + Size of irrep 1 of integrals: 0.106 (MW) / 0.852 (MB) + Total: 0.305 (MW) / 2.437 (MB) + + Size of irrep 0 of tijab amplitudes: 0.016 (MW) / 0.127 (MB) + Size of irrep 1 of tijab amplitudes: 0.007 (MW) / 0.059 (MB) + Total: 0.023 (MW) / 0.186 (MB) + + Nuclear Rep. energy = 9.17599775237391 + SCF energy = -76.05691849951414 + One-electron energy = -41.57078924405797 + Two-electron energy = 17.64957126288536 + Reference energy = -76.05691849951413 + +*** tstop() called on n089 at Mon Oct 24 14:59:38 2022 +Module time: + user time = 1.34 seconds = 0.02 minutes + system time = 0.10 seconds = 0.00 minutes + total time = 0 seconds = 0.00 minutes +Total time: + user time = 3.58 seconds = 0.06 minutes + system time = 0.13 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + ************************** + * * + * CCENERGY * + * * + ************************** + + Nuclear Rep. energy (wfn) = 9.175997752373910 + SCF energy (wfn) = -76.056918499514140 + Reference energy (file100) = -76.056918499514126 + + Input parameters: + ----------------- + Wave function = CCSD_T + Reference wfn = RHF + Brueckner = No + Memory (Mbytes) = 14000.0 + Maxiter = 300 + R_Convergence = 1.0e-08 + E_Convergence = 1.0e-10 + Restart = Yes + DIIS = Yes + AO Basis = NONE + ABCD = NEW + Cache Level = 2 + Cache Type = LOW + Print Level = 1 + Num. of threads = 4 + # Amps to Print = 10 + Print MP2 Amps? = No + Analyze T2 Amps = No + Print Pair Ener = No + Local CC = No + SCS-MP2 = False + SCSN-MP2 = False + SCS-CCSD = False + +MP2 correlation energy -0.2617109429690342 + Solving CC Amplitude Equations + ------------------------------ + Iter Energy RMS T1Diag D1Diag New D1Diag D2Diag + ---- --------------------- --------- ---------- ---------- ---------- -------- + 0 -0.261710942969034 0.000e+00 0.000000 0.000000 0.000000 0.116250 + 1 -0.262027923796444 2.912e-02 0.005707 0.009298 0.009298 0.119915 + 2 -0.266874600547018 1.004e-02 0.005905 0.009457 0.009457 0.124607 + 3 -0.267584789294051 3.226e-03 0.006493 0.010595 0.010595 0.126264 + 4 -0.267577063851203 6.558e-04 0.006531 0.010687 0.010687 0.126474 + 5 -0.267598982077506 2.070e-04 0.006552 0.010777 0.010777 0.126523 + 6 -0.267599525071695 6.176e-05 0.006557 0.010814 0.010814 0.126520 + 7 -0.267599610136129 1.982e-05 0.006560 0.010829 0.010829 0.126518 + 8 -0.267599299281224 5.099e-06 0.006561 0.010834 0.010834 0.126518 + 9 -0.267599210241628 1.048e-06 0.006561 0.010835 0.010835 0.126518 + 10 -0.267599223172958 2.348e-07 0.006561 0.010835 0.010835 0.126518 + 11 -0.267599221868339 4.564e-08 0.006561 0.010835 0.010835 0.126518 + 12 -0.267599223494903 1.012e-08 0.006561 0.010835 0.010835 0.126518 + 13 -0.267599223533926 2.445e-09 0.006561 0.010835 0.010835 0.126518 + 14 -0.267599223542734 6.143e-10 0.006561 0.010835 0.010835 0.126518 + + Iterations converged. + + + Largest TIA Amplitudes: + 3 36 -0.0075234373 + 2 0 0.0058490537 + 1 9 -0.0057827998 + 3 38 -0.0049345890 + 2 5 -0.0045597284 + 2 10 -0.0041449782 + 0 4 -0.0040238015 + 2 4 0.0038567697 + 1 20 -0.0038464915 + 2 21 -0.0037828832 + + Largest TIjAb Amplitudes: + 3 3 36 36 -0.0476501616 + 2 2 4 4 -0.0295838136 + 1 1 2 2 -0.0270765483 + 2 3 4 36 0.0259190149 + 3 2 36 4 0.0259190149 + 1 1 3 3 -0.0253231278 + 1 1 6 6 -0.0226684505 + 1 3 6 36 0.0222583093 + 3 1 36 6 0.0222583093 + 2 2 2 2 -0.0221710989 + + SCF energy (wfn) = -76.056918499514140 + Reference energy (file100) = -76.056918499514126 + + Opposite-spin MP2 correlation energy = -0.198148425145034 + Same-spin MP2 correlation energy = -0.063562517824000 + Singles MP2 correlation energy = -0.000000000000000 + MP2 correlation energy = -0.261710942969034 + * MP2 total energy = -76.318629442483157 + + Opposite-spin CCSD correlation energy = -0.210925571703044 + Same-spin CCSD correlation energy = -0.056673651839690 + Singles CCSD correlation energy = 0.000000000000000 + CCSD correlation energy = -0.267599223542734 + * CCSD total energy = -76.324517723056857 + + ************************** + * * + * CCTRIPLES * + * * + ************************** + + + Wave function = CCSD_T + Reference wfn = RHF + + Nuclear Rep. energy (wfn) = 9.175997752373910 + SCF energy (wfn) = -76.056918499514140 + Reference energy (file100) = -76.056918499514126 + CCSD energy (file100) = -0.267599223542734 + Total CCSD energy (file100) = -76.324517723056857 + + Number of ijk index combinations: 20 + Memory available in words : 1750000000 + ~Words needed per explicit thread: 186624 + Number of threads for explicit ijk threading: 4 + + MKL num_threads set to 1 for explicit threading. + + (T) energy = -0.007671250899706 + * CCSD(T) total energy = -76.332188973956562 + +Giraffe The Energy is -76.332188973957 + + Psi4 stopped on: Monday, 24 October 2022 02:59PM + Psi4 wall time for execution: 0:00:03.45 + +*** Psi4 exiting successfully. Buy a developer a beer! diff --git a/test_suite/ref_data/reap_test/Disps/6/timer.dat b/test_suite/ref_data/reap_test/Disps/6/timer.dat new file mode 100644 index 00000000..c5a8cd3f --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/6/timer.dat @@ -0,0 +1,92 @@ + +Host: n089 + +Timers On : Mon Oct 24 14:59:36 2022 +Timers Off: Mon Oct 24 14:59:41 2022 + +Wall Time: 4.57 seconds + + Time (seconds) +Module User System Wall Calls +Total PK formation time : 0.517u 0.000s 0.131w 1 calls +HF: Form core H : 0.050u 0.000s 0.006w 1 calls +HF: Form S/X : 0.000u 0.017s 0.006w 1 calls +HF: Guess : 1.267u 0.000s 0.192w 1 calls +SAD Guess : 1.217u 0.000s 0.183w 1 calls +HF: Form G : 0.250u 0.000s 0.048w 14 calls +JK: D : 0.000u 0.000s 0.000w 14 calls +JK: USO2AO : 0.000u 0.000s 0.000w 14 calls +JK: JK : 0.233u 0.000s 0.046w 14 calls +PK computes JK : 0.233u 0.000s 0.046w 14 calls +JK: AO2USO : 0.000u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.083u 0.017s 0.008w 13 calls +DIISManager::add_entry : 0.017u 0.000s 0.002w 13 calls +DIISManager::extrapolate : 0.000u 0.017s 0.001w 13 calls +bMatrix setup : 0.000u 0.017s 0.000w 13 calls +bMatrix pseudoinverse : 0.000u 0.000s 0.000w 13 calls +New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.003w 13 calls +ccenergy : 10.633u 0.367s 2.068w 1 calls +F build : 0.133u 0.017s 0.027w 14 calls +Wmbej build : 0.233u 0.033s 0.041w 14 calls +C->Wmbej : 0.000u 0.000s 0.002w 14 calls +F->Wmbej : 0.117u 0.017s 0.024w 14 calls +E->Wmbej : 0.083u 0.000s 0.006w 14 calls +X->Wmbej : 0.017u 0.017s 0.008w 14 calls +Z : 0.017u 0.000s 0.006w 14 calls +T2 Build : 0.933u 0.117s 0.156w 14 calls +BT2 : 0.617u 0.083s 0.097w 14 calls +ABCD:new : 0.617u 0.083s 0.097w 14 calls +ABCD:S : 0.133u 0.000s 0.023w 14 calls +ABCD:A : 0.150u 0.017s 0.022w 14 calls +ABCD:axpy : 0.300u 0.067s 0.047w 14 calls +FT2 : 0.050u 0.017s 0.007w 14 calls +WmbejT2 : 0.033u 0.000s 0.013w 14 calls +CT2 : 0.150u 0.017s 0.018w 14 calls +cctriples : 0.933u 0.033s 0.172w 1 calls +ET_RHF : 0.333u 0.017s 0.053w 1 calls + +-------------------------------------------------------------------------------------- +Total PK formation time : 0.517u 0.000s 0.131w 1 calls +HF: Form core H : 0.050u 0.000s 0.006w 1 calls +HF: Form S/X : 0.000u 0.017s 0.006w 1 calls +HF: Guess : 1.267u 0.000s 0.192w 1 calls +| SAD Guess : 1.217u 0.000s 0.183w 1 calls +HF: Form G : 0.250u 0.000s 0.048w 14 calls +| JK: D : 0.000u 0.000s 0.000w 14 calls +| JK: USO2AO : 0.000u 0.000s 0.000w 14 calls +| JK: JK : 0.233u 0.000s 0.046w 14 calls +| | PK computes JK : 0.233u 0.000s 0.046w 14 calls +| JK: AO2USO : 0.000u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.083u 0.017s 0.008w 13 calls +| DIISManager::add_entry : 0.017u 0.000s 0.002w 13 calls +| DIISManager::extrapolate : 0.000u 0.017s 0.001w 13 calls +| | bMatrix setup : 0.000u 0.017s 0.000w 13 calls +| | bMatrix pseudoinverse : 0.000u 0.000s 0.000w 13 calls +| | New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.003w 13 calls +ccenergy : 10.633u 0.367s 2.068w 1 calls +| F build : 0.133u 0.017s 0.027w 14 calls +| Wmbej build : 0.233u 0.033s 0.041w 14 calls +| | C->Wmbej : 0.000u 0.000s 0.002w 14 calls +| | F->Wmbej : 0.117u 0.017s 0.024w 14 calls +| | E->Wmbej : 0.083u 0.000s 0.006w 14 calls +| | X->Wmbej : 0.017u 0.017s 0.008w 14 calls +| Z : 0.017u 0.000s 0.006w 14 calls +| T2 Build : 0.933u 0.117s 0.156w 14 calls +| | BT2 : 0.617u 0.083s 0.097w 14 calls +| | | ABCD:new : 0.617u 0.083s 0.097w 14 calls +| | | | ABCD:S : 0.133u 0.000s 0.023w 14 calls +| | | | ABCD:A : 0.150u 0.017s 0.022w 14 calls +| | | | ABCD:axpy : 0.300u 0.067s 0.047w 14 calls +| | FT2 : 0.050u 0.017s 0.007w 14 calls +| | WmbejT2 : 0.033u 0.000s 0.013w 14 calls +| | CT2 : 0.150u 0.017s 0.018w 14 calls +cctriples : 0.933u 0.033s 0.172w 1 calls +| ET_RHF : 0.333u 0.017s 0.053w 1 calls + +************************************************************************************** diff --git a/test_suite/ref_data/reap_test/Disps/7/ijk.dat b/test_suite/ref_data/reap_test/Disps/7/ijk.dat new file mode 100644 index 00000000..c7020b85 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/7/ijk.dat @@ -0,0 +1,21 @@ +Total number of IJK combinations =: 20 +Num. of IJK with (Gi,Gj,Gk)=(0,0,0) =: 10 + thread 0: first_ijk=0, last_ijk=2 + thread 1: first_ijk=3, last_ijk=5 + thread 2: first_ijk=6, last_ijk=7 + thread 3: first_ijk=8, last_ijk=9 +Num. of IJK with (Gi,Gj,Gk)=(0,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,0) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(0,1,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,0,0) =: 6 + thread 0: first_ijk=0, last_ijk=1 + thread 1: first_ijk=2, last_ijk=3 + thread 2: first_ijk=4, last_ijk=4 + thread 3: first_ijk=5, last_ijk=5 +Num. of IJK with (Gi,Gj,Gk)=(1,0,1) =: 0 +Num. of IJK with (Gi,Gj,Gk)=(1,1,0) =: 3 + thread 0: first_ijk=0, last_ijk=0 + thread 1: first_ijk=1, last_ijk=1 + thread 2: first_ijk=2, last_ijk=2 +Num. of IJK with (Gi,Gj,Gk)=(1,1,1) =: 1 + thread 0: first_ijk=0, last_ijk=0 diff --git a/test_suite/ref_data/reap_test/Disps/7/input.dat b/test_suite/ref_data/reap_test/Disps/7/input.dat new file mode 100644 index 00000000..1500114d --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/7/input.dat @@ -0,0 +1,24 @@ +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H -0.0000000000 -1.4271169322 0.9978774440 + O 0.0000000000 0.0049723254 -0.1254971809 + H 0.0000000000 1.4221446069 0.9939633569 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) diff --git a/test_suite/ref_data/reap_test/Disps/7/output.dat b/test_suite/ref_data/reap_test/Disps/7/output.dat new file mode 100644 index 00000000..8bc470c3 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/7/output.dat @@ -0,0 +1,523 @@ + + ----------------------------------------------------------------------- + Psi4: An Open-Source Ab Initio Electronic Structure Package + Psi4 1.4a2.dev629 + + Git: Rev {master} 2938fc2 dirty + + + D. G. A. Smith, L. A. Burns, A. C. Simmonett, R. M. Parrish, + M. C. Schieber, R. Galvelis, P. Kraus, H. Kruse, R. Di Remigio, + A. Alenaizan, A. M. James, S. Lehtola, J. P. Misiewicz, M. Scheurer, + R. A. Shaw, J. B. Schriber, Y. Xie, Z. L. Glick, D. A. Sirianni, + J. S. O'Brien, J. M. Waldrop, A. Kumar, E. G. Hohenstein, + B. P. Pritchard, B. R. Brooks, H. F. Schaefer III, A. Yu. Sokolov, + K. Patkowski, A. E. DePrince III, U. Bozkaya, R. A. King, + F. A. Evangelista, J. M. Turney, T. D. Crawford, C. D. Sherrill, + J. Chem. Phys. 152(18) 184108 (2020). https://doi.org/10.1063/5.0006002 + + Additional Code Authors + E. T. Seidl, C. L. Janssen, E. F. Valeev, M. L. Leininger, + J. F. Gonthier, R. M. Richard, H. R. McAlexander, M. Saitow, X. Wang, + P. Verma, and M. H. Lechner + + Previous Authors, Complete List of Code Contributors, + and Citations for Specific Modules + https://github.com/psi4/psi4/blob/master/codemeta.json + https://github.com/psi4/psi4/graphs/contributors + http://psicode.org/psi4manual/master/introduction.html#citing-psifour + + ----------------------------------------------------------------------- + + + Psi4 started on: Monday, 24 October 2022 02:59PM + + Process ID: 358 + Host: n083 + PSIDATADIR: /opt/psi/4/master/share/psi4 + Memory: 500.0 MiB + Threads: 4 + + ==> Input File <== + +-------------------------------------------------------------------------- +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr + H -0.0000000000 -1.4271169322 0.9978774440 + O 0.0000000000 0.0049723254 -0.1254971809 + H 0.0000000000 1.4221446069 0.9939633569 +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) +-------------------------------------------------------------------------- + + Memory set to 13.039 GiB by Python driver. + +Scratch directory: /tmp/795504.7.gen6.q/ + +*** tstart() called on n083 +*** at Mon Oct 24 14:59:37 2022 + + => Loading Basis Set <= + + Name: CC-PVTZ + Role: ORBITAL + Keyword: BASIS + atoms 1, 3 entry H line 23 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + atoms 2 entry O line 262 file /opt/psi/4/master/share/psi4/basis/cc-pvtz.gbs + + + --------------------------------------------------------- + SCF + by Justin Turney, Rob Parrish, Andy Simmonett + and Daniel G. A. Smith + RHF Reference + 4 Threads, 13351 MiB Core + --------------------------------------------------------- + + ==> Geometry <== + + Molecular point group: cs + Full point group: Cs + + Geometry (in Bohr), charge = 0, multiplicity = 1: + + Center X Y Z Mass + ------------ ----------------- ----------------- ----------------- ----------------- + H 1.431254541855 -0.997871318380 0.000000000000 1.007825032230 + O -0.000834715745 0.125503306520 0.000000000000 15.994914619570 + H -1.418006997245 -0.993957231280 0.000000000000 1.007825032230 + + Running in cs symmetry. + + Rotational constants: A = 26.74439 B = 14.71429 C = 9.49198 [cm^-1] + Rotational constants: A = 801776.73276 B = 441123.42706 C = 284562.27743 [MHz] + Nuclear repulsion = 9.175997752373910 + + Charge = 0 + Multiplicity = 1 + Electrons = 10 + Nalpha = 5 + Nbeta = 5 + + ==> Algorithm <== + + SCF Algorithm Type is PK. + DIIS enabled. + MOM disabled. + Fractional occupation disabled. + Guess Type is SAD. + Energy threshold = 1.00e-10 + Density threshold = 1.00e-10 + Integral threshold = 0.00e+00 + + ==> Primary Basis <== + + Basis Set: CC-PVTZ + Blend: CC-PVTZ + Number of shells: 22 + Number of basis function: 58 + Number of Cartesian functions: 65 + Spherical Harmonics?: true + Max angular momentum: 3 + + ==> Integral Setup <== + + Using in-core PK algorithm. + Calculation information: + Number of atoms: 3 + Number of AO shells: 22 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Integral cutoff 1.00e-12 + Number of threads: 4 + + Performing in-core PK + Using 2929232 doubles for integral storage. + We computed 43467 shell quartets total. + Whereas there are 32131 unique shell quartets. + 35.28 percent of shell quartets recomputed by reordering. + + ==> DiskJK: Disk-Based J/K Matrices <== + + J tasked: Yes + K tasked: Yes + wK tasked: No + Memory [MiB]: 10013 + Schwarz Cutoff: 1E-12 + + OpenMP threads: 4 + + Minimum eigenvalue in the overlap matrix is 2.5222793325E-03. + Reciprocal condition number of the overlap matrix is 4.9300249924E-04. + Using symmetric orthogonalization. + + ==> Pre-Iterations <== + + SCF Guess: Superposition of Atomic Densities via on-the-fly atomic UHF (no occupation information). + + ------------------------- + Irrep Nso Nmo + ------------------------- + A' 40 40 + A" 18 18 + ------------------------- + Total 58 58 + ------------------------- + + ==> Iterations <== + + Total Energy Delta E RMS |[F,P]| + + @RHF iter SAD: -75.49982990581007 -7.54998e+01 0.00000e+00 + @RHF iter 1: -75.97834956930036 -4.78520e-01 1.02943e-02 DIIS + @RHF iter 2: -76.03093590716055 -5.25863e-02 6.65787e-03 DIIS + @RHF iter 3: -76.05650222756584 -2.55663e-02 4.97220e-04 DIIS + @RHF iter 4: -76.05689212343799 -3.89896e-04 1.21735e-04 DIIS + @RHF iter 5: -76.05691687700308 -2.47536e-05 2.52303e-05 DIIS + @RHF iter 6: -76.05691843886933 -1.56187e-06 4.87434e-06 DIIS + @RHF iter 7: -76.05691849826204 -5.93927e-08 7.73255e-07 DIIS + @RHF iter 8: -76.05691849948242 -1.22039e-09 1.18036e-07 DIIS + @RHF iter 9: -76.05691849951162 -2.92033e-11 3.30063e-08 DIIS + @RHF iter 10: -76.05691849951407 -2.44427e-12 4.32460e-09 DIIS + @RHF iter 11: -76.05691849951418 -1.13687e-13 6.29488e-10 DIIS + @RHF iter 12: -76.05691849951405 1.27898e-13 1.24971e-10 DIIS + @RHF iter 13: -76.05691849951405 0.00000e+00 2.20297e-11 DIIS + Energy and wave function converged. + + + ==> Post-Iterations <== + + Orbital Energies [Eh] + --------------------- + + Doubly Occupied: + + 1Ap -20.555582 2Ap -1.345254 3Ap -0.706810 + 4Ap -0.579150 1App -0.504609 + + Virtual: + + 5Ap 0.141858 6Ap 0.204047 7Ap 0.541684 + 8Ap 0.604408 9Ap 0.667983 2App 0.787191 + 10Ap 0.795795 11Ap 0.805775 3App 0.862663 + 4App 0.951103 12Ap 1.134401 13Ap 1.198550 + 14Ap 1.522148 15Ap 1.565635 5App 2.040152 + 16Ap 2.054906 6App 2.063289 17Ap 2.172471 + 18Ap 2.233642 19Ap 2.584353 20Ap 2.964785 + 7App 3.346991 21Ap 3.485406 8App 3.588102 + 22Ap 3.659063 9App 3.797567 23Ap 3.876020 + 24Ap 3.887132 10App 3.963392 11App 4.016808 + 25Ap 4.072523 26Ap 4.191261 12App 4.305846 + 27Ap 4.374883 28Ap 4.594173 13App 4.682107 + 29Ap 4.861363 30Ap 5.157623 31Ap 5.250128 + 32Ap 5.523857 14App 6.051665 33Ap 6.574661 + 15App 6.910012 16App 6.940886 17App 7.004761 + 34Ap 7.012527 35Ap 7.042028 36Ap 7.176123 + 18App 7.235497 37Ap 7.448982 38Ap 7.793290 + 39Ap 8.286717 40Ap 12.837042 + + Final Occupation by Irrep: + Ap App + DOCC [ 4, 1 ] + + @RHF Final Energy: -76.05691849951405 + + => Energetics <= + + Nuclear Repulsion Energy = 9.1759977523739096 + One-Electron Energy = -123.0830212545642723 + Two-Electron Energy = 37.8501050026763082 + Total Energy = -76.0569184995140404 + +Computation Completed + + +Properties will be evaluated at 0.000000, 0.000000, 0.000000 [a0] + +Properties computed using the SCF density matrix + + Nuclear Dipole Moment: [e a0] + X: 0.0066 Y: -0.9878 Z: 0.0000 + + Electronic Dipole Moment: [e a0] + X: -0.0029 Y: 0.1846 Z: 0.0000 + + Dipole Moment: [e a0] + X: 0.0036 Y: -0.8032 Z: 0.0000 Total: 0.8032 + + Dipole Moment: [D] + X: 0.0092 Y: -2.0416 Z: 0.0000 Total: 2.0416 + + +*** tstop() called on n083 at Mon Oct 24 14:59:38 2022 +Module time: + user time = 1.62 seconds = 0.03 minutes + system time = 0.01 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes +Total time: + user time = 1.62 seconds = 0.03 minutes + system time = 0.01 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + MINTS: Wrapper to libmints. + by Justin Turney + + Calculation information: + Number of threads: 4 + Number of atoms: 3 + Number of AO shells: 22 + Number of SO shells: 22 + Number of primitives: 42 + Number of atomic orbitals: 65 + Number of basis functions: 58 + + Number of irreps: 2 + Integral cutoff 0.00e+00 + Number of functions per irrep: [ 40 18 ] + + OEINTS: Overlap, kinetic, potential, dipole, and quadrupole integrals + stored in file 35. + + Computing two-electron integrals...done + Computed 711555 non-zero two-electron integrals. + Stored in file 33. + + +*** tstart() called on n083 +*** at Mon Oct 24 14:59:38 2022 + + + Wfn Parameters: + -------------------- + Wavefunction = CCSD_T + Number of irreps = 2 + Number of MOs = 58 + Number of active MOs = 57 + AO-Basis = NONE + Semicanonical = false + Reference = RHF + Print Level = 1 + + IRREP # MOs # FZDC # DOCC # SOCC # VIRT # FZVR + ----- ----- ------ ------ ------ ------ ------ + Ap 40 1 3 0 36 0 + App 18 0 1 0 17 0 + Transforming integrals... + IWL integrals will be deleted. + (OO|OO)... + Presorting SO-basis two-electron integrals. + Sorting File: SO Ints (nn|nn) nbuckets = 1 + Transforming the one-electron integrals and constructing Fock matrices + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OO|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (OV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OO)... + Starting first half-transformation. + Sorting half-transformed integrals. + First half integral transformation complete. + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|OV)... + Starting second half-transformation. + Two-electron integral transformation complete. + (VV|VV)... + Starting second half-transformation. + Two-electron integral transformation complete. + Frozen core energy = -61.31169827071533 + + Size of irrep 0 of integrals: 2.512 (MW) / 20.098 (MB) + Size of irrep 1 of integrals: 1.498 (MW) / 11.985 (MB) + Total: 4.010 (MW) / 32.083 (MB) + + Size of irrep 0 of integrals: 0.198 (MW) / 1.585 (MB) + Size of irrep 1 of integrals: 0.106 (MW) / 0.852 (MB) + Total: 0.305 (MW) / 2.437 (MB) + + Size of irrep 0 of tijab amplitudes: 0.016 (MW) / 0.127 (MB) + Size of irrep 1 of tijab amplitudes: 0.007 (MW) / 0.059 (MB) + Total: 0.023 (MW) / 0.186 (MB) + + Nuclear Rep. energy = 9.17599775237391 + SCF energy = -76.05691849951405 + One-electron energy = -41.57078924405792 + Two-electron energy = 17.64957126288529 + Reference energy = -76.05691849951405 + +*** tstop() called on n083 at Mon Oct 24 14:59:38 2022 +Module time: + user time = 1.27 seconds = 0.02 minutes + system time = 0.10 seconds = 0.00 minutes + total time = 0 seconds = 0.00 minutes +Total time: + user time = 3.44 seconds = 0.06 minutes + system time = 0.12 seconds = 0.00 minutes + total time = 1 seconds = 0.02 minutes + ************************** + * * + * CCENERGY * + * * + ************************** + + Nuclear Rep. energy (wfn) = 9.175997752373910 + SCF energy (wfn) = -76.056918499514055 + Reference energy (file100) = -76.056918499514055 + + Input parameters: + ----------------- + Wave function = CCSD_T + Reference wfn = RHF + Brueckner = No + Memory (Mbytes) = 14000.0 + Maxiter = 300 + R_Convergence = 1.0e-08 + E_Convergence = 1.0e-10 + Restart = Yes + DIIS = Yes + AO Basis = NONE + ABCD = NEW + Cache Level = 2 + Cache Type = LOW + Print Level = 1 + Num. of threads = 4 + # Amps to Print = 10 + Print MP2 Amps? = No + Analyze T2 Amps = No + Print Pair Ener = No + Local CC = No + SCS-MP2 = False + SCSN-MP2 = False + SCS-CCSD = False + +MP2 correlation energy -0.2617109429690334 + Solving CC Amplitude Equations + ------------------------------ + Iter Energy RMS T1Diag D1Diag New D1Diag D2Diag + ---- --------------------- --------- ---------- ---------- ---------- -------- + 0 -0.261710942969033 0.000e+00 0.000000 0.000000 0.000000 0.116250 + 1 -0.262027923796443 2.912e-02 0.005707 0.009298 0.009298 0.119915 + 2 -0.266874600547017 1.004e-02 0.005905 0.009457 0.009457 0.124607 + 3 -0.267584789294050 3.226e-03 0.006493 0.010595 0.010595 0.126264 + 4 -0.267577063851202 6.558e-04 0.006531 0.010687 0.010687 0.126474 + 5 -0.267598982077505 2.070e-04 0.006552 0.010777 0.010777 0.126523 + 6 -0.267599525071694 6.176e-05 0.006557 0.010814 0.010814 0.126520 + 7 -0.267599610136129 1.982e-05 0.006560 0.010829 0.010829 0.126518 + 8 -0.267599299281224 5.099e-06 0.006561 0.010834 0.010834 0.126518 + 9 -0.267599210241626 1.048e-06 0.006561 0.010835 0.010835 0.126518 + 10 -0.267599223172957 2.348e-07 0.006561 0.010835 0.010835 0.126518 + 11 -0.267599221868338 4.564e-08 0.006561 0.010835 0.010835 0.126518 + 12 -0.267599223494902 1.012e-08 0.006561 0.010835 0.010835 0.126518 + 13 -0.267599223533925 2.445e-09 0.006561 0.010835 0.010835 0.126518 + 14 -0.267599223542733 6.143e-10 0.006561 0.010835 0.010835 0.126518 + + Iterations converged. + + + Largest TIA Amplitudes: + 3 36 -0.0075234373 + 2 0 0.0058490537 + 1 9 -0.0057827998 + 3 38 -0.0049345890 + 2 5 -0.0045597284 + 2 10 -0.0041449782 + 0 4 -0.0040238015 + 2 4 0.0038567697 + 1 20 -0.0038464915 + 2 21 -0.0037828832 + + Largest TIjAb Amplitudes: + 3 3 36 36 -0.0476501616 + 2 2 4 4 -0.0295838136 + 1 1 2 2 -0.0270765483 + 2 3 4 36 0.0259190149 + 3 2 36 4 0.0259190149 + 1 1 3 3 -0.0253231278 + 1 1 6 6 -0.0226684505 + 1 3 6 36 0.0222583093 + 3 1 36 6 0.0222583093 + 2 2 2 2 -0.0221710989 + + SCF energy (wfn) = -76.056918499514055 + Reference energy (file100) = -76.056918499514055 + + Opposite-spin MP2 correlation energy = -0.198148425145033 + Same-spin MP2 correlation energy = -0.063562517824000 + Singles MP2 correlation energy = -0.000000000000000 + MP2 correlation energy = -0.261710942969033 + * MP2 total energy = -76.318629442483086 + + Opposite-spin CCSD correlation energy = -0.210925571703043 + Same-spin CCSD correlation energy = -0.056673651839690 + Singles CCSD correlation energy = 0.000000000000000 + CCSD correlation energy = -0.267599223542733 + * CCSD total energy = -76.324517723056786 + + ************************** + * * + * CCTRIPLES * + * * + ************************** + + + Wave function = CCSD_T + Reference wfn = RHF + + Nuclear Rep. energy (wfn) = 9.175997752373910 + SCF energy (wfn) = -76.056918499514055 + Reference energy (file100) = -76.056918499514055 + CCSD energy (file100) = -0.267599223542733 + Total CCSD energy (file100) = -76.324517723056786 + + Number of ijk index combinations: 20 + Memory available in words : 1750000000 + ~Words needed per explicit thread: 186624 + Number of threads for explicit ijk threading: 4 + + MKL num_threads set to 1 for explicit threading. + + (T) energy = -0.007671250899706 + * CCSD(T) total energy = -76.332188973956491 + +Giraffe The Energy is -76.332188973956 + + Psi4 stopped on: Monday, 24 October 2022 02:59PM + Psi4 wall time for execution: 0:00:03.37 + +*** Psi4 exiting successfully. Buy a developer a beer! diff --git a/test_suite/ref_data/reap_test/Disps/7/timer.dat b/test_suite/ref_data/reap_test/Disps/7/timer.dat new file mode 100644 index 00000000..30ddb225 --- /dev/null +++ b/test_suite/ref_data/reap_test/Disps/7/timer.dat @@ -0,0 +1,92 @@ + +Host: n083 + +Timers On : Mon Oct 24 14:59:36 2022 +Timers Off: Mon Oct 24 14:59:40 2022 + +Wall Time: 4.47 seconds + + Time (seconds) +Module User System Wall Calls +Total PK formation time : 0.400u 0.000s 0.188w 1 calls +HF: Form core H : 0.050u 0.000s 0.007w 1 calls +HF: Form S/X : 0.000u 0.000s 0.007w 1 calls +HF: Guess : 1.250u 0.017s 0.187w 1 calls +SAD Guess : 1.183u 0.017s 0.178w 1 calls +HF: Form G : 0.450u 0.000s 0.048w 14 calls +JK: D : 0.000u 0.000s 0.000w 14 calls +JK: USO2AO : 0.000u 0.000s 0.000w 14 calls +JK: JK : 0.450u 0.000s 0.046w 14 calls +PK computes JK : 0.450u 0.000s 0.046w 14 calls +JK: AO2USO : 0.000u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.000u 0.000s 0.007w 13 calls +DIISManager::add_entry : 0.000u 0.000s 0.001w 13 calls +DIISManager::extrapolate : 0.000u 0.000s 0.001w 13 calls +bMatrix setup : 0.000u 0.000s 0.001w 13 calls +bMatrix pseudoinverse : 0.000u 0.000s 0.000w 13 calls +New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.003w 13 calls +ccenergy : 10.100u 0.367s 1.978w 1 calls +F build : 0.133u 0.000s 0.021w 14 calls +Wmbej build : 0.200u 0.000s 0.034w 14 calls +C->Wmbej : 0.000u 0.000s 0.002w 14 calls +F->Wmbej : 0.100u 0.000s 0.020w 14 calls +E->Wmbej : 0.067u 0.000s 0.005w 14 calls +X->Wmbej : 0.033u 0.000s 0.006w 14 calls +Z : 0.033u 0.000s 0.005w 14 calls +T2 Build : 0.750u 0.117s 0.133w 14 calls +BT2 : 0.467u 0.100s 0.083w 14 calls +ABCD:new : 0.467u 0.100s 0.083w 14 calls +ABCD:S : 0.117u 0.000s 0.020w 14 calls +ABCD:A : 0.117u 0.033s 0.019w 14 calls +ABCD:axpy : 0.233u 0.067s 0.040w 14 calls +FT2 : 0.033u 0.000s 0.007w 14 calls +WmbejT2 : 0.083u 0.000s 0.011w 14 calls +CT2 : 0.083u 0.017s 0.016w 14 calls +cctriples : 0.800u 0.017s 0.151w 1 calls +ET_RHF : 0.233u 0.017s 0.037w 1 calls + +-------------------------------------------------------------------------------------- +Total PK formation time : 0.400u 0.000s 0.188w 1 calls +HF: Form core H : 0.050u 0.000s 0.007w 1 calls +HF: Form S/X : 0.000u 0.000s 0.007w 1 calls +HF: Guess : 1.250u 0.017s 0.187w 1 calls +| SAD Guess : 1.183u 0.017s 0.178w 1 calls +HF: Form G : 0.450u 0.000s 0.048w 14 calls +| JK: D : 0.000u 0.000s 0.000w 14 calls +| JK: USO2AO : 0.000u 0.000s 0.000w 14 calls +| JK: JK : 0.450u 0.000s 0.046w 14 calls +| | PK computes JK : 0.450u 0.000s 0.046w 14 calls +| JK: AO2USO : 0.000u 0.000s 0.001w 14 calls +HF: Form F : 0.000u 0.000s 0.000w 14 calls +HF: Form D : 0.000u 0.000s 0.000w 14 calls +HF: DIIS : 0.000u 0.000s 0.007w 13 calls +| DIISManager::add_entry : 0.000u 0.000s 0.001w 13 calls +| DIISManager::extrapolate : 0.000u 0.000s 0.001w 13 calls +| | bMatrix setup : 0.000u 0.000s 0.001w 13 calls +| | bMatrix pseudoinverse : 0.000u 0.000s 0.000w 13 calls +| | New vector : 0.000u 0.000s 0.000w 13 calls +HF: Form C : 0.000u 0.000s 0.003w 13 calls +ccenergy : 10.100u 0.367s 1.978w 1 calls +| F build : 0.133u 0.000s 0.021w 14 calls +| Wmbej build : 0.200u 0.000s 0.034w 14 calls +| | C->Wmbej : 0.000u 0.000s 0.002w 14 calls +| | F->Wmbej : 0.100u 0.000s 0.020w 14 calls +| | E->Wmbej : 0.067u 0.000s 0.005w 14 calls +| | X->Wmbej : 0.033u 0.000s 0.006w 14 calls +| Z : 0.033u 0.000s 0.005w 14 calls +| T2 Build : 0.750u 0.117s 0.133w 14 calls +| | BT2 : 0.467u 0.100s 0.083w 14 calls +| | | ABCD:new : 0.467u 0.100s 0.083w 14 calls +| | | | ABCD:S : 0.117u 0.000s 0.020w 14 calls +| | | | ABCD:A : 0.117u 0.033s 0.019w 14 calls +| | | | ABCD:axpy : 0.233u 0.067s 0.040w 14 calls +| | FT2 : 0.033u 0.000s 0.007w 14 calls +| | WmbejT2 : 0.083u 0.000s 0.011w 14 calls +| | CT2 : 0.083u 0.017s 0.016w 14 calls +cctriples : 0.800u 0.017s 0.151w 1 calls +| ET_RHF : 0.233u 0.017s 0.037w 1 calls + +************************************************************************************** diff --git a/test_suite/ref_data/reap_test/fc.dat b/test_suite/ref_data/reap_test/fc.dat new file mode 100644 index 00000000..83f4e8e2 --- /dev/null +++ b/test_suite/ref_data/reap_test/fc.dat @@ -0,0 +1,28 @@ + 3 9 + -0.0036590558 0.0000000000 0.0000000000 + 0.0049497814 0.0000000000 0.0000000000 + -0.0012907256 0.0000000000 0.0000000000 + 0.0000000000 0.3840603007 -0.2475778580 + 0.0000000000 -0.3518414663 0.2142987497 + 0.0000000000 -0.0322188344 0.0332791084 + 0.0000000000 -0.2475778580 0.2296372515 + 0.0000000000 0.2808569579 -0.2405594198 + 0.0000000000 -0.0332791084 0.0109221683 + 0.0049497814 0.0000000000 0.0000000000 + -0.0098995628 0.0000000000 0.0000000000 + 0.0049497814 0.0000000000 0.0000000000 + 0.0000000000 -0.3518414663 0.2808569579 + 0.0000000000 0.7036829326 0.0000000000 + 0.0000000000 -0.3518414663 -0.2808569579 + 0.0000000000 0.2142987497 -0.2405594198 + 0.0000000000 0.0000000000 0.4811188396 + 0.0000000000 -0.2142987497 -0.2405594198 + -0.0012907256 0.0000000000 0.0000000000 + 0.0049497814 0.0000000000 0.0000000000 + -0.0036590558 0.0000000000 0.0000000000 + 0.0000000000 -0.0322188344 -0.0332791084 + 0.0000000000 -0.3518414663 -0.2142987497 + 0.0000000000 0.3840603007 0.2475778580 + 0.0000000000 0.0332791084 0.0109221683 + 0.0000000000 -0.2808569579 -0.2405594198 + 0.0000000000 0.2475778580 0.2296372515 diff --git a/test_suite/ref_data/reap_test/main.py b/test_suite/ref_data/reap_test/main.py new file mode 100644 index 00000000..7711a049 --- /dev/null +++ b/test_suite/ref_data/reap_test/main.py @@ -0,0 +1,24 @@ +from concordantmodes.options import Options + +options_kwargs = { + "queue": "gen3.q,gen4.q,gen6.q,debug.q", + "program": "psi4@master", + "energy_regex": r"Giraffe The Energy is\s+(\-\d+\.\d+)", + "cart_insert": 7, + "coords": "Redundant", + "success_regex": r"beer", + "calc" : False, + "gen_disps" : False, + "off_diag": False, + "off_diag_bands": 3, + "off_diag_limit": False, + "printout_rel_e": False, + "mode_coupling_check": False, +} +options_obj = Options(**options_kwargs) + +# 3. call Concordant Modes Program +from concordantmodes.cma import ConcordantModes + +CMA_obj = ConcordantModes(options_obj) +CMA_obj.run() diff --git a/test_suite/ref_data/reap_test/template.dat b/test_suite/ref_data/reap_test/template.dat new file mode 100644 index 00000000..61774f2e --- /dev/null +++ b/test_suite/ref_data/reap_test/template.dat @@ -0,0 +1,21 @@ +# o-Benzyne preliminary computations + +memory 14 gb + +molecule { + 0 1 + units bohr +} + +set { + basis cc-pvtz + reference rhf + e_convergence 10 + d_convergence 10 + r_convergence 8 + maxiter 300 + freeze_core True +} + +e, wfn = energy('ccsd(t)', return_wfn = True) +psi4.print_out('Giraffe The Energy is %.12f \n'%(e)) diff --git a/test_suite/ref_data/reap_test/zmat b/test_suite/ref_data/reap_test/zmat new file mode 100644 index 00000000..b3d3a44a --- /dev/null +++ b/test_suite/ref_data/reap_test/zmat @@ -0,0 +1,11 @@ +ZMAT begin +1 2 +2 3 +ZMAT end + +cart begin + H -0.00000000 -1.42462540 0.99592408 + O 0.00000000 0.00000000 -0.12550454 + H -0.00000000 1.42462540 0.99592408 +cart end + diff --git a/test_suite/ref_data/s_vec_test/zmat b/test_suite/ref_data/s_vec_test/zmat new file mode 100644 index 00000000..b03c8cbc --- /dev/null +++ b/test_suite/ref_data/s_vec_test/zmat @@ -0,0 +1,29 @@ +ZMAT begin +1 2 +1 3 +1 4 +1 5 +2 6 +2 1 3 +2 1 4 +2 1 5 +3 1 4 +4 1 5 +5 1 3 +6 2 1 +6 2 1 4 T +4 1 3 5 O +3 1 2 6 Lx +3 1 2 6 Ly +5 1 2 4 L +ZMAT end + +cart begin + C -1.37507311 -0.02427686 0.00000035 + O 1.30601636 0.12070128 0.00000030 + H -2.07787395 1.90961292 -0.00007991 + H -2.10898758 -0.97927269 1.68197389 + H -2.10898055 -0.97940393 -1.68190173 + H 1.94117467 -1.57749284 -0.00000131 +cart end + diff --git a/test_suite/ref_data/simple_int_zmat b/test_suite/ref_data/simple_int_zmat new file mode 100644 index 00000000..f690af8e --- /dev/null +++ b/test_suite/ref_data/simple_int_zmat @@ -0,0 +1,17 @@ +ZMAT begin +1 2 +1 3 +1 4 +1 5 +2 6 +ZMAT end + +cart begin + C -1.37507311 -0.02427686 0.00000035 + O 1.30601636 0.12070128 0.00000030 + H -2.07787395 1.90961292 -0.00007991 + H -2.10898758 -0.97927269 1.68197389 + H -2.10898055 -0.97940393 -1.68190173 + H 1.94117467 -1.57749284 -0.00000131 +cart end + diff --git a/test_suite/ref_data/zmat_test/zmat_custom b/test_suite/ref_data/zmat_test/zmat_custom new file mode 100644 index 00000000..b03c8cbc --- /dev/null +++ b/test_suite/ref_data/zmat_test/zmat_custom @@ -0,0 +1,29 @@ +ZMAT begin +1 2 +1 3 +1 4 +1 5 +2 6 +2 1 3 +2 1 4 +2 1 5 +3 1 4 +4 1 5 +5 1 3 +6 2 1 +6 2 1 4 T +4 1 3 5 O +3 1 2 6 Lx +3 1 2 6 Ly +5 1 2 4 L +ZMAT end + +cart begin + C -1.37507311 -0.02427686 0.00000035 + O 1.30601636 0.12070128 0.00000030 + H -2.07787395 1.90961292 -0.00007991 + H -2.10898758 -0.97927269 1.68197389 + H -2.10898055 -0.97940393 -1.68190173 + H 1.94117467 -1.57749284 -0.00000131 +cart end + diff --git a/test_suite/ref_data/zmat_test/zmat_red b/test_suite/ref_data/zmat_test/zmat_red new file mode 100644 index 00000000..f690af8e --- /dev/null +++ b/test_suite/ref_data/zmat_test/zmat_red @@ -0,0 +1,17 @@ +ZMAT begin +1 2 +1 3 +1 4 +1 5 +2 6 +ZMAT end + +cart begin + C -1.37507311 -0.02427686 0.00000035 + O 1.30601636 0.12070128 0.00000030 + H -2.07787395 1.90961292 -0.00007991 + H -2.10898758 -0.97927269 1.68197389 + H -2.10898055 -0.97940393 -1.68190173 + H 1.94117467 -1.57749284 -0.00000131 +cart end + diff --git a/test_suite/ref_data/zmat_test/zmat_zmat b/test_suite/ref_data/zmat_test/zmat_zmat new file mode 100644 index 00000000..699bb963 --- /dev/null +++ b/test_suite/ref_data/zmat_test/zmat_zmat @@ -0,0 +1,18 @@ +ZMAT begin +C +O 1 +H 1 2 +H 1 2 3 +H 1 2 4 +H 2 1 3 +ZMAT end + +cart begin + C -1.37507311 -0.02427686 0.00000035 + O 1.30601636 0.12070128 0.00000030 + H -2.07787395 1.90961292 -0.00007991 + H -2.10898758 -0.97927269 1.68197389 + H -2.10898055 -0.97940393 -1.68190173 + H 1.94117467 -1.57749284 -0.00000131 +cart end + diff --git a/test_suite/test_directory_tree.py b/test_suite/test_directory_tree.py new file mode 100644 index 00000000..1d01f604 --- /dev/null +++ b/test_suite/test_directory_tree.py @@ -0,0 +1,37 @@ +import fileinput +import os +import re +import shutil +import numpy as np + +from concordantmodes.options import Options +from concordantmodes.zmat import Zmat +from concordantmodes.directory_tree import DirectoryTree + + +def test_make_input(): + os.chdir("./ref_data/dir_tree/") + + options = Options() + options.cart_insert = 9 + + zmat = Zmat(options) + zmat.zmat_read("zmat") + + dispp = zmat.cartesians_final + at = zmat.atom_list + index = options.cart_insert + + DT = DirectoryTree( + "molpro", zmat, None, None, None, None, options, None, "template.dat", None + ) + + with open("template.dat", "r") as file: + data = file.readlines() + with open("template_ref.dat", "r") as file: + reference = file.readlines() + + data = DT.make_input(data, dispp, len(at), at, index) + os.chdir("../..") + + assert data == reference diff --git a/test_suite/test_f_convert.py b/test_suite/test_f_convert.py new file mode 100644 index 00000000..0279f608 --- /dev/null +++ b/test_suite/test_f_convert.py @@ -0,0 +1,78 @@ +import numpy as np +import os +import re +from numpy.linalg import inv +from numpy import linalg as LA + +from concordantmodes.f_convert import FcConv +from concordantmodes.f_read import FcRead +from concordantmodes.options import Options +from concordantmodes.s_vectors import SVectors +from concordantmodes.ted import TED +from concordantmodes.zmat import Zmat + +np.set_printoptions(precision=9) +os.chdir("./ref_data/f_conv_test/") +FCr = FcRead("fc.dat") +FCr.run() + +options = Options() +options.coords = "Redundant" +ZMAT = Zmat(options) +output_test = ZMAT.zmat_read("zmat") +ZMAT.zmat_process(output_test) + +ZMAT.zmat_calc() + +ZMAT.zmat_compile() + +s_vec = SVectors(ZMAT, options, ZMAT.variable_dictionary_init) +s_vec.run(ZMAT.cartesians_init, True) + +TED_obj = TED(s_vec.proj, ZMAT) + +os.chdir("../../") + + +def test_f_convert2int(): + os.chdir("./ref_data/f_conv_test/") + errors = [] + + FCint = FcConv(FCr.fc_mat, s_vec, ZMAT, "internal", False, TED_obj, options.units) + FCint.run() + + FCintR = FcRead("fc_int.dat") + FCintR.run() + + if np.setdiff1d(FCint.F.round(decimals=10), FCintR.fc_mat).size: + errors.append( + "Transformed internal force constants do not match the reference." + ) + + os.chdir("../../") + assert not errors, "errors occured:\n{}".format("\n".join(errors)) + + +def test_f_convert2cart(): + os.chdir("./ref_data/f_conv_test/") + errors = [] + + FCint = FcConv(FCr.fc_mat, s_vec, ZMAT, "internal", False, TED_obj, options.units) + FCint.run() + FCcart = FcConv(FCint.F, s_vec, ZMAT, "cartesian", False, TED_obj, options.units) + FCcart.run() + + FCintC = FcRead("fc_cart.dat") + FCintC.run() + + if np.setdiff1d(FCcart.F.round(decimals=10), FCintC.fc_mat).size: + errors.append( + "Transformed internal force constants do not match the reference." + ) + + os.chdir("../../") + assert not errors, "errors occured:\n{}".format("\n".join(errors)) + + +test_f_convert2int() +test_f_convert2cart() diff --git a/test_suite/test_f_read.py b/test_suite/test_f_read.py new file mode 100644 index 00000000..8735a3f5 --- /dev/null +++ b/test_suite/test_f_read.py @@ -0,0 +1,388 @@ +import numpy as np +import os +import re +from numpy.linalg import inv +from numpy import linalg as LA + +from concordantmodes.f_read import FcRead + + +def test_f_read(): + errors = [] + + os.chdir("./ref_data/f_read_test/") + + FCr = FcRead("fc.dat") + FCr.run() + fc_ref = [ + [ + 0.4979448204, + -0.0165621609, + -5.29e-08, + -0.257132153, + 0.0156954116, + 1.7959e-06, + -0.0713232083, + 0.0845403615, + -1.12865e-05, + -0.0734882268, + -0.0363389844, + 0.064473976, + -0.0734878728, + -0.0363548847, + -0.0644635342, + -0.0225133594, + -0.0109797432, + -8.984e-07, + ], + [ + -0.0165621507, + 0.6078583599, + -3.7755e-06, + -0.0348154431, + -0.0951352547, + -6.707e-07, + 0.0697599634, + -0.297041958, + 3.29932e-05, + -0.0326783854, + -0.1075719729, + 0.0962461739, + -0.0326923287, + -0.1076191286, + -0.0962755696, + 0.0469883445, + -0.0004900456, + 8.488e-07, + ], + [ + -5.36e-08, + -3.7758e-06, + 0.55828213, + -5.054e-07, + 8.4e-08, + -0.0618671813, + -9.5628e-06, + 3.26668e-05, + -0.0502917618, + 0.0611230618, + 0.0952257474, + -0.2227533763, + -0.0611126634, + -0.0952548866, + -0.2227074273, + -2.765e-07, + 1.642e-07, + -0.0006623833, + ], + [ + -0.2571321737, + -0.0348154804, + -5.056e-07, + 0.4285031321, + -0.1281996348, + -3.0417e-06, + -0.0226770953, + -6.99692e-05, + 3.364e-07, + -0.0300077946, + -0.0028422725, + 0.0033203586, + -0.030007115, + -0.0028418823, + -0.0033193107, + -0.0886789534, + 0.1687692392, + 2.1631e-06, + ], + [ + 0.0156954014, + -0.0951352491, + 8.4e-08, + -0.128199649, + 0.5553356667, + 4.1627e-06, + 0.0382310787, + 0.0055106906, + -9.038e-07, + -0.0172866169, + 0.0044973077, + -0.0027548449, + -0.0172939829, + 0.0044970489, + 0.0027556565, + 0.1088537686, + -0.4747054648, + -4.1546e-06, + ], + [ + 1.7958e-06, + -6.705e-07, + -0.0618672721, + -3.0416e-06, + 4.1627e-06, + 0.046589097, + -2.9571e-06, + -1.0799e-06, + 0.0016569475, + 0.0288037157, + -0.0002620796, + 0.0087007536, + -0.0288004191, + 0.0002627444, + 0.0086986485, + 9.063e-07, + -3.0771e-06, + -0.0037781745, + ], + [ + -0.0713232685, + 0.0697600372, + -9.5629e-06, + -0.0226770575, + 0.0382310767, + -2.9572e-06, + 0.0929951477, + -0.0904878833, + 1.13908e-05, + 0.0046925653, + -0.0090443221, + -0.0006355818, + 0.0046923494, + -0.0090441724, + 0.0006379649, + -0.0083797364, + 0.0005852639, + -1.2537e-06, + ], + [ + 0.0845404505, + -0.2970420108, + 3.26669e-05, + -7.00323e-05, + 0.005510689, + -1.0799e-06, + -0.0904878474, + 0.3131395389, + -3.52199e-05, + 0.0037034166, + -0.0121687308, + -0.0013087421, + 0.0037055715, + -0.0121748779, + 0.001312076, + -0.0013915589, + 0.0027353917, + 2.989e-07, + ], + [ + -1.12864e-05, + 3.2993e-05, + -0.0502917911, + 3.363e-07, + -9.038e-07, + 0.0016569622, + 1.13907e-05, + -3.52197e-05, + 0.0463424661, + -0.0082228449, + 0.0259915742, + 0.0008257863, + 0.00822215, + -0.0259882714, + 0.0008322029, + 2.544e-07, + -1.724e-07, + 0.0006343735, + ], + [ + -0.0734882103, + -0.0326784072, + 0.0611230373, + -0.030007802, + -0.017286611, + 0.028803708, + 0.0046925529, + 0.0037034412, + -0.0082228366, + 0.0913391208, + 0.0437114691, + -0.0748607016, + 0.005644911, + 0.0043794386, + -0.0069302383, + 0.0018194276, + -0.0018293307, + 8.70313e-05, + ], + [ + -0.0363390042, + -0.1075719514, + 0.0952257571, + -0.0028422699, + 0.0044973082, + -0.0002620689, + -0.0090443039, + -0.0121687483, + 0.0259915762, + 0.0437114697, + 0.1068957623, + -0.1057893994, + 0.0043813907, + 0.0077678315, + -0.0136770487, + 0.0001327177, + 0.0005797978, + -0.0014888162, + ], + [ + 0.0644739817, + 0.0962461701, + -0.2227533703, + 0.0033203576, + -0.0027548441, + 0.008700742, + -0.0006355885, + -0.0013087394, + 0.0008257631, + -0.0748607035, + -0.1057894012, + 0.2343245939, + 0.0069293873, + 0.0136696542, + -0.0212987832, + 0.0007725655, + -6.28396e-05, + 0.0002010545, + ], + [ + -0.0734878565, + -0.0326923508, + -0.0611126395, + -0.0300071225, + -0.0172939769, + -0.0288004113, + 0.004692337, + 0.0037055963, + 0.0082221417, + 0.0056449111, + 0.004381392, + 0.0069293849, + 0.0913371459, + 0.0437290276, + 0.0748479441, + 0.0018205851, + -0.0018296882, + -8.64198e-05, + ], + [ + -0.0363549045, + -0.1076191068, + -0.0952548966, + -0.0028418797, + 0.0044970495, + 0.0002627338, + -0.0090441542, + -0.0121748958, + -0.0259882734, + 0.0043794373, + 0.0077678315, + 0.0136696531, + 0.0437290282, + 0.1069483958, + 0.1058218977, + 0.0001324729, + 0.0005807258, + 0.0014888854, + ], + [ + -0.0644635395, + -0.0962755655, + -0.2227074214, + -0.0033193098, + 0.0027556557, + 0.008698637, + 0.0006379716, + 0.0013120731, + 0.0008321797, + -0.0069302409, + -0.0136770498, + -0.0212987832, + 0.0748479459, + 0.1058218994, + 0.234273975, + -0.0007728273, + 6.29872e-05, + 0.0002014129, + ], + [ + -0.0225133113, + 0.0469883621, + -2.763e-07, + -0.088678997, + 0.1088537343, + 9.063e-07, + -0.008379734, + -0.0013915465, + 2.543e-07, + 0.0018194242, + 0.000132718, + 0.000772564, + 0.0018205816, + 0.0001324732, + -0.0007728258, + 0.1159320365, + -0.154715741, + -6.225e-07, + ], + [ + -0.0109797926, + -0.0004900417, + 1.641e-07, + 0.168769274, + -0.4747054587, + -3.077e-06, + 0.0005852634, + 0.0027353727, + -1.724e-07, + -0.0018293213, + 0.0005798023, + -6.28406e-05, + -0.0018296788, + 0.0005807303, + 6.29882e-05, + -0.1547157447, + 0.4712995951, + 2.9378e-06, + ], + [ + -8.981e-07, + 8.488e-07, + -0.0006622751, + 2.163e-06, + -4.1546e-06, + -0.0037782569, + -1.2538e-06, + 2.99e-07, + 0.0006344053, + 8.70119e-05, + -0.0014887909, + 0.0002010257, + -8.64006e-05, + 0.00148886, + 0.0002013841, + -6.224e-07, + 2.9378e-06, + 0.0034037169, + ], + ] + + if np.setdiff1d(np.array(fc_ref), np.array(FCr.fc_mat.tolist())).size: + errors.append("Read in force constants do not match the reference.") + + os.chdir("../../") + + assert not errors, "errors occured:\n{}".format("\n".join(errors)) + + +test_f_read() diff --git a/test_suite/test_g_matrix.py b/test_suite/test_g_matrix.py new file mode 100644 index 00000000..a5fb9ddc --- /dev/null +++ b/test_suite/test_g_matrix.py @@ -0,0 +1,368 @@ +import os +import shutil +import numpy as np +from concordantmodes.ted import TED +from numpy.linalg import inv +from numpy import linalg as LA + +from concordantmodes.g_matrix import GMatrix +from concordantmodes.options import Options +from concordantmodes.s_vectors import SVectors +from concordantmodes.zmat import Zmat + +# s_vec_test = SVectors() +os.chdir("./ref_data/s_vec_test/") +options = Options() +options.coords = "Custom" +ZMAT = Zmat(options) +output_test = ZMAT.zmat_read("zmat") +ZMAT.zmat_process(output_test) + +ZMAT.zmat_calc() + +ZMAT.zmat_compile() +os.chdir("../../") + +s_vec = SVectors(ZMAT, options, ZMAT.variable_dictionary_init) + + +def test_compute_G(): + errors = [] + s_vec.run(ZMAT.cartesians_init, True) + + g_mat = GMatrix(ZMAT, s_vec, options) + g_mat.run() + + G_ref = [ + [ + 8.0012137615603e-05, + -1.3271575551779305e-05, + -1.733387277515177e-05, + -1.7333872897079462e-05, + -1.0262858491426793e-05, + -2.1260412042957635e-05, + -2.044784880636926e-05, + -2.0447848822377254e-05, + 2.050539044712075e-05, + 2.340080666512997e-05, + 2.0505330568028897e-05, + -1.8049669809042293e-05, + 0.0, + -5.137747303285723e-05, + -1.7308696413998932e-05, + 5.4010678107746935e-06, + -2.5961314170422233e-09, + ], + [ + -1.3271575551779305e-05, + 0.0005900355754683851, + -1.4296399976875763e-05, + -1.4296279289868913e-05, + 0.0, + -1.6292755159873015e-05, + 1.7544477664565044e-05, + 1.7544405257325707e-05, + -2.0989613421619362e-05, + 1.9300123114007502e-05, + -2.0989632670269403e-05, + -1.629275514571284e-05, + 2.594512669330084e-05, + 1.0730911266116662e-05, + 4.959929686615391e-05, + -0.0005615385366782627, + 2.1609435239652588e-09, + ], + [ + -1.7333872775151766e-05, + -1.4296399976875763e-05, + 0.0005900355754683851, + -1.4721182334209907e-05, + 0.0, + 1.8433880582941456e-05, + -1.5754625096282426e-05, + 2.054168342368301e-05, + -2.1102894790400542e-05, + -2.092089186448742e-05, + 1.9438242561740824e-05, + 7.522131964582088e-06, + 4.341172451650754e-06, + 3.17762621716839e-05, + -1.4017888370536908e-05, + 2.6181713203942453e-05, + -1.8146596330623064e-05, + ], + [ + -1.7333872897079462e-05, + -1.4296279289868911e-05, + -1.4721182334209909e-05, + 0.000590035575468385, + 0.0, + 1.843381589313283e-05, + 2.0541683419093525e-05, + -1.5754625077674366e-05, + 1.9438218689788703e-05, + -2.0920891823399122e-05, + -2.1102914101490155e-05, + 7.523239255073045e-06, + -2.8299953438556667e-05, + 1.104975389722228e-05, + -1.4017888403005002e-05, + 2.618338574208273e-05, + 1.814602470303704e-05, + ], + [ + -1.0262858491426793e-05, + 0.0, + 0.0, + 0.0, + 0.0005786177282398213, + -1.2188293424714131e-05, + 5.819367397391361e-06, + 5.820224040417905e-06, + 0.0, + 0.0, + 0.0, + -1.21882934353071e-05, + 4.388377292663178e-06, + 0.0, + 1.080350807690325e-05, + -0.0006197256445261426, + 2.991547433194623e-10, + ], + [ + -2.1260412042957635e-05, + -1.6292755159873028e-05, + 1.8433880582941456e-05, + 1.843381589313283e-05, + -1.2188293424714131e-05, + 0.00015526410888330538, + 1.008508543952807e-06, + 1.0085615875097403e-06, + -6.794042099459433e-05, + -2.488577842880496e-05, + -6.79402046312875e-05, + 1.5608885155873942e-05, + -1.56356767012444e-05, + 0.00011927711813279471, + -2.0087614882258678e-05, + 0.00012250075098736954, + -1.1021854279237378e-09, + ], + [ + -2.044784880636926e-05, + 1.7544477664565044e-05, + -1.575462509628243e-05, + 2.0541683419093525e-05, + 5.819367397391361e-06, + 1.0085085439528074e-06, + 0.00015520882343367156, + -1.1222974340903128e-06, + -6.0337703483407956e-05, + -7.600865517366864e-05, + -2.5515387417627363e-05, + -7.795574097321637e-06, + -1.0405652447103298e-05, + 0.00014260659345690754, + 7.594651121357994e-05, + -2.4145470627047546e-05, + 2.8008179958126333e-05, + ], + [ + -2.0447848822377254e-05, + 1.7544405257325704e-05, + 2.054168342368301e-05, + -1.5754625077674373e-05, + 5.820224040417904e-06, + 1.0085615875097409e-06, + -1.1222974340903137e-06, + 0.00015520882403137544, + -2.551541360763238e-05, + -7.600865532329724e-05, + -6.0337452894797025e-05, + -7.796721662299592e-06, + 2.6430038156938102e-05, + 0.00012480369839812272, + 7.594651198836133e-05, + -2.4146993451759332e-05, + -2.8005291134191855e-05, + ], + [ + 2.0505390447120745e-05, + -2.098961342161936e-05, + -2.1102894790400532e-05, + 1.9438218689788703e-05, + 0.0, + -6.794042099459435e-05, + -6.0337703483407956e-05, + -2.5515413607632378e-05, + 0.0002839473088468378, + -5.7351027699044386e-05, + -5.8823204099762735e-05, + 5.852667037014427e-06, + -0.00014193838994173605, + -0.00018983104882002412, + -0.000130294100057612, + -1.8110994940382714e-05, + -9.755707717910233e-05, + ], + [ + 2.340080666512997e-05, + 1.9300123114007502e-05, + -2.0920891864487406e-05, + -2.0920891823399095e-05, + 0.0, + -2.488577842880496e-05, + -7.600865517366864e-05, + -7.600865532329722e-05, + -5.7351027699044386e-05, + 0.0002826175832834053, + -5.735123067765544e-05, + -1.0155659570280554e-05, + 0.00012889720459738848, + -0.0001931550427801955, + 0.00010829065350976893, + -3.5346560114459564e-05, + 3.858622492198788e-10, + ], + [ + 2.0505330568028897e-05, + -2.0989632670269383e-05, + 1.943824256174082e-05, + -2.1102914101490152e-05, + 0.0, + -6.794020463128752e-05, + -2.5515387417627366e-05, + -6.0337452894797025e-05, + -5.8823204099762735e-05, + -5.7351230677655424e-05, + 0.00028394725269720067, + 5.851907014140411e-06, + 1.6286126867698458e-06, + -1.4590390338594749e-05, + -0.00013029402235180076, + -1.812122873375579e-05, + 9.755470684841173e-05, + ], + [ + -1.8049669809042293e-05, + -1.629275514571284e-05, + 7.522131964582086e-06, + 7.523239255073045e-06, + -1.2188293435307112e-05, + 1.5608885155873942e-05, + -7.795574097321635e-06, + -7.796721662299592e-06, + 5.852667037014427e-06, + -1.0155659570280552e-05, + 5.851907014140411e-06, + 0.00019133151970435303, + -1.2570096248807384e-05, + 1.6284297574780148e-06, + -2.3433878879794683e-05, + 9.422913841752193e-05, + 2.418454708401888e-09, + ], + [ + 0.0, + 2.5945126693300836e-05, + 4.341172451650734e-06, + -2.829995343855667e-05, + 4.388377292663178e-06, + -1.5635676701244395e-05, + -1.0405652447103298e-05, + 2.6430038156938102e-05, + -0.00014193838994173605, + 0.00012889720459738848, + 1.6286126867698469e-06, + -1.2570096248807388e-05, + 0.00037613629694090286, + 1.0251162103899167e-05, + 0.00012861526676663816, + -4.148813184774717e-05, + -0.00022347079576791963, + ], + [ + -5.137747303285723e-05, + 1.0730911266116658e-05, + 3.177626217168388e-05, + 1.104975389722228e-05, + 0.0, + 0.00011927711813279471, + 0.00014260659345690754, + 0.0001248036983981227, + -0.00018983104882002412, + -0.0001931550427801955, + -1.4590390338594742e-05, + 1.6284297574780152e-06, + 1.0251162103899164e-05, + 0.00037493739117634066, + 7.775738820738629e-05, + 5.9588043719045846e-05, + 4.98764558273634e-05, + ], + [ + -1.7308696413998932e-05, + 4.95992968661539e-05, + -1.4017888370536903e-05, + -1.401788840300501e-05, + 1.0803508076903249e-05, + -2.0087614882258678e-05, + 7.594651121357994e-05, + 7.594651198836133e-05, + -0.000130294100057612, + 0.00010829065350976895, + -0.00013029402235180076, + -2.3433878879794683e-05, + 0.00012861526676663813, + 7.775738820738629e-05, + 0.00023654061975152612, + -7.601420558958855e-05, + 3.0217477204859694e-09, + ], + [ + 5.4010678107746935e-06, + -0.0005615385366782627, + 2.618171320394245e-05, + 2.618338574208273e-05, + -0.0006197256445261426, + 0.00012250075098736954, + -2.4145470627047546e-05, + -2.4146993451759332e-05, + -1.8110994940382717e-05, + -3.5346560114459564e-05, + -1.8121228733755784e-05, + 9.422913841752193e-05, + -4.148813184774717e-05, + 5.9588043719045846e-05, + -7.601420558958856e-05, + 0.001272209473442481, + -1.5228821651948497e-08, + ], + [ + -2.5961314170422233e-09, + 2.160943523965261e-09, + -1.8146596330623064e-05, + 1.8146024703037042e-05, + 2.991547433194621e-10, + -1.1021854279237376e-09, + 2.800817995812633e-05, + -2.8005291134191855e-05, + -9.755707717910233e-05, + 3.858622492198789e-10, + 9.755470684841173e-05, + 2.4184547084018885e-09, + -0.00022347079576791963, + 4.98764558273634e-05, + 3.0217477204859694e-09, + -1.5228821651948497e-08, + 0.0003840024568232716, + ], + ] + + if np.setdiff1d(np.array(G_ref), np.array(g_mat.G.tolist())).size: + errors.append("Computed G-matrix does not match the reference.") + + assert not errors, "errors occured:\n{}".format("\n".join(errors)) + + +test_compute_G() diff --git a/test_suite/test_gf_method.py b/test_suite/test_gf_method.py new file mode 100644 index 00000000..65e3097f --- /dev/null +++ b/test_suite/test_gf_method.py @@ -0,0 +1,76 @@ +import os +import shutil +import numpy as np +from concordantmodes.ted import TED +from numpy.linalg import inv +from numpy import linalg as LA + +from concordantmodes.f_convert import FcConv +from concordantmodes.f_read import FcRead +from concordantmodes.gf_method import GFMethod +from concordantmodes.g_matrix import GMatrix +from concordantmodes.options import Options +from concordantmodes.s_vectors import SVectors +from concordantmodes.ted import TED +from concordantmodes.zmat import Zmat + + +os.chdir("./ref_data/f_read_test/") +options = Options() +options.coords = "Redundant" +FC = FcRead("fc.dat") +FC.run() +ZMAT = Zmat(options) +output_test = ZMAT.zmat_read("zmat") +ZMAT.zmat_process(output_test) + +ZMAT.zmat_calc() + +ZMAT.zmat_compile() +s_vec = SVectors(ZMAT, options, ZMAT.variable_dictionary_init) +s_vec.run(ZMAT.cartesians_init, True) + +TED_obj = TED(s_vec.proj, ZMAT) +f_conv = FcConv(FC.fc_mat, s_vec, ZMAT, "internal", False, TED_obj, options.units) +f_conv.run() + +g_mat = GMatrix(ZMAT, s_vec, options) +g_mat.run() + +os.chdir("../../") + + +def test_gf_method(): + errors = [] + F = np.dot(TED_obj.proj.T, np.dot(f_conv.F, TED_obj.proj)) + G = np.dot(TED_obj.proj.T, np.dot(g_mat.G, TED_obj.proj)) + GF = GFMethod(G, F, options.tol, options.proj_tol, ZMAT, TED_obj) + + GF.run() + + ref_freq = [ + 347.2028653723603, + 1073.4528968170207, + 1099.7617262833578, + 1171.279871709732, + 1405.105997416581, + 1483.2609607580182, + 1489.2922133701677, + 1507.312943326969, + 2998.885895844555, + 3054.76300252422, + 3134.79345416958, + 3837.8500878962245, + ] + + if np.setdiff1d( + GF.freq.round(decimals=10), np.array(ref_freq).round(decimals=10) + ).size: + errors.append( + "Frequencies computed via the GF method do not match the reference." + ) + + assert not errors, "errors occured:\n{}".format("\n".join(errors)) + + +test_gf_method() diff --git a/test_suite/test_reap.py b/test_suite/test_reap.py new file mode 100644 index 00000000..720c9c60 --- /dev/null +++ b/test_suite/test_reap.py @@ -0,0 +1,98 @@ +import fileinput +import os +import re +import shutil +import numpy as np +from numpy.linalg import inv +from numpy import linalg as LA + +from concordantmodes.algorithm import Algorithm +from concordantmodes.f_convert import FcConv +from concordantmodes.f_read import FcRead +from concordantmodes.gf_method import GFMethod +from concordantmodes.g_matrix import GMatrix +from concordantmodes.options import Options +from concordantmodes.reap import Reap +from concordantmodes.s_vectors import SVectors +from concordantmodes.ted import TED +from concordantmodes.transf_disp import TransfDisp +from concordantmodes.zmat import Zmat + + + +def test_reap(): + os.chdir("./ref_data/reap_test/") + + options = Options() + options.cart_insert = 7 + options.coords = "Redundant" + + FC = FcRead("fc.dat") + FC.run() + ZMAT = Zmat(options) + output_test = ZMAT.zmat_read("zmat") + ZMAT.zmat_process(output_test) + + ZMAT.zmat_calc() + + ZMAT.zmat_compile() + s_vec = SVectors(ZMAT, options, ZMAT.variable_dictionary_init) + s_vec.run(ZMAT.cartesians_init, True) + + TED_obj = TED(s_vec.proj, ZMAT) + f_conv = FcConv(FC.fc_mat, s_vec, ZMAT, "internal", False, TED_obj, options.units) + f_conv.run() + + g_mat = GMatrix(ZMAT, s_vec, options) + g_mat.run() + + F = np.dot(TED_obj.proj.T, np.dot(f_conv.F, TED_obj.proj)) + G = np.dot(TED_obj.proj.T, np.dot(g_mat.G, TED_obj.proj)) + GF = GFMethod(G, F, options.tol, options.proj_tol, ZMAT, TED_obj) + + GF.run() + algo = Algorithm(len(GF.L), None, options) + algo.run() + + disps = TransfDisp( + s_vec, + ZMAT, + options.disp, + GF.L, + True, + options.disp_tol, + TED_obj, + options, + algo.indices, + ) + disps.run() + + options.program = "psi4@master" + prog = options.program + prog_name = prog.split("@")[0] + + options.energy_regex = r"Giraffe The Energy is\s+(\-\d+\.\d+)" + options.success_regex = r"beer" + os.chdir("./Disps") + reap_obj = Reap( + prog_name, + ZMAT, + disps.disp_cart, + options, + disps.n_coord, + GF.L, + algo.indices, + options.energy_regex, + options.gradient_regex, + options.molly_regex_init, + options.success_regex + ) + reap_obj.run() + + ref_en = -76.332189646734 + + os.chdir("../..") + + assert ref_en == reap_obj.m_en_array[1][1] + +test_reap() diff --git a/test_suite/test_s_vectors.py b/test_suite/test_s_vectors.py new file mode 100644 index 00000000..58cc5b36 --- /dev/null +++ b/test_suite/test_s_vectors.py @@ -0,0 +1,378 @@ +import os +import shutil +import numpy as np +from concordantmodes.ted import TED +from numpy.linalg import inv +from numpy import linalg as LA + +from concordantmodes.options import Options +from concordantmodes.s_vectors import SVectors +from concordantmodes.zmat import Zmat + +# s_vec_test = SVectors() +os.chdir("./ref_data/s_vec_test/") +options = Options() +options.coords = "Custom" +ZMAT = Zmat(options) +output_test = ZMAT.zmat_read("zmat") +ZMAT.zmat_process(output_test) + +ZMAT.zmat_calc() + +ZMAT.zmat_compile() +os.chdir("../../") + +s_vec = SVectors(ZMAT, options, ZMAT.variable_dictionary_init) + + +def test_compute_B(): + errors = [] + s_vec.run(ZMAT.cartesians_init, True) + + B_ref = [ + [ + -0.9985411813969008, + -0.05399545401680508, + 1.8621929491165038e-08, + 0.9985411813969008, + 0.05399545401680508, + -1.8621929491165038e-08, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + ], + [ + 0.3415577087474985, + -0.9398608035627904, + 3.900596035723895e-05, + 0.0, + 0.0, + 0.0, + -0.3415577087474985, + 0.9398608035627904, + -3.900596035723895e-05, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + ], + [ + 0.3547641089202045, + 0.4616317820419334, + -0.8130427570742159, + 0.0, + 0.0, + 0.0, + -0.0, + 0.0, + -0.0, + -0.3547641089202045, + -0.4616317820419334, + 0.8130427570742159, + -0.0, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + ], + [ + 0.35476071141213306, + 0.4616952225503889, + 0.813008215894836, + 0.0, + 0.0, + 0.0, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + 0.0, + -0.35476071141213306, + -0.4616952225503889, + -0.813008215894836, + 0.0, + -0.0, + -0.0, + ], + [ + -0.0, + -0.0, + 0.0, + -0.35031845615046736, + 0.9366306525410988, + 8.879876174528086e-07, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + 0.35031845615046736, + -0.9366306525410988, + -8.879876174528086e-07, + ], + [ + 0.43665768029177915, + 0.5378906147896932, + -2.094373076641207e-05, + 0.020109990734459175, + -0.3718952691709023, + 1.518324610007746e-05, + -0.45676767102623833, + -0.1659953456187909, + 5.7604846663346104e-06, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + ], + [ + 0.4609641333108443, + -0.24079588771377983, + 0.48829116070564454, + -0.009601647555628815, + 0.17756373335860715, + -0.3272452171530394, + -0.0, + 0.0, + -0.0, + -0.4513624857552155, + 0.06323215435517268, + -0.16104594355260515, + -0.0, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + ], + [ + 0.4609661757695512, + -0.24083398933658273, + -0.4882704433867143, + -0.009603016117146142, + 0.17758926796472232, + 0.32723132058954385, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + 0.0, + -0.45136315965240503, + 0.0632447213718604, + 0.16103912279717045, + 0.0, + -0.0, + -0.0, + ], + [ + -0.46645493622116607, + 0.3190266983950155, + 0.5453711713316096, + 0.0, + 0.0, + 0.0, + 0.23617089498667357, + 0.08581032766878122, + -0.4159940577960087, + 0.23028404123449253, + -0.40483702606379673, + -0.12937711353560089, + -0.0, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + ], + [ + -0.47893085698985816, + -0.6232478144797451, + 2.331592687687678e-05, + 0.0, + 0.0, + 0.0, + -0.0, + 0.0, + -0.0, + 0.2394648402104896, + 0.311634887377455, + 0.28142935543130193, + 0.23946601677936852, + 0.31161292710229016, + -0.2814526713581788, + 0.0, + -0.0, + -0.0, + ], + [ + -0.4664512927497908, + 0.3189832015190892, + -0.5453985934998381, + 0.0, + 0.0, + 0.0, + 0.23616847913998618, + 0.08584397853171949, + 0.41598848650602166, + -0.0, + -0.0, + 0.0, + 0.23028281360980465, + -0.4048271800508087, + 0.12941010699381644, + 0.0, + -0.0, + -0.0, + ], + [ + -0.020109990750872758, + 0.371895269479796, + 3.444272090279208e-07, + -0.49648405992217765, + -0.5651116988131629, + -4.872549745736358e-07, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + 0.5165940506730504, + 0.1932164293333669, + 1.42827765545715e-07, + ], + [ + 0.03202477835099334, + -0.592236305212791, + -0.4390858109849597, + -0.007240520259455062, + 0.13389964176469307, + 0.7676952977499836, + -0.0, + 0.0, + -0.0, + -0.02478421847958021, + 0.4583361302526995, + 0.24942104413833974, + -0.0, + -0.0, + -0.0, + -3.9611958069032944e-08, + 5.331953984221177e-07, + -0.5780305309033636, + ], + [ + 1.1170609973429058, + 0.15618787705641557, + -0.27882980328754736, + 0.0, + 0.0, + 0.0, + -0.33090478303729615, + -0.12024629962256966, + 0.21267824226693646, + -0.451943837195652, + 0.08550665690916032, + -0.14865252931370426, + -0.3342123771099577, + -0.12144823434300622, + 0.21480409033431516, + 0.0, + -0.0, + -0.0, + ], + [ + 0.43308727786685197, + -0.9970024739363144, + 3.980259675047393e-05, + -0.017825173693732935, + 0.32964201010264754, + -1.289762268210028e-05, + -0.0, + 0.0, + -0.0, + -0.20763125794913811, + 0.33368408881985434, + 0.09886203603841223, + -0.2076308462239809, + 0.3336763750138125, + -0.09888894101248061, + 0.0, + -0.0, + -0.0, + ], + [ + -0.06999240093020379, + 1.2943736835951978, + -2.8146299779539023e-05, + 0.2318044709269714, + -1.3702573805479346, + 3.085640008886519e-05, + 0.05233208794168659, + -0.9677804524365173, + 1.9307477182386415e-05, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + -0.2141441579384542, + 1.0436641493892542, + -2.2017577491712585e-05, + ], + [ + 3.070534810714798e-05, + -1.8873362616893622e-05, + 0.4882311973598261, + -3.6130272153417046e-05, + -2.755662315359929e-06, + -1.524373466056574, + -1.05770310325773e-06, + 1.972729482381929e-05, + 0.4845971651665981, + -0.0, + -0.0, + 0.0, + -0.0, + -0.0, + -0.0, + 6.482627149526797e-06, + 1.90173010843426e-06, + 0.5515451035301497, + ], + ] + + if np.setdiff1d(np.array(B_ref), np.array(s_vec.B.tolist())).size: + errors.append("Computed S-vectors do not match the reference.") + + assert not errors, "errors occured:\n{}".format("\n".join(errors)) diff --git a/test_suite/test_transf_disp.py b/test_suite/test_transf_disp.py new file mode 100644 index 00000000..c2f2a09d --- /dev/null +++ b/test_suite/test_transf_disp.py @@ -0,0 +1,85 @@ +import os +import shutil +import numpy as np +from concordantmodes.ted import TED +from numpy.linalg import inv +from numpy import linalg as LA + +from concordantmodes.algorithm import Algorithm +from concordantmodes.f_convert import FcConv +from concordantmodes.f_read import FcRead +from concordantmodes.gf_method import GFMethod +from concordantmodes.g_matrix import GMatrix +from concordantmodes.options import Options +from concordantmodes.s_vectors import SVectors +from concordantmodes.ted import TED +from concordantmodes.transf_disp import TransfDisp +from concordantmodes.zmat import Zmat + +os.chdir("./ref_data/f_read_test/") +options = Options() +options.coords = "Redundant" +FC = FcRead("fc.dat") +FC.run() +ZMAT = Zmat(options) +output_test = ZMAT.zmat_read("zmat") +ZMAT.zmat_process(output_test) + +ZMAT.zmat_calc() + +ZMAT.zmat_compile() +s_vec = SVectors(ZMAT, options, ZMAT.variable_dictionary_init) +s_vec.run(ZMAT.cartesians_init, True) + +TED_obj = TED(s_vec.proj, ZMAT) +f_conv = FcConv(FC.fc_mat, s_vec, ZMAT, "internal", False, TED_obj, options.units) +f_conv.run() + +g_mat = GMatrix(ZMAT, s_vec, options) +g_mat.run() + +F = np.dot(TED_obj.proj.T, np.dot(f_conv.F, TED_obj.proj)) +G = np.dot(TED_obj.proj.T, np.dot(g_mat.G, TED_obj.proj)) +GF = GFMethod(G, F, options.tol, options.proj_tol, ZMAT, TED_obj) + +GF.run() +algo = Algorithm(len(GF.L), None, options) +algo.run() + +os.chdir("../../") + + +def test_transf_disp(): + errors = [] + + disps = TransfDisp( + s_vec, + ZMAT, + options.disp, + GF.L, + True, + options.disp_tol, + TED_obj, + options, + algo.indices, + ) + disps.run() + + disp_ref = [ + [-1.3750734515947842, -0.024279474843673623, 0.0029358198799196837], + [1.3060102262375441, 0.1207018145868287, -0.0023356196755552655], + [-2.0778682947484093, 1.9096086118030944, -0.0008923821222545903], + [-2.1129906861119383, -0.9795514202073832, 1.683039582462003], + [-2.1049748848658, -0.979121064823173, -1.6808319627150445], + [1.941172931083388, -1.5774905865156932, -0.0019238478290682895], + ] + + # print(disps.p_disp[3][3].tolist()) + + if np.setdiff1d(np.array(disp_ref), disps.p_disp[3][3].tolist()).size: + errors.append("Computed Displacement does not match the reference.") + + assert not errors, "errors occured:\n{}".format("\n".join(errors)) + + +test_transf_disp() diff --git a/test_suite/test_zmat.py b/test_suite/test_zmat.py new file mode 100644 index 00000000..0e4a92cb --- /dev/null +++ b/test_suite/test_zmat.py @@ -0,0 +1,313 @@ +import numpy as np +import os +import shutil +import re + +from concordantmodes.int2cart import Int2Cart +from concordantmodes.transf_disp import TransfDisp +from concordantmodes.options import Options +from concordantmodes.zmat import Zmat + + +def test_zmat_read(): + os.chdir("./ref_data/zmat_test/") + options = Options() + + options.coords = "ZMAT" + ZMAT = Zmat(options) + + output_ref_zmat = ["C\n", "O 1\n", "H 1 2\n", "H 1 2 3\n", "H 1 2 4\n", "H 2 1 3\n"] + output_test_zmat = ZMAT.zmat_read("zmat_zmat") + zmat_bool = output_ref_zmat == output_test_zmat + + options.coords = "Redundant" + ZMAT = Zmat(options) + + output_ref_redundant = ["1 2\n", "1 3\n", "1 4\n", "1 5\n", "2 6\n"] + output_test_redundant = ZMAT.zmat_read("zmat_red") + red_bool = output_ref_redundant == output_test_redundant + + options.coords = "Custom" + ZMAT = Zmat(options) + + output_ref_custom = [ + "1 2\n", + "1 3\n", + "1 4\n", + "1 5\n", + "2 6\n", + "2 1 3\n", + "2 1 4\n", + "2 1 5\n", + "3 1 4\n", + "4 1 5\n", + "5 1 3\n", + "6 2 1\n", + "6 2 1 4 T\n", + "4 1 3 5 O\n", + "3 1 2 6 Lx\n", + "3 1 2 6 Ly\n", + "5 1 2 4 L\n", + ] + output_test_custom = ZMAT.zmat_read("zmat_custom") + custom_bool = output_ref_custom == output_test_custom + + os.chdir("../../") + + assert red_bool and zmat_bool and custom_bool + + +def test_zmat_process(): + os.chdir("./ref_data/zmat_test/") + options = Options() + errors = [] + + options.coords = "ZMAT" + ZMAT = Zmat(options) + output_test_zmat = ZMAT.zmat_read("zmat_zmat") + ZMAT.zmat_process(output_test_zmat) + ref_bond_indices = [["2", "1"], ["3", "1"], ["4", "1"], ["5", "1"], ["6", "2"]] + ref_angle_indices = [ + ["3", "1", "2"], + ["4", "1", "2"], + ["5", "1", "2"], + ["6", "2", "1"], + ] + ref_torsion_indices = [ + ["4", "1", "2", "3"], + ["5", "1", "2", "4"], + ["6", "2", "1", "3"], + ] + ref_bond_variables = ["R1", "R2", "R3", "R4", "R5"] + ref_angle_variables = ["A2", "A3", "A4", "A5"] + ref_torsion_variables = ["D3", "D4", "D5"] + if not ref_bond_indices == ZMAT.bond_indices: + errors.append("ZMAT bond indices") + if not ref_angle_indices == ZMAT.angle_indices: + errors.append("ZMAT angle indices") + if not ref_torsion_indices == ZMAT.torsion_indices: + errors.append("ZMAT torsion indices") + if not ref_bond_variables == ZMAT.bond_variables: + errors.append("ZMAT bond variables") + if not ref_angle_variables == ZMAT.angle_variables: + errors.append("ZMAT angle variables") + if not ref_torsion_variables == ZMAT.torsion_variables: + errors.append("ZMAT torsion variables") + + options.coords = "Redundant" + ZMAT = Zmat(options) + output_test_red = ZMAT.zmat_read("zmat_red") + ZMAT.zmat_process(output_test_red) + ref_bond_indices = np.array( + [["1", "2"], ["1", "3"], ["1", "4"], ["1", "5"], ["2", "6"]] + ) + ref_angle_indices = np.array( + [ + ["2", "1", "3"], + ["2", "1", "4"], + ["2", "1", "5"], + ["1", "2", "6"], + ["3", "1", "4"], + ["3", "1", "5"], + ["4", "1", "5"], + ] + ) + ref_torsion_indices = np.array( + [ + ["3", "1", "2", "4"], + ["3", "1", "2", "5"], + ["3", "1", "2", "6"], + ["2", "1", "3", "4"], + ["2", "1", "3", "5"], + ["4", "1", "2", "5"], + ["4", "1", "2", "6"], + ["2", "1", "4", "3"], + ["2", "1", "4", "5"], + ["5", "1", "2", "6"], + ["2", "1", "5", "3"], + ["2", "1", "5", "4"], + ["4", "1", "3", "5"], + ["3", "1", "4", "5"], + ["3", "1", "5", "4"], + ] + ) + ref_bond_variables = ["R1", "R2", "R3", "R4", "R5"] + ref_angle_variables = ["A1", "A2", "A3", "A4", "A5", "A6", "A7"] + ref_torsion_variables = [ + "D1", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "D10", + "D11", + "D12", + "D13", + "D14", + "D15", + ] + # print(np.setdiff1d(ref_bond_indices,ZMAT.bond_indices)) + if np.setdiff1d(ref_bond_indices, ZMAT.bond_indices).size: + errors.append("Redundant bond indices") + if np.setdiff1d(ref_angle_indices, ZMAT.angle_indices).size: + errors.append("Redundant angle indices") + if np.setdiff1d(ref_torsion_indices, ZMAT.torsion_indices).size: + errors.append("Redundant torsion indices") + if np.setdiff1d(ref_bond_variables, ZMAT.bond_variables).size: + errors.append("Redundant bond variables") + if np.setdiff1d(ref_angle_variables, ZMAT.angle_variables).size: + errors.append("Redundant angle variables") + if np.setdiff1d(ref_torsion_variables, ZMAT.torsion_variables).size: + errors.append("Redundant torsion variables") + + options.coords = "Custom" + ZMAT = Zmat(options) + output_test_red = ZMAT.zmat_read("zmat_custom") + ZMAT.zmat_process(output_test_red) + ref_bond_indices = [("1", "2"), ("1", "3"), ("1", "4"), ("1", "5"), ("2", "6")] + ref_angle_indices = [ + ("2", "1", "3"), + ("2", "1", "4"), + ("2", "1", "5"), + ("3", "1", "4"), + ("4", "1", "5"), + ("5", "1", "3"), + ("6", "2", "1"), + ] + ref_torsion_indices = [("6", "2", "1", "4")] + ref_oop_indices = [("4", "1", "3", "5")] + ref_lin_indices = [("5", "1", "2", "4")] + ref_linx_indices = [("3", "1", "2", "6")] + ref_liny_indices = [("3", "1", "2", "6")] + ref_bond_variables = ["R1", "R2", "R3", "R4", "R5"] + ref_angle_variables = ["A1", "A2", "A3", "A4", "A5", "A6", "A7"] + ref_torsion_variables = ["D1"] + ref_oop_variables = ["O1"] + ref_lin_variables = ["L1"] + ref_linx_variables = ["Lx1"] + ref_liny_variables = ["Ly1"] + + if np.setdiff1d(ref_bond_indices, ZMAT.bond_indices).size: + errors.append("Redundant bond indices") + if np.setdiff1d(ref_angle_indices, ZMAT.angle_indices).size: + errors.append("Redundant angle indices") + if np.setdiff1d(ref_torsion_indices, ZMAT.torsion_indices).size: + errors.append("Redundant torsion indices") + if np.setdiff1d(ref_oop_indices, ZMAT.oop_indices).size: + errors.append("Redundant out-of-plane indices") + if np.setdiff1d(ref_lin_indices, ZMAT.lin_indices).size: + errors.append("Redundant lin indices") + if np.setdiff1d(ref_linx_indices, ZMAT.linx_indices).size: + errors.append("Redundant linx indices") + if np.setdiff1d(ref_liny_indices, ZMAT.liny_indices).size: + errors.append("Redundant liny indices") + if not ref_bond_variables == ZMAT.bond_variables: + errors.append("Redundant bond variables") + if not ref_angle_variables == ZMAT.angle_variables: + errors.append("Redundant angle variables") + if not ref_torsion_variables == ZMAT.torsion_variables: + errors.append("Redundant torsion variables") + if not ref_oop_variables == ZMAT.oop_variables: + errors.append("Redundant out-of-plane variables") + if not ref_lin_variables == ZMAT.lin_variables: + errors.append("Redundant lin variables") + if not ref_linx_variables == ZMAT.linx_variables: + errors.append("Redundant linx variables") + if not ref_linx_variables == ZMAT.linx_variables: + errors.append("Redundant linx variables") + + os.chdir("../../") + + assert not errors, "errors occured:\n{}".format("\n".join(errors)) + + +# Only need to test the Custom internal coordinates +def test_zmat_calc(): + os.chdir("./ref_data/zmat_test/") + options = Options() + errors = [] + + options.coords = "Custom" + ZMAT = Zmat(options) + output_test_red = ZMAT.zmat_read("zmat_custom") + ZMAT.zmat_process(output_test_red) + + ZMAT.zmat_calc() + + var_dict_ref = { + "R1": 2.685006407296404, + "R2": 2.0576342503795035, + "R3": 2.068739344106188, + "R4": 2.068739340043222, + "R5": 1.8130883453288267, + "A1": 106.8765896566676, + "A2": 112.2824413394013, + "A3": 112.28244150454864, + "A4": 108.22376477570377, + "A5": 108.7851835780631, + "A6": 108.22360552816234, + "A7": 107.41157765289944, + "D1": 61.480653653479756, + "O1": 57.2185581514689, + "L1": -45.926274971749756, + "Lx1": -54.67048011096265, + "Ly1": -0.0022793163188044303, + } + var_dict_custom = ZMAT.variable_dictionary_final + + if np.setdiff1d(var_dict_ref, var_dict_custom).size: + errors.append("Custom variables do not match.") + + os.chdir("../../") + + assert not errors, "errors occured:\n{}".format("\n".join(errors)) + + +# Only need to test the Custom internal coordinates +def test_zmat_compile(): + os.chdir("./ref_data/zmat_test/") + options = Options() + errors = [] + + options.coords = "Custom" + ZMAT = Zmat(options) + output_test_custom = ZMAT.zmat_read("zmat_custom") + ZMAT.zmat_process(output_test_custom) + + ZMAT.zmat_calc() + + ZMAT.zmat_compile() + + print(ZMAT.index_dictionary) + + index_dict_ref = { + "R1": ("1", "2"), + "R2": ("1", "3"), + "R3": ("1", "4"), + "R4": ("1", "5"), + "R5": ("2", "6"), + "A1": ("2", "1", "3"), + "A2": ("2", "1", "4"), + "A3": ("2", "1", "5"), + "A4": ("3", "1", "4"), + "A5": ("4", "1", "5"), + "A6": ("5", "1", "3"), + "A7": ("6", "2", "1"), + "D1": ("6", "2", "1", "4"), + "O1": ("4", "1", "3", "5"), + "L1": ("5", "1", "2", "4"), + "Lx1": ("3", "1", "2", "6"), + "Ly1": ("3", "1", "2", "6"), + } + index_dict_custom = ZMAT.index_dictionary + + if np.setdiff1d(index_dict_ref, index_dict_custom).size: + errors.append("Custom indices do not match.") + + os.chdir("../../") + + assert not errors, "errors occured:\n{}".format("\n".join(errors)) diff --git a/trans_disp.py b/transf_disp.py similarity index 99% rename from trans_disp.py rename to transf_disp.py index 6d3115ac..6be44c3c 100644 --- a/trans_disp.py +++ b/transf_disp.py @@ -4,7 +4,7 @@ from concordantmodes.s_vectors import SVectors as s_vec -class TransDisp(object): +class TransfDisp(object): """ The purpose of this script is to perform an iterative transformation between internal coordinate displacements and cartesian displacements, diff --git a/zmat.py b/zmat.py index 12ad765f..d26f3c27 100644 --- a/zmat.py +++ b/zmat.py @@ -4,7 +4,7 @@ import re from . import masses from concordantmodes.int2cart import Int2Cart -from concordantmodes.trans_disp import TransDisp +from concordantmodes.transf_disp import TransfDisp class Zmat(object): @@ -15,34 +15,53 @@ def __init__(self, options): self.Bohr_Ang = 0.529177210903 def run(self, zmat_name="zmat"): + + # Read in the ZMAT file + zmat_output = self.zmat_read(zmat_name) + + # Process the read in information + self.zmat_process(zmat_output) + + # Calculate internal coordinate values from reference cartesian coordinates + self.zmat_calc() + + # + self.zmat_compile() + + # + self.zmat_print() + + + + def zmat_read(self,zmat_name): # Define some regexes - zmat_begin_regex = re.compile(r"ZMAT begin") - zmat_end_regex = re.compile(r"ZMAT end") + self.zmat_begin_regex = re.compile(r"ZMAT begin") + self.zmat_end_regex = re.compile(r"ZMAT end") # ZMAT regexes - first_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s*\n") - second_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s*\n") - third_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s*\n") - full_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s+(\d+)\s*\n") + self.first_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s*\n") + self.second_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s*\n") + self.third_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s*\n") + self.full_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s+(\d+)\s*\n") # Custom int coord regexes - bond_regex = re.compile("^\s*(\d+)\s+(\d+)\s*\n") - angle_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s*\n") - torsion_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*T\s*\n") - oop_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*O\s*\n") - lin_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*L\s*\n") - linx_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*Lx\s*\n") - liny_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*Ly\s*\n") + self.bond_regex = re.compile("^\s*(\d+)\s+(\d+)\s*\n") + self.angle_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s*\n") + self.torsion_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*T\s*\n") + self.oop_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*O\s*\n") + self.lin_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*L\s*\n") + self.linx_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*Lx\s*\n") + self.liny_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*Ly\s*\n") # Cartesian regexes - cart_begin_regex = re.compile(r"cart begin") - cart_end_regex = re.compile(r"cart end") + self.cart_begin_regex = re.compile(r"cart begin") + self.cart_end_regex = re.compile(r"cart end") s = "[A-Za-z]+[0-9]*\s+(-?\d+\.\d+)\s+(-?\d+\.\d+)\s+(-?\d+\.\d+)\s*\n" - cartesian_regex = re.compile(s) + self.cartesian_regex = re.compile(s) s = "([A-Za-z]+[0-9]*)\s+-?\d+\.\d+\s+-?\d+\.\d+\s+-?\d+\.\d+\s*\n" - cartesian_atom_regex = re.compile(s) - divider_regex = re.compile("^\s*\-\-\-\s*\n") + self.cartesian_atom_regex = re.compile(s) + self.divider_regex = re.compile("^\s*\-\-\-\s*\n") + - # Read in the ZMAT file with open(zmat_name, "r") as file: output = file.readlines() @@ -53,13 +72,13 @@ def run(self, zmat_name="zmat"): self.atom_list = [] for i in range(len(output)): - beg_cart = re.search(cart_begin_regex, output[i]) + beg_cart = re.search(self.cart_begin_regex, output[i]) if beg_cart: cart_range.append(i) break for i in range(len(output) - cart_range[0]): - end_cart = re.search(cart_end_regex, output[i + cart_range[0]]) + end_cart = re.search(self.cart_end_regex, output[i + cart_range[0]]) if end_cart: cart_range.append(i + cart_range[0]) break @@ -67,28 +86,28 @@ def run(self, zmat_name="zmat"): cart_output = output[cart_range[0] : cart_range[1]].copy() for i in range(len(cart_output)): - divider = re.search(divider_regex, cart_output[i]) - if divider: + self.divider = re.search(self.divider_regex, cart_output[i]) + if self.divider: divide_index = i break - if divider: + if self.divider: cart_output_init = cart_output[:divide_index].copy() cart_output_final = cart_output[divide_index + 1 :].copy() else: cart_output_init = cart_output.copy() for i in range(len(cart_output_init)): - if re.search(cartesian_regex, cart_output_init[i]): - temp = re.findall(cartesian_regex, cart_output_init[i]) - atom = re.findall(cartesian_atom_regex, cart_output_init[i]) + if re.search(self.cartesian_regex, cart_output_init[i]): + temp = re.findall(self.cartesian_regex, cart_output_init[i]) + atom = re.findall(self.cartesian_atom_regex, cart_output_init[i]) self.cartesians_init.append(temp[0]) self.atom_list.append(atom[0]) self.cartesians_init = np.array(self.cartesians_init).astype(float) - if divider: + if self.divider: for i in range(len(cart_output_final)): - if re.search(cartesian_regex, cart_output_final[i]): - temp = re.findall(cartesian_regex, cart_output_final[i]) + if re.search(self.cartesian_regex, cart_output_final[i]): + temp = re.findall(self.cartesian_regex, cart_output_final[i]) self.cartesians_final.append(temp[0]) self.cartesians_final = np.array(self.cartesians_final).astype(float) else: @@ -102,18 +121,24 @@ def run(self, zmat_name="zmat"): zmat_range = [] for i in range(len(output)): - beg_zmat = re.search(zmat_begin_regex, output[i]) + beg_zmat = re.search(self.zmat_begin_regex, output[i]) if beg_zmat: zmat_range.append(i) for i in range(len(output) - zmat_range[0]): - end_zmat = re.search(zmat_end_regex, output[i + zmat_range[0]]) + end_zmat = re.search(self.zmat_end_regex, output[i + zmat_range[0]]) if end_zmat: zmat_range.append(i + zmat_range[0]) break - zmat_output = output[zmat_range[0] : zmat_range[1]].copy() + zmat_output = output[zmat_range[0] + 1 : zmat_range[1]].copy() + + # print(output) + # print(zmat_output) + return zmat_output + + def zmat_process(self,zmat_output): # Initialize necessary lists self.bond_indices = [] self.bond_variables = [] @@ -138,17 +163,17 @@ def run(self, zmat_name="zmat"): # This code reaps ZMAT data for i in range(len(zmat_output)): # This case if we are at the first atom of the ZMAT - if re.search(first_atom_regex, zmat_output[i]) and count < 1: + if re.search(self.first_atom_regex, zmat_output[i]) and count < 1: first_index = i count += 1 # Second atom of the ZMAT, will have one bond term - if re.search(second_atom_regex, zmat_output[i]): - List = re.findall(second_atom_regex, zmat_output[i])[0] + if re.search(self.second_atom_regex, zmat_output[i]): + List = re.findall(self.second_atom_regex, zmat_output[i])[0] self.bond_indices.append([str(i - first_index + 1), List[1]]) self.bond_variables.append("R" + str(i - first_index)) # Third atom of the ZMAT, will have bond and angle term - if re.search(third_atom_regex, zmat_output[i]): - List = re.findall(third_atom_regex, zmat_output[i])[0] + if re.search(self.third_atom_regex, zmat_output[i]): + List = re.findall(self.third_atom_regex, zmat_output[i])[0] self.bond_indices.append([str(i - first_index + 1), List[1]]) self.bond_variables.append("R" + str(i - first_index)) self.angle_indices.append( @@ -157,8 +182,8 @@ def run(self, zmat_name="zmat"): self.angle_variables.append("A" + str(i - first_index)) # All remaining ZMAT atoms, will have bond, angle, and torsion # term - if re.search(full_atom_regex, zmat_output[i]): - List = re.findall(full_atom_regex, zmat_output[i])[0] + if re.search(self.full_atom_regex, zmat_output[i]): + List = re.findall(self.full_atom_regex, zmat_output[i])[0] self.bond_indices.append([str(i - first_index + 1), List[1]]) self.bond_variables.append("R" + str(i - first_index)) self.angle_indices.append( @@ -174,7 +199,7 @@ def run(self, zmat_name="zmat"): if self.options.interatomic_distance: self.bond_indices = np.array([]) indices = [] - transdisp_inter = TransDisp( + transdisp_inter = TransfDisp( 1, self, 1, @@ -208,12 +233,13 @@ def run(self, zmat_name="zmat"): print(self.bond_indices) else: for i in range(len(zmat_output)): - if re.search(bond_regex, zmat_output[i]): + if re.search(self.bond_regex, zmat_output[i]): count += 1 - List = re.findall(bond_regex, zmat_output[i])[0] + List = re.findall(self.bond_regex, zmat_output[i])[0] self.bond_indices.append(List) self.bond_variables.append("R" + str(count)) self.bond_indices = np.array(self.bond_indices) + # Form all possible angles from bonds self.angle_indices = np.array([]) count = 0 @@ -258,44 +284,44 @@ def run(self, zmat_name="zmat"): Sum = 0 blank = 0 for i in range(len(zmat_output)): - if re.search(bond_regex, zmat_output[i]): - List = re.findall(bond_regex, zmat_output[i])[0] + if re.search(self.bond_regex, zmat_output[i]): + List = re.findall(self.bond_regex, zmat_output[i])[0] self.bond_indices.append(List) self.bond_variables.append( "R" + str(i + 1 - Sum + len(self.bond_variables)) ) - elif re.search(angle_regex, zmat_output[i]): - List = re.findall(angle_regex, zmat_output[i])[0] + elif re.search(self.angle_regex, zmat_output[i]): + List = re.findall(self.angle_regex, zmat_output[i])[0] self.angle_indices.append(List) self.angle_variables.append( "A" + str(i + 1 - Sum + len(self.angle_variables)) ) - elif re.search(torsion_regex, zmat_output[i]): - List = re.findall(torsion_regex, zmat_output[i])[0] + elif re.search(self.torsion_regex, zmat_output[i]): + List = re.findall(self.torsion_regex, zmat_output[i])[0] self.torsion_indices.append(List) self.torsion_variables.append( "D" + str(i + 1 - Sum + len(self.torsion_variables)) ) - elif re.search(oop_regex, zmat_output[i]): - List = re.findall(oop_regex, zmat_output[i])[0] + elif re.search(self.oop_regex, zmat_output[i]): + List = re.findall(self.oop_regex, zmat_output[i])[0] self.oop_indices.append(List) self.oop_variables.append( "O" + str(i + 1 - Sum + len(self.oop_variables)) ) - elif re.search(lin_regex, zmat_output[i]): - List = re.findall(lin_regex, zmat_output[i])[0] + elif re.search(self.lin_regex, zmat_output[i]): + List = re.findall(self.lin_regex, zmat_output[i])[0] self.lin_indices.append(List) self.lin_variables.append( "L" + str(i + 1 - Sum + len(self.lin_variables)) ) - elif re.search(linx_regex, zmat_output[i]): - List = re.findall(linx_regex, zmat_output[i])[0] + elif re.search(self.linx_regex, zmat_output[i]): + List = re.findall(self.linx_regex, zmat_output[i])[0] self.linx_indices.append(List) self.linx_variables.append( "Lx" + str(i + 1 - Sum + len(self.linx_variables)) ) - elif re.search(liny_regex, zmat_output[i]): - List = re.findall(liny_regex, zmat_output[i])[0] + elif re.search(self.liny_regex, zmat_output[i]): + List = re.findall(self.liny_regex, zmat_output[i])[0] self.liny_indices.append(List) self.liny_variables.append( "Ly" + str(i + 1 - Sum + len(self.liny_variables)) @@ -313,11 +339,12 @@ def run(self, zmat_name="zmat"): + blank ) - # This code utilizes the INTC function from the TransDisp module to + def zmat_calc(self): + # This code utilizes the INTC function from the TransfDisp module to # calculate the initial variable values from the cartesian # coordinates. indices = [] - transdisp = TransDisp( + transdisp = TransfDisp( 1, self, 1, 1, False, self.disp_tol, np.array([]), self.options, indices ) I = np.eye( @@ -329,8 +356,8 @@ def run(self, zmat_name="zmat"): + len(self.linx_indices) + len(self.liny_indices) ) - variables1 = transdisp.int_c(self.cartesians_init, I, I) - variables2 = transdisp.int_c(self.cartesians_final, I, I) + self.variables1 = transdisp.int_c(self.cartesians_init, I, I) + self.variables2 = transdisp.int_c(self.cartesians_final, I, I) for i in range( len(self.angle_indices) + len(self.torsion_indices) @@ -339,19 +366,19 @@ def run(self, zmat_name="zmat"): + len(self.linx_indices) + len(self.liny_indices) ): - variables1[len(self.bond_indices) + i] *= 180.0 / np.pi - variables2[len(self.bond_indices) + i] *= 180.0 / np.pi - variables = np.append( + self.variables1[len(self.bond_indices) + i] *= 180.0 / np.pi + self.variables2[len(self.bond_indices) + i] *= 180.0 / np.pi + self.variables = np.append( self.bond_variables, np.append(self.angle_variables, self.torsion_variables) ) if len(self.oop_variables): - variables = np.append(variables, self.oop_variables) + self.variables = np.append(self.variables, self.oop_variables) if len(self.lin_variables): - variables = np.append(variables, self.lin_variables) + self.variables = np.append(self.variables, self.lin_variables) if len(self.linx_variables): - variables = np.append(variables, self.linx_variables) + self.variables = np.append(self.variables, self.linx_variables) if len(self.liny_variables): - variables = np.append(variables, self.liny_variables) + self.variables = np.append(self.variables, self.liny_variables) # This code is useful for checking the Redundant coordinate # generation process. @@ -365,12 +392,12 @@ def run(self, zmat_name="zmat"): indices.append(self.torsion_indices[i].tolist()) # print(indices) - for i in range(len(variables1)): - self.variable_dictionary_init[variables[i]] = variables1[i] + for i in range(len(self.variables1)): + self.variable_dictionary_init[self.variables[i]] = self.variables1[i] - if divider: - for i in range(len(variables2)): - self.variable_dictionary_final[variables[i]] = variables2[i] + if self.divider: + for i in range(len(self.variables2)): + self.variable_dictionary_final[self.variables[i]] = self.variables2[i] else: self.variable_dictionary_final = self.variable_dictionary_init.copy() # And now we must temper the torsion angles! For consistency's sake @@ -446,7 +473,8 @@ def run(self, zmat_name="zmat"): >= 270.0 ): self.variable_dictionary_final[self.torsion_variables[i]] -= 360.0 - + + def zmat_compile(self): # The masses are assigned to the respective atom from the masses.py file self.masses = [masses.get_mass(label) for label in self.atom_list] for i in range(len(self.masses)): @@ -480,38 +508,39 @@ def run(self, zmat_name="zmat"): self.index_dictionary["Lx" + str(i + 1)] = self.linx_indices[i] for i in range(len(self.liny_indices)): self.index_dictionary["Ly" + str(i + 1)] = self.liny_indices[i] - + + def zmat_print(self): # Print off the internal coordinate and its value in Bohr/Degree print("Initial Geometric Internal Coordinate Values:") - for i in range(len(variables)): + for i in range(len(self.variables)): print( - str(self.index_dictionary[variables[i]]) + str(self.index_dictionary[self.variables[i]]) + " " - + variables[i] + + self.variables[i] + " = " - + str(self.variable_dictionary_init[variables[i]]) + + str(self.variable_dictionary_init[self.variables[i]]) ) # if self.options.coords.upper() == "REDUNDANT": # print(indices[i]) print("Final Geometric Internal Coordinate Values:") - for i in range(len(variables)): + for i in range(len(self.variables)): print( - str(self.index_dictionary[variables[i]]) + str(self.index_dictionary[self.variables[i]]) + " " - + variables[i] + + self.variables[i] + " = " - + str(self.variable_dictionary_final[variables[i]]) + + str(self.variable_dictionary_final[self.variables[i]]) ) # if self.options.coords.upper() == "REDUNDANT": # print(indices[i]) print("Final - Initial Geometric Internal Coordinate Values:") - for i in range(len(variables)): + for i in range(len(self.variables)): print( - variables[i] + self.variables[i] + " = " + str( - self.variable_dictionary_final[variables[i]] - - self.variable_dictionary_init[variables[i]] + self.variable_dictionary_final[self.variables[i]] + - self.variable_dictionary_init[self.variables[i]] ) ) # if self.options.coords.upper() == "REDUNDANT": @@ -520,8 +549,8 @@ def run(self, zmat_name="zmat"): Sum = 0 for i in range(len(self.bond_indices)): Sum += ( - self.variable_dictionary_final[variables[i]] - - self.variable_dictionary_init[variables[i]] + self.variable_dictionary_final[self.variables[i]] + - self.variable_dictionary_init[self.variables[i]] ) ** 2 # print("squared sum: ") From be18bf4ae5cd124a82d784c798382d918ab87af1 Mon Sep 17 00:00:00 2001 From: MitchLahm Date: Tue, 13 Dec 2022 16:07:53 -0500 Subject: [PATCH 2/7] Removed pycache files --- __pycache__/__init__.cpython-35.pyc | Bin 141 -> 0 bytes __pycache__/__init__.cpython-39.pyc | Bin 149 -> 0 bytes __pycache__/algorithm.cpython-35.pyc | Bin 2540 -> 0 bytes __pycache__/algorithm.cpython-39.pyc | Bin 2302 -> 0 bytes __pycache__/cma.cpython-39.pyc | Bin 10193 -> 0 bytes __pycache__/directory_tree.cpython-39.pyc | Bin 3705 -> 0 bytes __pycache__/f_convert.cpython-39.pyc | Bin 2408 -> 0 bytes __pycache__/f_read.cpython-39.pyc | Bin 1136 -> 0 bytes __pycache__/force_constant.cpython-39.pyc | Bin 2034 -> 0 bytes __pycache__/g_matrix.cpython-39.pyc | Bin 1184 -> 0 bytes __pycache__/gf_method.cpython-39.pyc | Bin 1999 -> 0 bytes __pycache__/int2cart.cpython-39.pyc | Bin 3467 -> 0 bytes __pycache__/masses.cpython-39.pyc | Bin 50973 -> 0 bytes __pycache__/options.cpython-39.pyc | Bin 2030 -> 0 bytes __pycache__/reap.cpython-39.pyc | Bin 5795 -> 0 bytes __pycache__/rmsd.cpython-39.pyc | Bin 11180 -> 0 bytes __pycache__/s_vectors.cpython-39.pyc | Bin 14226 -> 0 bytes __pycache__/sapelo_template.cpython-39.pyc | Bin 2153 -> 0 bytes __pycache__/submit.cpython-39.pyc | Bin 1906 -> 0 bytes __pycache__/ted.cpython-39.pyc | Bin 6325 -> 0 bytes __pycache__/trans_disp.cpython-39.pyc | Bin 9586 -> 0 bytes __pycache__/transf_disp.cpython-39.pyc | Bin 9601 -> 0 bytes __pycache__/vulcan_template.cpython-39.pyc | Bin 4179 -> 0 bytes __pycache__/zmat.cpython-39.pyc | Bin 11206 -> 0 bytes ...t_directory_tree.cpython-39-pytest-7.2.0.pyc | Bin 1519 -> 0 bytes .../test_f_convert.cpython-39-pytest-7.2.0.pyc | Bin 2573 -> 0 bytes .../test_f_read.cpython-39-pytest-7.2.0.pyc | Bin 4217 -> 0 bytes .../test_g_matrix.cpython-39-pytest-7.2.0.pyc | Bin 4061 -> 0 bytes .../test_gf_method.cpython-39-pytest-7.2.0.pyc | Bin 2261 -> 0 bytes .../test_reap.cpython-39-pytest-7.2.0.pyc | Bin 2736 -> 0 bytes .../test_s_vectors.cpython-39-pytest-7.2.0.pyc | Bin 3843 -> 0 bytes .../test_ted.cpython-39-pytest-7.2.0.pyc | Bin 423 -> 0 bytes ...test_transf_disp.cpython-39-pytest-7.2.0.pyc | Bin 2594 -> 0 bytes .../test_zmat.cpython-39-pytest-7.2.0.pyc | Bin 7454 -> 0 bytes 34 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 __pycache__/__init__.cpython-35.pyc delete mode 100644 __pycache__/__init__.cpython-39.pyc delete mode 100644 __pycache__/algorithm.cpython-35.pyc delete mode 100644 __pycache__/algorithm.cpython-39.pyc delete mode 100644 __pycache__/cma.cpython-39.pyc delete mode 100644 __pycache__/directory_tree.cpython-39.pyc delete mode 100644 __pycache__/f_convert.cpython-39.pyc delete mode 100644 __pycache__/f_read.cpython-39.pyc delete mode 100644 __pycache__/force_constant.cpython-39.pyc delete mode 100644 __pycache__/g_matrix.cpython-39.pyc delete mode 100644 __pycache__/gf_method.cpython-39.pyc delete mode 100644 __pycache__/int2cart.cpython-39.pyc delete mode 100644 __pycache__/masses.cpython-39.pyc delete mode 100644 __pycache__/options.cpython-39.pyc delete mode 100644 __pycache__/reap.cpython-39.pyc delete mode 100644 __pycache__/rmsd.cpython-39.pyc delete mode 100644 __pycache__/s_vectors.cpython-39.pyc delete mode 100644 __pycache__/sapelo_template.cpython-39.pyc delete mode 100644 __pycache__/submit.cpython-39.pyc delete mode 100644 __pycache__/ted.cpython-39.pyc delete mode 100644 __pycache__/trans_disp.cpython-39.pyc delete mode 100644 __pycache__/transf_disp.cpython-39.pyc delete mode 100644 __pycache__/vulcan_template.cpython-39.pyc delete mode 100644 __pycache__/zmat.cpython-39.pyc delete mode 100644 test_suite/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc delete mode 100644 test_suite/__pycache__/test_f_convert.cpython-39-pytest-7.2.0.pyc delete mode 100644 test_suite/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc delete mode 100644 test_suite/__pycache__/test_g_matrix.cpython-39-pytest-7.2.0.pyc delete mode 100644 test_suite/__pycache__/test_gf_method.cpython-39-pytest-7.2.0.pyc delete mode 100644 test_suite/__pycache__/test_reap.cpython-39-pytest-7.2.0.pyc delete mode 100644 test_suite/__pycache__/test_s_vectors.cpython-39-pytest-7.2.0.pyc delete mode 100644 test_suite/__pycache__/test_ted.cpython-39-pytest-7.2.0.pyc delete mode 100644 test_suite/__pycache__/test_transf_disp.cpython-39-pytest-7.2.0.pyc delete mode 100644 test_suite/__pycache__/test_zmat.cpython-39-pytest-7.2.0.pyc diff --git a/__pycache__/__init__.cpython-35.pyc b/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index 99fac7340868346aba79fefb51fae335273fce08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmWgV<>hi$c1~gdg2x~N1{i@12OutH0TL+;48fX=ek&P@K*9*(mz91-er~FMS!qsk zVxE3(YL1zSnTfG}L1J=tVtQ(^esX?Za(+=tVqQsZehQEuAD@|*SrQ+wS5SG2!v-i; Nnv-e=GP4+n82~f_Ao~CS diff --git a/__pycache__/__init__.cpython-39.pyc b/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 0d56505ca997b902531f1225cc8e0f2d6c087ef1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmYe~<>g`k0(WKSBoO@=L?8o3AjbiSi&=m~3PUi1CZpd6pl#-ZNlAE6bTgVug&|HPv0!Rn=cr^=x!H&1+ZY(X2)E z53M{7_&XToE=Y{Opp>XDmb^uMYsuTxw+(MmYSY-EzC+^E7;6rFhpi4tm!3h(V>5d_ z_c?6RZck{ptiq~{c)ENnFn2J@2Ox6klAQ_T28_*C;RA+a*YGaIuw64em^#G`!`CQo z!eL7{?xw?BCDmvghJvW+0r976ERO2L*F?*SoQb7ef{9N%u=$8@Bkq!O9G>fVv&z6ydN3fD)Rc_pI zI7uv3XjC}N{E<{?SS-WKay1T9gp;c{$-)Yo!z?xjij%=WDw*L_N%p_v;kbyR2vwCt z(==56!jkbi&SSZ?@Xz(b55GC3_b|$LKu!dm5Cvdt!(eI|#+1`uPwe(=?Z{+U>RMiK z_@!eS+S5_>#GZ!_%rnVE<+ha`Lsw;m_am>(UI=HoX1Hx%<>ZDqHCws zuIu?=5U`-Xw&a2X)L*$WPm^&{X(!F|qUWg^JT3e;syszuqdc_;6{kwu&^7sAkcL@P z)9eD6@+t_4hUJM4a@iJ}R$H7E=SA1*SWV%HVo$`$Ob@f}n|2_R2<;=z{|@a>-lct*-Rs%A&$$m3 zE_&+OCVkokj6GIHbgV_9#o=o>tFsXIFv_<(nRuaM@nzJ!`xa32|{4^eFkgew4!mN5T;fr9~mN)<3V1zZ`x zlhviK4AKTeM)g}p1DG(X9>L7ccz zT#Jq|B~ZaQx(Dse0+=$Bd7XHQjGK-%0gJEEcMY01X?EX8>nt^ubB$QmqIsK_PFjee z$(?=q$R+i{}>La_8F%R%}^r_YV18W00rL0FM-{tlpErtLx+vitzvRR z>|=rZpX$Jc3LHsbB*jl6dBM?OZc@MmHqIQyPSUy7GZ3KbmtqfqjvY#6-3X|_G& zF0gf4+l;2?n}^9mbo&K}YE3{rhiXsyFWE>)Ap?wo3}pvnC?na$*pWS`@4N1!Vp5vC zp3c&gGuDgIo=sI;%}rHW6_?|3s|-YNA}$Rrq_NF#4?T&;bDhT&onmW(sMQY-urq=4LlxlNn zpYmeWh^GKPMz@zi8s4ykH9jbBJWyl`!o;_Sz7r~+Sl1~l^4z*!uJbxii)5S)g%eg4 zV?+8(NF)IHlbHy^zh7@n%bD7GJ}#{(0BF7w0%?0wnhin_kCF! zJD+}(9TcWEM8AOnoCwhbAR|lx!o-jHckE}q2*HQ=0p4Q|E2BlH=`>sd_&s613rsR?)dI|z?qAr58d7bp;Q+5t?>=? z5P)3(gb}y_=0}6K&{3S;!ES)lXV@{M5TRDH6JXZxF>Vh0yi@$10lyXh1jsFMdMJ4l zfDgys1Gazb6s23WPu$qM#_#}yE$v)mSJ@5LN@Itl_pieir8LMtyq~;9chSRM)I_f+nzyjhU#wxj5A8kaUt@cLd5w5<>t548<`lL4*SODmBOrfs z(Qo=B1f2O3!EXMk{ljBm{kEhJ$nQCg{y2A{1{Y+G^tmjvs(mL-=eqDDQ4+753s9Zvz}$fNsDE0iiB>P(PY??1H|X|r5QgL!_*733AE4j%dOQ+6 zq{{|UtX2t3ceGC(WU58yFTo=06!O~0AHw=(XDh|9a{(n8JGC2SM diff --git a/__pycache__/cma.cpython-39.pyc b/__pycache__/cma.cpython-39.pyc deleted file mode 100644 index 3fb8a9c0a7884b9b0628eb53d8c2b6afedaa7daf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10193 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 diff --git a/__pycache__/f_convert.cpython-39.pyc b/__pycache__/f_convert.cpython-39.pyc deleted file mode 100644 index 6c609282fd6c252cc2f501189ef1aa7286e09571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2408 zcma)8&2QX96rb_edOy;SG)>#kA|oN8Ey->QZ7Bh@OcJ(gQa*a@-Xs{sV->jXOx(=7hv4;=sKZcyD&oq!mca$j>wL=6%e(-+Q({HB}+d ze!2hiS|3J#;N);KU~(Ov>>?0G7>$Wb;jP75S9f)aYkEw&hHFxCn=pf!PYE-*wX3@& zMjw*8wFi=^ve5N&5q^n$n1)Ht1$d}5tt{MAym{a-XEO}A1M->QIAkYHvfNK{2W+-Q+Feqt z^*rxoOU-6)eLD+-tdWFS-sq&8&7c!5tc6K4==YnS_;H_KTNg^=ZrjPxZ@8WfhlMUEbX6$AO|0+@H;$f0{8-O3b4{m8O+<>1dff~wzNGj1fM+b1gOfUfe>oF)CWh$NN?=# z4FK`a8|ErHt8TRhoPtDTNJo&h8=Ckr*M@L|kr9~@+-g*c?2)!Z3mREFn&QzygB2ae zd3jhV^bv4Jc+=GbS&*!b*I-m*8fgBiAO?x1V1DErgw=!5WPbErH3#Wq3~g5@&(sLx zjS|Pj5BYSV?_yL>6l6FvB9tU8;EX*tHneZ3u$2bD1$zCQ9@3)rOatd+G`mZgH3Mfq z(5G-xYDs%PwO#uj+fMj$(izl3e?D59_tzG#hLKx-UKIv4Kb&8SCX78SPW4kN_|lBi zEiR;%^rX(xT;aeqdLoS^T~$bt^oGrRnu0Y^10pRRCRx9$z$EpU zCz7^gb&OU3MwTnU$+DlPT`z|EQ8&a9ls=7WwHvFF-d4aHlVhk;7yaZ_7-X*lA=(jb z79dokGteva81&OHuc+}^YSU>ts7xRQg3qe$UVKOqdSnI zOdFCMLKkU~3Snf7w08)=$z(962taFC8euRnZ1%7`9_JM$WkaZpIkHP{kZeIg+4>hkP$^~FRwG})PM6zFYs)Xe|-PI+AIO67>Di8j_sd+(f)zN904%t2U;Kh z3jQd)d9|RdysLdZw__B>umzt|%0SzCvpyv)_zK|X>lIiX z7bpzBIE$N1rBlI98bR9Ic1tUsT9c)A?B_W^&J=#q;nGNZIN1_m&g-UvnOkZHUgCGT zTZTc}&wKq`(oh=hFy=4ePMiaK_=_;c9X042psNOb77%w9I-(D;IQO@$BWEx@!QG*A z!%u>E4V2VNSPjv%=gEraLA8X>8jNe6_qgxJ6HdwVSQ>bqI1VzxL4s}^at*7pz`PLq zwJ}2!+tjGpReM&gLY+60ez&(RP6A8T)VMMJM^OnZF!#k7WLoK3#DiSP{hJwSzd!aB NQ-ow#jMXjZ{{Z`@M>zlh diff --git a/__pycache__/f_read.cpython-39.pyc b/__pycache__/f_read.cpython-39.pyc deleted file mode 100644 index b2ca8ada17bcd633b0a02029f38c35c8fa1ef9a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1136 zcmYjQ&2H2%5VoCcHeI%*0tq3+!6zU^=JD#Bjg7zPD%`m2Qb=A zP>LvO$cToSjTp?#L{&VBDaIm0s?I2(U<`uqq~b}lq&j?WXVs+K(;dKqq6=0 zQ)0?mnw=coCk3vtEXl#pp&XQ=qew9oeI}!LnS9hy38d}%`MA}lupP+zl~`o`_ub*Rsr2x})a0@rR@&UTedqSA;Y8-|>-zE>(2F zzMS8ub7=FB?6cSKlw$Z65heBdP10VyL1_5ifOgSA45vDCcE|vb#B~o+SSM};te!iC z_5#3KP{j(^bI^CI0lFkW7j1cJfBpl>)_mMdbR7WkF*arsxRmb}CD3k+#k=|h00hoG zt0%r|bvu?5jStuXobRpkk~=rfoI|SLcE_!a}?+lPGi zA}Zwfgu=QOY3jmgvCovoNg4-Vw&FYWw3^K9S=<&-=m*DO`HNb7nHKr;?D<2VG~2s6 ccj4@b8lhxpFx^~U^d8dRB919dX`l9^|CPENhyVZp diff --git a/__pycache__/force_constant.cpython-39.pyc b/__pycache__/force_constant.cpython-39.pyc deleted file mode 100644 index ddd1e23982c9c4a2c326e5676cb548b023c9f374..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2034 zcmZuy&2Ah;5bmD;-JP{J#w0c%vEnbR2sRQ{gpdVB0fz(fA-S!DhRO7-Gn@HK&#Z;5 znFAybkVlA*c?q6^Q(rmx36KyHeAVNP*MeU4H`UeEUDfrs;c(bz7{C1a_oMXzV}HN8gN9Ct+?U^$33Fz;bjJAlS+Sil+%5P++_uv4BYF9?!6se|Aq?yKlh#+{Yl+0AQ?+gXZ7b8;-4ICo$0YL8@EICk!}aQnR1 zIt~Ap{rFq!HprH31~j%2pVn)82!PjkGps@NnjTTu>9+%fY`J5v?D*|apV5+9W_f0< zUB`*u6GQ&qu$TR&-}nfuG3Sl9&Cbalr@L{VJw4QtraXk?pjm_L0Mf%|edUCAc>?#- z3B1;COktcG?Wh^i3xIgd%xG_D$q_iDTlX%e2>dsO;)-SjNi8OJ$$MvZ$1Ccu!~IRf;NCB;j!|i`1Z) z&4T5^uVu18j&=ENmomv~Db&|#3Nm}kwRw#6Fb7OF<@H;_rFG#ib} zIFeMpojs1WN5RSE6p%^sj_yawm_?n5+E{X*yajmuGRC*~*_+obyv%`!+SqbXHzQBz zgP(ywi#1@GiCpK6yUEBxtZhu^7V$i?mvSGq--G);#i7pJe&@d1#CV_J1A-3;J|g&- z;Pn&aE-kP7T5f@NAG0Ex7{Bu$FR$b>{;YJBp;4o4=3y2Gf$9eVdg~%3+7E)Ki!kkW z-^?Tmfvph=@ANuTkk(H-%6D#FwdZ+ull$0CN jB);*(H_9m<&Eu%n$No=`^7cDxzoN9PNTY{b_RW6*$i=_v diff --git a/__pycache__/g_matrix.cpython-39.pyc b/__pycache__/g_matrix.cpython-39.pyc deleted file mode 100644 index 0c67e905c8af2ce61683601bdc47ec6042b78827..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1184 zcmYjQ&2Qv16!(jh%yc@_T~-Kbg^(g4AsMAno?T9#AA?d17}aQzxF< z&akc01M2<{2u|&h6aSB|oR$-3PCO@5sV{mzKY#t6-$(dlG9oD7fBIr^P6_!tOdd*% zljo@R2tg15isXP}q@s%E6v7%+q>A$d$O#d#NZt{V$n=Kh0|7shY5E>-lG7=8TGm?} zQdQPmEsL=HP$HZ>N3|J(?A+v$fSig*(03${d-6OHDbf!7;N&%TrhI$#*C<1Ivnp*? zC~j@`OQ}@0kXd7;$ehj!U2PgCGq;l2$zj#q%Jf-3|L(A-$zDsh(qh(;{opdY(v1>< zrqH!@rYT&{wk)?j)tQoS%SEY5ciFKSUfVNmkiXP*wk>%_6`a1>Iqk`dkkoq#c8L51 zs{II|g_bbVMu^Z-#7Gc~7fz?t$5%-1_bl7W!f9juKyQLGJB@v8r8+YSGMF^L0O3z! z_Hg*`i}^}da=vX;!RvV?)w82#N1x9(yg27eY3CSWp^f0RtF*xRlJ!ZNZ7%(gv9c~5 zV-sYufto;y-__$?{%7|G3J9A!2@eU{#q|doEm@N_T!Vn?$VImp**ab)cW_Nz>IN;n zfg5;9ex6;&-OjL$pJJPxN9LuVn1}e7Tzn?tU_B)tllv89+H0vu?jq!gZbvN*j4j;m zw-goD<2$$u8J!>tSx@lHK^So@Iw!~2zM(}=mmmCd`0MY#U3}@`ClkV0qN4o!^?QoL z^ih{n58wKz-uQ$Y!!NsB=V^r}|pAwMAq2vxl{n81Zz_19I^)zvlKUElikx?t(Pa5q?la8K^Ar3lTkH{p?{V0$g#r>7d+&o?in9 zRW_c+si*S_*SYb8dd7HX&*U2HX-j)~X*DdiGd_IgxX?DYqudQ*KhIqde0MJtxnD$a z=qAd|EiyOAlK!9w-Q^{>Bf{N5mkI4i?#F2!io(qcKjpsQ?jQ|7_oK7` zPdDqhellQToZvp-;@)fD-@L!L$UbX-y14dWRYh70Z1{?khO!3zBk1`&KuJr&NT~tR zQU}yZ15htbK!f8fd?cV%T7Z?Z0%&srpRKQTza@O@hZpTT-PLQg`q$q(?dF7}%aSfh zy~tu|_eIuYC>cXIanEV5K46P0tL=>qIr&Pmup;DA4-y~F)5ycPBP_^IR1h$2F@b<@ zNz@SFEs^htn1tci4_ez<61MgRap0$|B#dv}ymj+NtM3OpemBfpL6!!Y;C@;p83(=F zVdIOK>+egOu_%oS#u^YRp8_D%dgV7fdve2bC*A=?&*O%vVy5a`e}S2Tl%z*FJ;1Zm z3jNT)4mQwx<`JTX$gHArXoF@Q(a%wzfbQUl_Z(PJ#qkJkp;y}>x5=p(j#^y@O9N)> z=)+K(9BU(bJOisonz~<%H~F_e*eUFNrlcV0U^hzII}4gNGSnNGQdwY3%tGyOl11+| zuuK%^xc(G#o-WQ8GhmrMpa*n;eDTT1Jlh{-SG@chZl;A>ieckV&DwvU3wp$@xS)H4*Ool(mcFUn!GXtv1SOjp-+HC#l-kC z9YOv|Q&w2(sEdwuS`&S>~f>wmOiwbgn& z|K-i=`KZ+zUfs+JKXw<>P;~d*g(wGh+ZrI(xo>SQE;N@QD@TMu!TJK&qxptF)>Q@O z>C0?gYH45UJS$YWdHNEXR@%}Cqwcn60Re`pqBh7S>^!LRyXtJi{x$!@px&?v%VPZy2=0VioKbgdPmsYmbgU6sk X{nx(IzCF(SLwu$=vagMYL~Ht=k=W`S diff --git a/__pycache__/int2cart.cpython-39.pyc b/__pycache__/int2cart.cpython-39.pyc deleted file mode 100644 index 9e6e7c9a6b111e3fc2b0d02a890062a7154ab7d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3467 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 O_^_AiQ}q5DhV>uaoiP6Z diff --git a/__pycache__/reap.cpython-39.pyc b/__pycache__/reap.cpython-39.pyc deleted file mode 100644 index d8f86b18cd7cb78dcc52da347d386d1b7b7cf117..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5795 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 SCicEU-xAQzNe7dnZsXrXij2nq diff --git a/__pycache__/rmsd.cpython-39.pyc b/__pycache__/rmsd.cpython-39.pyc deleted file mode 100644 index 5b0f4c21ce8e95cce309fa5dd5785d0a261306c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11180 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 nZB0JbskK*yJhFJ diff --git a/__pycache__/ted.cpython-39.pyc b/__pycache__/ted.cpython-39.pyc deleted file mode 100644 index caf3f148cb677dbec90cfd4eb33fa2beac847945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6325 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 diff --git a/__pycache__/transf_disp.cpython-39.pyc b/__pycache__/transf_disp.cpython-39.pyc deleted file mode 100644 index 26166324dacc1734359b590f725f8cab580fa5ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9601 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 diff --git a/__pycache__/vulcan_template.cpython-39.pyc b/__pycache__/vulcan_template.cpython-39.pyc deleted file mode 100644 index 5ce13d2415de4cd163ae56ed43bd50529dd2a568..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4179 zcmeGfO>f&qmedEOuu0SJqPJPcDBx^FI*#EMX;YN3lvt@H8K#=FDjH_Q8A((qk{%8f zTXs(EUiTODumyVAf3m-U*FEk2gDncQZ}=fgTGzlXdg!4eXgKrc&HI}7-n_xruBj5V zy&JpzpRY^OKgDFRm0dEjexP?ivSCj>;=t`4PuPjRsB~l{gZzWQu z$~VPcg~+C~q5KPWO6?6fE;`;6K8ovj*d5veyx0mb`4s*kf{rF^dIci)iljh_-%7nw zO1xJl3XrYDuRe}k8+%VSK}Sbn)JLJs zoPZ}A>@u*+n;2K&zYG8HDRgJWGsyzAN#U$SitmDg-wB9(CXWm7FOu@#N@s=dWxy-( z@>$^<`Aiza>^+Gn-&Fupfw@E~&kL+esxYs33b`V_L;@|;_Uy}v?*`0AH4m+~&HYZ- zM75gdM?k79 zBuJbhR3q1!IAB5>ZK^7@M?P9x%f2^%o0gM9CdZ6B-Vlxb{@om!f5qvw!Hjp8juEY` zKkD4K+D5C92_=@B^%X3X;Wg_ESbKiR#lbA#uC4EN%Fq#_PWoZ;jyP%|Gk ztd8}hbNE@kdAMR1A%Yq8!EBro6os%^@Hjt9)ba@gnGt~Lu{}b$j=zmPZ?1{cwFx*j z_n{-s)FBae5y#>4b1hWBSXM(%rd`AQ%mPDY;qUsGpwq-*!KEM%U~Z4@t#?}opt!#N zx!HhToB?bBwkG9hikTxkD^%%m;4_Xotplt5dCThV9X5=*d2c&kNaOe3Z8czY;2hu6 z{ebH!eg=G(KfYBJ&C{CmbO_t8I8BMcEI273_lo!?zBG% zhEsAf3ASE*u*3Ym5N_8GPK0wI2zIR6!DagEy_V5M>zTsIEZLDts`qi|g!;oq`@Uh$ zvHlyOv3pQAy2d$%GeBRV8byzcX1o3c`uZc0YCQz9WRRRA`UnD0ouhZ|8;83~=qco4 z^as1GX1lwHo|`^g9RL73nj`#pq45)9oBI%tiUkFiEWlTIx5+Otn!X81kOL3xI6eI%Y-YP=Jqc0ZEuQotA^fIP7PU8F`Vi|=} z1>t$rBFyZOGo{Jxq{4*(mp^CN3kN=%ptbPU(_4@HzEuYitt>6+x7JW?Y7Z{ec6E~` zNM~M}#SVNPG~34hT#-ku&b}7Fb&nwb2?x(Y_(3+UHxKHKL$ud0&8E>tfL(92QM>U( zIFRwU^U$atcEo-S3Kx`l<2>YN6U;X^Z_kbRKj_N-4_yVjn`xX6XU^rR@gig8#Q}mv zC?cT7q;POc4zH~t{12#F|0s7v74=8C^ZPA#M5PYZPFB8TRmy2v+5EAJO+DJ zfleHo$K|7lMwDFvXsn2ggn3*HIg87FvVJ|SZ7iO>!8XcqDWvWou0Y`fX+P{$#*n?d zXp&H7uK=OHOYBYf{AlPSe?s%>XhPkc?VasAdVuZcct|0&&z}lV=EHo2l@^@DRm&0= zoMj2R$+J#(b`Kekd$tAfe7vQJJ)&EpqQRQl5_U_}QN28Wguw@{TH!&6u-{cke z77WB2ZY&QZM~n(T$bS_NTe-baWUs+0yCyn#Jp+urF2+K^v=h7IB8$Agz#tS)TuGk2 zu_6R4w>K1_j;P-)D^@KlecQnJs%0HPwVSO}EQ|QIWwEz`5_?B<=gg9k;K+pZ3j9OS zRpnBtI!j<1)wm3&0k$i6L3}kCYUz8N3E@}~y11}!#ERb^!}B27brFlW`f)1aC&F48 JpR4lK;xEfziP``F diff --git a/__pycache__/zmat.cpython-39.pyc b/__pycache__/zmat.cpython-39.pyc deleted file mode 100644 index de8333697c198844b96576fbedec729bb36dd059..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11206 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 Q*Bojw9eU88@70a}1A?-HIsgCw diff --git a/test_suite/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc b/test_suite/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc deleted file mode 100644 index 1114f2b227200a0c1ed59e366ad296b6ce0593ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1519 zcmZWpOOG5i5VqZ~>3QtVJ`#cis|W=|UuN=HazHE!Vz~w+BBA)wa@wA3XZt1F6SAZ3 z3&WipIdGUca^c5t^p#WoLM~8tv#=~}*)CUo<*xe5Hk(X_2)-M?|C~Mb5c;+@pIS2R!@{(S44;MM?Aq{)-+b*hF79IS5YsY}2^{@+cY-3%MpKf(w8*YYM)J5Nc-G{dJFsi2akZSJ&OSV0Q4j$1pkHP;u ze!J??2AfeEwM36wZ;e~8^|wJ6xoie5-l!d%lP+%K*I1qD$!3Rxyuf@2UV{bM`h28! zH`6V8i2!j3h`l!2;@4OnfxK_!itrI1UqOB9P_RFsP8|wlK#lq27jhGIL%zdz+hLAD z9_a%>9JZq^UgIBtrw*zOm76|Z9nR)bEK<%ioAX?z8mcsZ6GKUizk(9du&j$l)~m4= zWm7OMW`H$VuBMlY6gIHRRWO^)XR`#qB_}5dUhRMQadUAuQMXS{Zd>twqKt2UWMc3T zQdF5p2=xGDhx@A?rj(G{fsYeqmB+~qLuzG$>v42t;EWDTKi| zom!(%IjdB<$SYRRnCZGqi(F~xyR_;?R5k?0i@Xww4oh|}V83RmjaPte_^7#nJ#@;X z*-JB46tH(Av$|}U6lM(O^w}~mG{j)Sq6UOAw^DUhFAMIV>GPs~#)`CJr7&@-m`%5l zX6Fl+A>5I#q^zYmNEfxVv5Qy0ZN=>ENya9s`+Foqn_a+j)ij0x?Ll5~@rshuC&pjo zg^;#T(moG#WTWZ{yw@-Ktsh)neDW)j?*aPlH}kW)6!VwMB4gFO6ve~ihsO`*4a?5i zbD`#0U1hc8tkPx8VeRNp%Up|Igkto!+8vl#b76KJy^yDZZBwg^B-BndonwoPrOHEibN^ z(mpPRK*d6Jw$yoHf@)bpsHAG>JJ&LtT~h9j*x_}nJz)J=JGyTAFBR^LxpW-SSBCd( bG=tB8&t)M#hvyC{8}J8s&^Iy$I>z2#mv*bN diff --git a/test_suite/__pycache__/test_f_convert.cpython-39-pytest-7.2.0.pyc b/test_suite/__pycache__/test_f_convert.cpython-39-pytest-7.2.0.pyc deleted file mode 100644 index 7b27aaeeb156dc646349061041533b62431468a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2573 zcmb7GNpIUm6y{JAB~gnPd5_~T&f+MGl&xtS6h%@uzO+q&#OQ$+g652Es@yO`xwR`_ zqF!_FQMwe!t(X3V9*d&KxfUppOMieb?R!I6aGhRCo8P>7Go0nU@0*cVuUi^C^S}S# z|6J0vKd^H4F`)7UUhxUhG^$Y&Y7SAQ9u;(rXp!L*N#0^QCDl@P%Brk56)5%4imFak z^(lmARCDUeHo`_UO=XwDxoF;*S9UpEh!&kiWmm$bXxUjN z8Y^{Is70%<3E1V~1zH=SHACwI;;gdO;l&ZGku?XJvql?i&Ar5y*&4Lj%pP8*QzPQ6 zgLQ?itMBaLRn^}fUQ^{fv)LN6yVnN=XM=4FFM@r8PLFgLbCGRyTg)El&P_G*430o& zY4dx{xkcybJe0TDtpUz|8}>@Ggi0ml%ntj&XA8r{k#?Yo zAEDP0w(_6AT1G3@X+0nd+Od(XfbT-z7?A;a1?)X8Pz`d?c+P9ED_IWWjB&`q){(XA zyHLX*y+vWXfw)r$YvhIEh*A6W8yo6AvmwYLgLn#?CU%@;Hbm9mx3hg_ zLn;_&vCrDP0Yje5GR`55cH;Xz&gf(7yJJbLlR4{SPYA{{_4&0M>EYd$kOe5DnSaq* zm3ks%(ch;5=cr6s*xKY0vg*QgvMAgG<^wCfc)Bf1KoK|D>B>@)Q%Dwjagf1?yccs! zt<>XGRs_pvu)BMYO0p%3JONrrLj*@mnqHbRs98_aL!^)EaXI7S_C2uGQX{bkvn!7@ zx=9er8gzDddO?^4u>f)>K15C~xne)*h1BINIarlA*mD1=s#FX7UQTbqyo$5h1&S;blNCEd#_`J(Q>(fA{b`DdN|Bx0R| zUg&#qCt~5FhmRgU=%k+iwYSGa2h!&!90d_26zXcfq8DT=H**z1a@y&koK>w8*L_&Y zHJC);$~0mTLti3gy$tUPF^K-RVOWHJ0B!$LmkExEy8eR7|5TR_TB<7b8E4dYMs2hR z>H`Ih)mI-jKyg)2pGixgKG3dG-z%j)r8%{N%0zue-w=N)^;w|4>KXObKz()En5Yjm znyc@(GwN$7^%ckJD^ApBDD_R{>f=+e^)093dmO?Vc=1sc=!`WKA)kg;K7-IiKmqYN zgn5Joghd35eQT93qrHNF^57Q`RuL{DtRY-Nun{gJtRrChlqUEUw5}ptN7z8PfzU#@ ziEs! zIg>TzZ0ENX*TKyTs_pZq&hk0=v?tn7X>bm<)_f%`Nr{i#Ze&gouSnkhu0v7 zpDPfr^IvC-a+H;vJKusA9mmU3PQ#(+rW|y8I+vo1VvFK~jlE1ifg?dE*2oHe4ab*9 zoodp{(q5*nR9RF0lqWtDV%!UkJb&EaCs7)NOfDUGJn(ix=F-5&gUsWHaM1*rBBq?0 zuwN*zG+@MTPF2i4$K;-&iXx5TOZg)>uzDf;7=E5<;xWKFfs=>SNKJ?L^bc$c{klm^ XC@o^?a6;(~($H(VRVX*h^CtNRKEb#F diff --git a/test_suite/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc b/test_suite/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc deleted file mode 100644 index 834e54ff2ca7b5add27d8aa50d254ca7a9b0197c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4217 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 diff --git a/test_suite/__pycache__/test_gf_method.cpython-39-pytest-7.2.0.pyc b/test_suite/__pycache__/test_gf_method.cpython-39-pytest-7.2.0.pyc deleted file mode 100644 index 18064ab1b4b6da79f58b85f3a9c1cb0f7ca09c51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2261 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 K1zgaKlm7+CfGREk diff --git a/test_suite/__pycache__/test_zmat.cpython-39-pytest-7.2.0.pyc b/test_suite/__pycache__/test_zmat.cpython-39-pytest-7.2.0.pyc deleted file mode 100644 index 7a5d593858429afc2bce9feb4b8435ebf9c07bf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7454 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 Date: Tue, 13 Dec 2022 16:10:46 -0500 Subject: [PATCH 3/7] Updated README dependencies --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index fae8dac0..1ec091d4 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,10 @@ User must have at least: Python version 3.5.4 Numpy version 1.13.1 +Developers must have: +Pytest 7.2.0 (-c condaforge) +Pytest-xdist 3.0.2 (-c condaforge) + A simple way to ensure this program may be run is by creating a conda environment with the following command: conda create --name CMA python=3.9 sympy numpy scipy From 46e3436e4abc671f17c12e0148c3298ccde32a79 Mon Sep 17 00:00:00 2001 From: MitchLahm Date: Tue, 20 Dec 2022 16:29:22 -0500 Subject: [PATCH 4/7] Added suggestions to test suite --- __pycache__/__init__.cpython-39.pyc | Bin 0 -> 149 bytes __pycache__/algorithm.cpython-39.pyc | Bin 0 -> 2302 bytes __pycache__/directory_tree.cpython-39.pyc | Bin 0 -> 3705 bytes __pycache__/f_convert.cpython-39.pyc | Bin 0 -> 2408 bytes __pycache__/f_read.cpython-39.pyc | Bin 0 -> 1136 bytes __pycache__/g_matrix.cpython-39.pyc | Bin 0 -> 1184 bytes __pycache__/gf_method.cpython-39.pyc | Bin 0 -> 1999 bytes __pycache__/int2cart.cpython-39.pyc | Bin 0 -> 3467 bytes __pycache__/masses.cpython-39.pyc | Bin 0 -> 50973 bytes __pycache__/options.cpython-39.pyc | Bin 0 -> 2030 bytes __pycache__/reap.cpython-39.pyc | Bin 0 -> 5795 bytes __pycache__/s_vectors.cpython-39.pyc | Bin 0 -> 14226 bytes __pycache__/ted.cpython-39.pyc | Bin 0 -> 6325 bytes __pycache__/transf_disp.cpython-39.pyc | Bin 0 -> 9601 bytes __pycache__/zmat.cpython-39.pyc | Bin 0 -> 11206 bytes s_vectors.py | 2 + test_suite/.nfs00000000504572b10000065d | Bin 12288 -> 0 bytes test_suite/test_g_matrix.py | 368 ----------------- test_suite/test_reap.py | 98 ----- test_suite/test_s_vectors.py | 378 ------------------ .../__pycache__/suite_execute.cpython-39.pyc | Bin 0 -> 2310 bytes ...directory_tree.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 1514 bytes ...test_f_convert.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 2271 bytes .../test_f_read.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 4212 bytes .../test_g_matrix.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 3001 bytes ...test_gf_method.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 1823 bytes .../test_reap.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 2115 bytes ...test_s_vectors.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 3276 bytes ...st_transf_disp.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 2111 bytes .../test_zmat.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 7318 bytes tests/nohup.out | 46 +++ .../ref_data/dir_tree/template.dat | 0 .../ref_data/dir_tree/template_ref.dat | 0 {test_suite => tests}/ref_data/dir_tree/zmat | 0 .../ref_data/f_conv_test/fc.dat | 0 .../ref_data/f_conv_test/fc_cart.dat | 0 .../ref_data/f_conv_test/fc_int.dat | 0 .../ref_data/f_conv_test/zmat | 0 .../ref_data/f_read_test/fc.dat | 0 .../ref_data/f_read_test/zmat | 0 .../ref_data/reap_test/Disps/1/ijk.dat | 0 .../ref_data/reap_test/Disps/1/input.dat | 0 .../ref_data/reap_test/Disps/1/output.dat | 0 .../ref_data/reap_test/Disps/1/timer.dat | 0 .../ref_data/reap_test/Disps/2/ijk.dat | 0 .../ref_data/reap_test/Disps/2/input.dat | 0 .../ref_data/reap_test/Disps/2/output.dat | 0 .../ref_data/reap_test/Disps/2/timer.dat | 0 .../ref_data/reap_test/Disps/3/ijk.dat | 0 .../ref_data/reap_test/Disps/3/input.dat | 0 .../ref_data/reap_test/Disps/3/output.dat | 0 .../ref_data/reap_test/Disps/3/timer.dat | 0 .../ref_data/reap_test/Disps/4/ijk.dat | 0 .../ref_data/reap_test/Disps/4/input.dat | 0 .../ref_data/reap_test/Disps/4/output.dat | 0 .../ref_data/reap_test/Disps/4/timer.dat | 0 .../ref_data/reap_test/Disps/5/ijk.dat | 0 .../ref_data/reap_test/Disps/5/input.dat | 0 .../ref_data/reap_test/Disps/5/output.dat | 0 .../ref_data/reap_test/Disps/5/timer.dat | 0 .../ref_data/reap_test/Disps/6/ijk.dat | 0 .../ref_data/reap_test/Disps/6/input.dat | 0 .../ref_data/reap_test/Disps/6/output.dat | 0 .../ref_data/reap_test/Disps/6/timer.dat | 0 .../ref_data/reap_test/Disps/7/ijk.dat | 0 .../ref_data/reap_test/Disps/7/input.dat | 0 .../ref_data/reap_test/Disps/7/output.dat | 0 .../ref_data/reap_test/Disps/7/timer.dat | 0 .../ref_data/reap_test/fc.dat | 0 .../ref_data/reap_test/main.py | 0 .../ref_data/reap_test/template.dat | 0 {test_suite => tests}/ref_data/reap_test/zmat | 0 .../ref_data/s_vec_test/zmat | 13 +- .../ref_data/simple_int_zmat | 0 .../ref_data/zmat_test/zmat_custom | 0 .../ref_data/zmat_test/zmat_red | 0 .../ref_data/zmat_test/zmat_zmat | 0 tests/suite_execute.py | 75 ++++ {test_suite => tests}/test_directory_tree.py | 0 {test_suite => tests}/test_f_convert.py | 42 +- {test_suite => tests}/test_f_read.py | 0 tests/test_g_matrix.py | 65 +++ {test_suite => tests}/test_gf_method.py | 34 +- tests/test_reap.py | 56 +++ tests/test_s_vectors.py | 256 ++++++++++++ {test_suite => tests}/test_transf_disp.py | 53 +-- {test_suite => tests}/test_zmat.py | 153 +++++-- 87 files changed, 658 insertions(+), 981 deletions(-) create mode 100644 __pycache__/__init__.cpython-39.pyc create mode 100644 __pycache__/algorithm.cpython-39.pyc create mode 100644 __pycache__/directory_tree.cpython-39.pyc create mode 100644 __pycache__/f_convert.cpython-39.pyc create mode 100644 __pycache__/f_read.cpython-39.pyc create mode 100644 __pycache__/g_matrix.cpython-39.pyc create mode 100644 __pycache__/gf_method.cpython-39.pyc create mode 100644 __pycache__/int2cart.cpython-39.pyc create mode 100644 __pycache__/masses.cpython-39.pyc create mode 100644 __pycache__/options.cpython-39.pyc create mode 100644 __pycache__/reap.cpython-39.pyc create mode 100644 __pycache__/s_vectors.cpython-39.pyc create mode 100644 __pycache__/ted.cpython-39.pyc create mode 100644 __pycache__/transf_disp.cpython-39.pyc create mode 100644 __pycache__/zmat.cpython-39.pyc delete mode 100644 test_suite/.nfs00000000504572b10000065d delete mode 100644 test_suite/test_g_matrix.py delete mode 100644 test_suite/test_reap.py delete mode 100644 test_suite/test_s_vectors.py create mode 100644 tests/__pycache__/suite_execute.cpython-39.pyc create mode 100644 tests/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_f_convert.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_g_matrix.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_gf_method.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_reap.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_s_vectors.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_transf_disp.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_zmat.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/nohup.out rename {test_suite => tests}/ref_data/dir_tree/template.dat (100%) rename {test_suite => tests}/ref_data/dir_tree/template_ref.dat (100%) rename {test_suite => tests}/ref_data/dir_tree/zmat (100%) rename {test_suite => tests}/ref_data/f_conv_test/fc.dat (100%) rename {test_suite => tests}/ref_data/f_conv_test/fc_cart.dat (100%) rename {test_suite => tests}/ref_data/f_conv_test/fc_int.dat (100%) rename {test_suite => tests}/ref_data/f_conv_test/zmat (100%) rename {test_suite => tests}/ref_data/f_read_test/fc.dat (100%) rename {test_suite => tests}/ref_data/f_read_test/zmat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/1/ijk.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/1/input.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/1/output.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/1/timer.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/2/ijk.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/2/input.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/2/output.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/2/timer.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/3/ijk.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/3/input.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/3/output.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/3/timer.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/4/ijk.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/4/input.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/4/output.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/4/timer.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/5/ijk.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/5/input.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/5/output.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/5/timer.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/6/ijk.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/6/input.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/6/output.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/6/timer.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/7/ijk.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/7/input.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/7/output.dat (100%) rename {test_suite => tests}/ref_data/reap_test/Disps/7/timer.dat (100%) rename {test_suite => tests}/ref_data/reap_test/fc.dat (100%) rename {test_suite => tests}/ref_data/reap_test/main.py (100%) rename {test_suite => tests}/ref_data/reap_test/template.dat (100%) rename {test_suite => tests}/ref_data/reap_test/zmat (100%) rename {test_suite => tests}/ref_data/s_vec_test/zmat (85%) rename {test_suite => tests}/ref_data/simple_int_zmat (100%) rename {test_suite => tests}/ref_data/zmat_test/zmat_custom (100%) rename {test_suite => tests}/ref_data/zmat_test/zmat_red (100%) rename {test_suite => tests}/ref_data/zmat_test/zmat_zmat (100%) create mode 100644 tests/suite_execute.py rename {test_suite => tests}/test_directory_tree.py (100%) rename {test_suite => tests}/test_f_convert.py (54%) rename {test_suite => tests}/test_f_read.py (100%) create mode 100644 tests/test_g_matrix.py rename {test_suite => tests}/test_gf_method.py (61%) create mode 100644 tests/test_reap.py create mode 100644 tests/test_s_vectors.py rename {test_suite => tests}/test_transf_disp.py (60%) rename {test_suite => tests}/test_zmat.py (73%) diff --git a/__pycache__/__init__.cpython-39.pyc b/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d56505ca997b902531f1225cc8e0f2d6c087ef1 GIT binary patch literal 149 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 literal 0 HcmV?d00001 diff --git a/__pycache__/f_convert.cpython-39.pyc b/__pycache__/f_convert.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c8b63df8dd8bb4785eca4fc3844e8da0e455df37 GIT binary patch literal 2408 zcma)8&2QX96rb_;exx61NFlUf0TSAh?55C`5>VTelD3F0RU3i20vX3MyRqZ7w_|TY zw$3R%aDyYqU2)<+KuFxUgT!r4NSrDT+TmQHa_k4e{PnUq{7%wXn2!c1=M>n)qn zyQF440!`AaQK^T?HoUAjO#HYL;PiCUVQ>YW>_UwHCaeCfokEl#sFuZGAJ$+#vR|%G#b6l-7E~UdJ<-Ny_0S?f=;-!5hjhG-*0^4$9;ZzQz(s_Z8yib;dr)O7V>P- zZHM4A-{fw>cgFK+;x=#IT~`Y2R4CyM*oojA!~Zbt$9%HMEQG}vbuaCy^&y0qpoZY% z@NZqa*Zjb{v3h5H#k~t#V7_2(KMCM~d^m+&H*LGi_2t8M@w_s0_2V0Nyw&FQ|D|)F^DAW}ySM7_PAyN*zWZ{d%)w zy#C#vU-XV&=?s4Qtz!Q5`{i0mnn9WhCh3~AdjdA&wWXPP+dPnZ&Y3j(NtkES7(nV} z`S2j5bFjIZBaMv5ZDB!t0wWd`BqkCYNeKy-&-X+eh1cVE8=GmDH@5q6;3thPk1w3N zaPF-}&kwfz4$m3@z5s#(taMWbj!HC zK>U-2wTi*2Q>}ueAQ2hT5mfD#CVtGdA)H`jL}mo18rhLE()MUUBWq7nGFoUbqa&Y} zhUG#Zfpml?T{+YR&B}NVxGK}Y@>c~hNHhcEBc~y)9&nTK(Rb7sw2v|LU70*HBg{8y z92Y<2vxUBoSv^sZ;oOK&k~Bdwj@;PNzM;ZV762C*^%FW}MXi|y$#c>CK4sP%?ETQ5 z!in9K&OvFnoLg)+;j2k!P!0XXXk*deSh^HOvh?Iu7*zdmaU+@t9^vIwJE@W{%{blR zLTX7*>MYF_4y4f&X(Z{oLW-nUrS{RPK#aHaRc~FvWQ?R4m=jeX(&Ax~^}7m8Qjd8e zX;W6lXa!(oxdNOl`FYy)Vz@tQhB$)S3usomx-RK;1-vmihBkH4PhJ8hdkqNDj%f1$ zp(>q&UZ%&OKM&)w;!jbB&eB170x3{@TxkbucsbXZp9dKHK||1E2`Fe?0%$S12PMk1 zA;}?ikrt^GM#e~cn*f|l24jiz z9A*^y9C?9^C|Y}Vo>?dVTV_8cb5Q^O?L%+#1fXI}`=1~CKl8NzLyZLjVA2n*-v1Ti zQFil6L0M^E`+8x|D2!nh$_MuRDSQ$Q==<<-OlHr5zifFKK#lz#JPM5ErX+*PgO&4a zPm%KA#8lqhO+RxXA7T!Ud{BC@^5$~=>~eeW5mx&n%!{PufwuETZAMz~6~NEeX_y^f zP%d(a0ck3m3U<;6(%x>%Uh~wPwA-ax>X|%(bKZ85*GWf$^gfZ@@K^FjBRp|48xKq#(eTc<{za1SVgV_o0ruGd# z3F1{SQnT?kMAx1t%bo|fC4AO^uX^77z8_B{w&$@l@H}xGbi^x2FpR0t@KzRB7vkV< z%n-#6HL6aJ;>U08z_GO#lD@ literal 0 HcmV?d00001 diff --git a/__pycache__/f_read.cpython-39.pyc b/__pycache__/f_read.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b2ca8ada17bcd633b0a02029f38c35c8fa1ef9a1 GIT binary patch literal 1136 zcmYjQ&2H2%5VoCcHeI%*0tq3+!6zU^=JD#Bjg7zPD%`m2Qb=A zP>LvO$cToSjTp?#L{&VBDaIm0s?I2(U<`uqq~b}lq&j?WXVs+K(;dKqq6=0 zQ)0?mnw=coCk3vtEXl#pp&XQ=qew9oeI}!LnS9hy38d}%`MA}lupP+zl~`o`_ub*Rsr2x})a0@rR@&UTedqSA;Y8-|>-zE>(2F zzMS8ub7=FB?6cSKlw$Z65heBdP10VyL1_5ifOgSA45vDCcE|vb#B~o+SSM};te!iC z_5#3KP{j(^bI^CI0lFkW7j1cJfBpl>)_mMdbR7WkF*arsxRmb}CD3k+#k=|h00hoG zt0%r|bvu?5jStuXobRpkk~=rfoI|SLcE_!a}?+lPGi zA}Zwfgu=QOY3jmgvCovoNg4-Vw&FYWw3^K9S=<&-=m*DO`HNb7nHKr;?D<2VG~2s6 ccj4@b8lhxpFx^~U^d8dRB919dX`l9^|CPENhyVZp literal 0 HcmV?d00001 diff --git a/__pycache__/g_matrix.cpython-39.pyc b/__pycache__/g_matrix.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a3d7a029cb66a290416dcdcc0de37b9341a207f4 GIT binary patch literal 1184 zcmYjQ&2QT_6z3Bq*>UW&D~bU{fkD840Y1b&Ea+j#wyrIf7HD%>4}*b$phd=(Lx~Pa zc}<`khV*|Jwo`KKss9hJJ$0v@ciN-m0C~du@$u{T_&&r(qX9vA`StVpDJA4nnB0{Z zCr?rB0fHa`6qx~zk%~$>qY&1pB4s>FfE*DKi{w2KiA=BPtS8_XGEP6^O>#U2Pm5}U zL#m33t3@7`?@EM|r>HhVkgc0pBw$8GBf;L}_dAwtWbU-FzNgp0nH|SIwo;v#1Q|>kpoj2* zm>nGc`)<0_rJQbRmGf#^O7-O6$-%eNHP27^LfR=tm}?_=oBzq}fgHl-R>DJqwsHN9MnhI)1(zV;GIG&1Mz)Gq$qigmm%3g< zuiy$^kl!Ykal6xR;z!tKr;&LfDCQwPBxm1 z-G-vVYIp-TA)_N?A*&Id*$X4CMW^Ht+c&i6@#2er_W$_n&$I76{AxlN3sjVUfBZ~w z7~gAi>fxD>s@ce-S%u+FDOt|iti76o5;Dzx+P z*29sfd~U~y=_9+@L-5pT<)QXav^DD>{G6Vex_W>{+a3h^G=@F6kKZ7A07JxwaIt$^ z3_N>0PD9lyUP{LNfH5p;t%5yd?5yT$yVGM#=$tXL8y@jhfY2>>Ah$& z`$@Yt?)#*w%k{arhr52*+LP|*Hld|WNS%*f|Kw9WUt!0#*Y41_-r5lRhus^02)W-n I8p4qN50RN6Hvj+t literal 0 HcmV?d00001 diff --git a/__pycache__/gf_method.cpython-39.pyc b/__pycache__/gf_method.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c1fee309343faae140800e2d4a4c86477d96a78 GIT binary patch literal 1999 zcmb7FOK%)S5bmDWj%OcEOdLBeGK33@kT;Mh5+)*9;YUDzNU;Ob2xyI`XV}|pAwMAq2vxl{n81Zz_19I^)zvlKUElikx?t(Pa5q?la8K^Ar3lTkH{p?{V0$g#r>7d+&o?in9 zRW_c+si*S_*SYb8dd7HX&*U2HX-j)~X*DdiGd_IgxX?DYqudQ*KhIqde0MJtxnD$a z=qAd|EiyOAlK!9w-Q^{>Bf{N5mkI4i?#F2!io(qcKjpsQ?jQ|7_oK7` zPdDqhellQToZvp-;@)fD-@L!L$UbX-y14dWRYh70Z1{?khO!3zBk1`&KuJr&NT~tR zQU}yZ15htbK!f8fd?cV%T7Z?Z0%&srpRKQTza@O@hZpTT-PLQg`q$q(?dF7}%aSfh zy~tu|_eIuYC>cXIanEV5K46P0tL=>qIr&Pmup;DA4-y~F)5ycPBP_^IR1h$2F@b<@ zNz@SFEs^htn1tci4_ez<61MgRap0$|B#dv}ymj+NtM3OpemBfpL6!!Y;C@;p83(=F zVdIOK>+egOu_%oS#u^YRp8_D%dgV7fdve2bC*A=?&*O%vVy5a`e}S2Tl%z*FJ;1Zm z3jNT)4mQwx<`JTX$gHArXoF@Q(a%wzfbQUl_Z(PJ#qkJkp;y}>x5=p(j#^y@O9N)> z=)+K(9BU(bJOisonz~<%H~F_e*eUFNrlcV0U^hzII}4gNGSnNGQdwY3%tGyOl11+| zuuK%^xc(G#o-WQ8GhmrMpa*n;eDTT1Jlh{-SG@chZl;A>ieckV&DwvU3wp$@xS)H4*Ool(mcFUn!GXtv1SOjp-+HC#l-kC z9YOv|Q&w2(sEdwuS`&S>~f>wmOiwbgn& z|K-i=`KZ+zUfs+JKXw<>P;~d*g(wGh+ZrI(xo>SQE;N@QD@TMu!TJK&qxptF)>Q@O z>C0?gYH45UJS$YWdHNEXR@%}Cqwcn60Re`pqBh7S>^!LRyXtJi{x$!@px&?v%VPZy2=0VioKbgdPmsYmbgU6sk X{nx(IzCF(SLwu$=vagMYL~Ht=k=W`S literal 0 HcmV?d00001 diff --git a/__pycache__/int2cart.cpython-39.pyc b/__pycache__/int2cart.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8703ff659fc989f99209cc6dc22cc9fa7a394c91 GIT binary patch literal 3467 zcmcgv&2JmW6`zm&B1O^?ZVDc7%preRU0cn++MadwkyttCcRuz zvn$sUmO%j-Z4WKro^ug%Gtj?iu00e!_g0{Ae{YtQNZCzqU1HwMdv9jm=e!xl&1Rk9 z`^DFP?Eb0E*xw0R{2U-R(emp6iYcD5kfRqV8;VeJrlfLGXXu75XP+_UD(^8-f*GlI?c5@zQ=4r@dz!IHAKh&y&1M?8Q$2xrvr<10+^lC=^%XF$*P$L+@0A zLRa}J0Pd-ps-ySSifW(_R1>0GCfLb}4{pV}=t^uh|7c87ZlUGx0F=CB5i12CuOyXx zAa1i`qC+O2qZoE{cDtng{G&}=w7Y2eIzW$=>|Sfa3wFXwKIMNE`_5hVly!tAPnw{Y z6cO3o5k_2l&$wy4m!#SQ&w_t_vUPtnOtu~#q}@2%8Ybz7*FU`eqpfk=eGvDOe5*Uk zx+AUPtQd|I@ILJ8!oF+cLsQ>Q`+3nF4aYZX*zlid?CAS*4_u3)e%3Fd=-PHV>c(k) z1B3be-Z$?~|M1OY@6(QJoTFh}nBZZoBh~K~rWO~YVMJ3a8)Pv`JJL9Ll76L|q(9M9%{N#y$Mn{Ale3m6n{khN(W9jn3O}8#%Lw)ccnA;8Mgw6l{Q)4A8^P zY~Y}|15b$!wm}Igdy-}_p+)8No4E?gQru*H`W8nx)ohopLu2ZRK6Y4lnS$ zGu~x3L0}<&<)lFYe#7EeG1mceH`vESozt3?URcw*$dvy&n;_3lE|g-*ClVH{BKzbN zG}yDK(Sp=VY~n20?0lzvQvbPFo7vnx=EwXtdm`@Lp13nl2H!&SiMJr}l@j*<7avr- z1#MpD0~-l=e1n}_oT5CG@N_lqNyzd`zjzfM^R35x%wAVD(1X&SuPFl?2eHkTXjU&v zo9#E7=PuG#7^pN8tCux_9?-nf$!bz7YgQ9TN9<~+n$*kMsU}rMkS2>X?4vwOo9$Ru z^Ok7Pq)rk^ld}vcQ5G*DFE*gvVipW8VU9a!llPZ+D`y#k(dBXlzG^_%Rcf<*X-oxW z#f;{Z0dlBLw32dhmXDC^R+5pE6=$AhFU0jH|0Bzu@crA+W`pv^>irs|HD{S7syw@Q zdE#2W>%yY4`4N+Bn>~^He|vEyD6cQ=)k0)8%hr_tMocbDDqBg`DxHo z5)7_9!0xs(*LOSeA5>-N)32NYD%TdpjpM|R`uQ^|+M2F_9vWl6|LSH(T3p+?1fCJQ z^F1T7v2kOq<3r<8mCcP8kH<--s**>=&$RYNnTk*?`|)0yLk?~%xSIOozP36~c zZQSC1QpBMT9cYWtAqN=V58X$3n2+yeGu2re{OP*O$0Dh{mVIGff$YlV^d!LZ|=Q(u3AeL{)X%XwXY2*$6`a`xyqLn~ej#7Dz{EI=d(4n6$TsBp&KFUJYkBFuG|3tng;B5@&Vdsi+DE3B(hR zI?Ke^))FE-b!M^ct0XJ>#i4oNkE! E0Dv&>G5`Po literal 0 HcmV?d00001 diff --git a/__pycache__/masses.cpython-39.pyc b/__pycache__/masses.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8efab470a582ef857bd5bda99f3dc145b11a4ef3 GIT binary patch literal 50973 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�VH+eIkM}p8E(Oj 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 literal 0 HcmV?d00001 diff --git a/__pycache__/options.cpython-39.pyc b/__pycache__/options.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..09edbbd78ccaad7196a6e5b28ab34458aa37e7d3 GIT binary patch literal 2030 zcmcJQOLH4V5XV;!%aSa~vaR^-IDT7xNOt1L7!qQjicm$x9N-XinOg6RR~zrkGrNYE zTqs=m61k8g7rqR)xdA5^M{Zo8yERTJAAnWuzvj0+{g~d-tX-{^Ex2C)_^rcW^e4jL zl?OP6TQxwQTHNB9Yq*8=Q?8rg*{`i;&H>ANR~G0PZt@Wp%(J>#4zsVVZjR@`C$ERU ziW4sim6I88MMq5dB|7^+uQESFGM;^#ePyu>QI6+{vP46?K$IgI=0&1BQOVebh{}9~ zYz3lO^yVo@k6{!O%F-T@!PHXwguE=$?srhiJ+8O%g2|+Z54?p=qL3Lo-Bc#&4Eroo`Sr zb3~hF<~&i;*cOPkjO{MbwyA89Xov4olzT)iLrX+$zDKrYqJ4g!Xocv3iMdL2U}%l# zp`mr6j;UpX=+LZTljs9OO`;>?w?*`!$-YhW5r0J4cen+c^6`nTor=)u1-3kAXQ}Uh z-Yt1yA|y*9-~H{`Y5n<8?O5j>+jqXvBaST-=0uU?s+<2b>PcNf3-dxRF;*{BLMAu= z!lmmpzyIWRjxX$x^`cY>J?!|Yf?T?Anfi_$>cVa4?z2xI8yC{MWWKl*{tf8{~fIk}E=no=Vr=4g03DE26*zues9Zo(K~Yt3mCvlPK^UbWiNi5xN+_s$&_w z&=Wz#1@thDeJ^xPka`gLzNx04q7W)SO4JRW6}lLmok1+y)wSCZJGDa&mAzx%3*a5p zVhQ=96sz$Wv>0+ifx%S+GQjxw{@(sxYroYw+zw(-SB%*-6APq1z1e>I`ptFWu^zfe zMJlce(13&1g|0}!Q%7*>i>@f)L?LIe9pEMAWuUmutJn*5Ri%z2lrlXTe-BL$6VL4> z{XjW*H+m?AO{BUbU%(!dLg4Od?&@3|#S#z6Zt)az!AzM0lz3>$A(R425v7EJhr6tx zR8dAz>L_C<<0um-c)H6;lqr;Hlo^y+lsS}nlm(Q#D2pgdD9b1-D61%IDC;O2D4Qrv zlr5BPlpT~^lom=GWe;T^q?v`j3I9wN&cCyztA4TMLwNkpQM(rfqTT;@v;*OH4mt-9 z+Oh4N+pbV;=)MEZx5ETCm1;-*4@@h5sf&!-%oz4gJqNKewg2UJRX5+Y)@{lY_}D@I z&<+G+y380SOf&8*b}AO6oDJ literal 0 HcmV?d00001 diff --git a/__pycache__/reap.cpython-39.pyc b/__pycache__/reap.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f957efc0d138cb8bf3443c911f3198f47e079e1c GIT binary patch literal 5795 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 literal 0 HcmV?d00001 diff --git a/__pycache__/s_vectors.cpython-39.pyc b/__pycache__/s_vectors.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7a8dec6f802acc3d49e5f80fa88827e822269fc7 GIT binary patch literal 14226 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 GoBs#n%cg_? literal 0 HcmV?d00001 diff --git a/__pycache__/ted.cpython-39.pyc b/__pycache__/ted.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..22d925d75d8041c8e6a4098e21b1319936d18e1e GIT binary patch literal 6325 zcmc&&&5s;M74NG4n4aDldt*D^_1Yv&93U%&HTiOog{%O!LL{?6_8!PcR%>>ucX!r3 z-Lus_ws+ElP#idczfh(87^u90H>N^pf(2TG;mZTw(HlCW zHa*ZfM#EIJ5m=o{qr$XTHDLT zwQ%zR!dGOMiji}?Fx!wy} z&G1ae56-@L_Qe;@bepYf&2>LM(~80tri|%yB7u71i>2;%W_w;cY$u*~2uflKBaKXYJ9ddZRL#cM>Fu4~seMc<|IN4ghODIT&;w}}4 zbEA2)9p4pHna%XT4>KNiGc(?3c75gi%#_V=-OsFMx9f)@GgTmFwadLQX?OgKQbsb< zMU-Ux($@hY7E)$+dO_0e2HP21ktTFE>VUypm45S@h;D@0OwwEpd{3!bv?aMZGZ3F~ zW~@nnD{~|QEoV2X6crvZ3v#u$wwAGWqdsB)+UqJh@`ARIOqadz2#9zAg~ko`40G6V zc8b}|!0!-h$3XWh6akQZ2zv@RiZ+G)??C`V;EfVX`vg$DrprqS6I|g0WD`E--C}c) z0DepusvSK?ZTeeGm=s5(FEtiagb?0{izSK+AZKEESgCPLLu^=c8c{z$ECEln0#6kk zTVkl=xF&x)>SvO)7|NqIlvm5FvaG=G|NIKpP_oeu*WHa~?5;WDac#2lMJ64h#9;px}E_g*d6?ZVNDbMhzqQ3 zo>q#z!loVKj+WY~PT0DBPsK?BY%dNXDL<&*?+rw_1!^LwV+UU?V-%Ff*{GLlq@_UK1uh(+9Nq#SJ4xnL@-*XLRzaK07 zZiN3V`|TipFJxv43@Y+efdNqm!eETzR6J&;;!)!4gGVkk36BzIUvK7elkg~U4xnKY z9=V1x9*-Az=%Fb4@RQO39WQWV;jhd7{4_Wfed`5gj{JUs8Bw1KvvD*`#jidUzY=F3{Bo&D z_?0;OdOw$&gkOns01cDy%Qckoo6GUT8D$=4KTap86t~M%r*kHq1Jx<;Z^QH5RuGhI8$iaK{=%21K7D)0>d%aHoO2&Amz2M} z^xWDYza?33o_p>q7zwIh#HZq3S-E^MAL^xeAn6#7#&29)zJU9Op4V1hzkCHE71w?J z_3z}wrPr1ff$w*R#2ZAwVj3);(sLNW`ZiJ)?&&@TKK}yh+;tZZW!73GDPf~-HFS+p z`H-x(8ifKkU(rS)N1jG|R&6Fx#|w}WqJ&nG)p2vjHM@|>4kJkuBTqDHn2Dn9xPsi* zs8U1a=0mmZVQsPY$jzxy!B`$HPVx(69NnWDwfydbbXB*PWGu{Bpzc%|+sxRtM{ib7 zqsvQp<9Eo5xS89yOVLf8zEnGe?|i9lu_O4M!hMTw^BkF+>tn;1{crjo-J|#K{3L%5dY|O5)!F6T`IxLQOzT6#M%%E(ZH45w$!|QZht-o(jsbNZJlcTZBr(P)<+fX(%-pQw=NMvJGd}KC0Rm zoy3XySqJP8YFK;tCZZ%Q$gdz&uHw-{#rhZ Q^OQJ^DPu{S6Mp)C0L0X_H2?qr literal 0 HcmV?d00001 diff --git a/__pycache__/transf_disp.cpython-39.pyc b/__pycache__/transf_disp.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..faa236feef5f6d9c7f736d16267c2a543801776c GIT binary patch literal 9601 zcmb_iO^h2ycJAswHh+f08I7bFNtW7{VT;aaWc_))imX_YBin#28!KgPFtMo~c5{Xt zvYS)goWE@%iyb4UT|kFqvDnkh(Lt~Qa?ZgBa>#KJ1ldI+hfQ)wbW4H&0g{cC?^Th_ zpP8`)Y)Eub-WRrg92?pa1+PHUEyH{4-@ne>yU6;|eKp6_>S?3d3D( zsco&IF)GtqN?WfO;#qH*?M%gD%DakdxaJp%YkJvTt&(%u1ErjKf?kySWtM0Se*-tO z)$pCx3ZAS7-}P!yz{47mjQ%ua-o_Q~Ao0ZT71d=G%{}YtuJHw{=&tEzzECQLYq?q6 zO*iM}anHB~cM5mQExOaVXWf!JgL}@Mb&uhmcjw&WxEI_L?n&II+G=L+OJaMiOrUET>o&kpK#wAu*mu*Msm$i`C? z*d3481KzeB-)=-6ccR9IXGfwZ6eAn>qN8Om+VngS`Je(Sb}b0F3w$Eab}?kjsd;VB zk3#h1+BJtqUf4jVV|9z7t8UovS8T_wH+UG?=*8oUHlX$#Zr`~Wd43r1i771QM9cTZ ztbMQMg`vZ@Y5ujq4g`t-?aft>dyBH8+xA;__s-`J zFWjND{Q1Sp{SmsDx^IV#cBi#%F9QkS_kQ*2eY@deagAu(1}40*wP=Td-3n+OpB{q<j{h*u;pups zM|#3l!0p=oC$#YrjeGU-$;2Wqt42X9(ZLTJNj9u*$o-n=J9uG9DP_p8TBl7-gq`gq zi}qEj3lr7vB!O9Fbe76CnP1JYqC3*0BW24&gHoR83km#Y;s&kTaJWt63WoHo7fv@1?fadgIy~*REdbIJGrr#S1S1 zlp6M#<45fPtawT8?jNZSJ!G>rkzM1qfY*)DrW`RvmkIIU^M z>Vg6~@Pd5aXQ!zrl;4D)ACyM9J#fc>0=dF?2}S@Ht|>Q_^`%(Zn*wb*mu9g!E!ry0 zQgddX_;MCB#E*0Ra!~9O?;ej%xY{mbN|X_EJ>H+|*`A6TeeYzfy2eSG-*KAvzDl&~ z3G(wjZ3X4k`H7aZVwLlI3$eBj+Q)2t4l_R`dN-P9J0z^{@+@XCABJtti** zQ|vNHxy$Nm^nz>tNbQ;5Sc|>aJPUMx*0W;E#T=0u3yP}r)E;3xPxHp!1iB)Z6}c?s z_Ri6sZ623zusKI}H{;Sfn-$O0zJ$x(&q8jfakegcp>}!d?fF_}(w2r;wGK>v=>HP! z&$z~#`dH(+u@xS+YFU=)V{P=`(jQ5zM^|{nnjmiuU(*1GL)UY7E35~t25V8*zwZ~o zD|x|1FaCfD3Hy?eiRXoEE8PE=Uw`@UfBWI`$G;;4^v=S4(!?$M?oi`?*J*XV@W#&h zgH`9hcjM+Yzjwp_-VOWe()D`p32jQ)FosJ)?a3A7R^I#bzx?Tc{9@;Vay68&G;sUXWM9Fo1H0iV3@&P5}MxF4=ciz1o_+9dx;* zl2T1b6MN0u-h|LuD!(kGTf*+}DU6+{AKd0JPo$7bG7y@e-$)GD94j85BNE-miup7> zYR+<)Xl-XJ$wDJ`x{+7CE#zUMcX-egGBe4OdaFwHmayB20V}0i<3;Kq<5z{Lk{BJ1 z;>09#2RfYOEF^uWzo6sLZ+9p$?IXWTZA`)UaDSW33YoP7@ zF6RMH%#IMHiP;wSa*m&+&Mlgt&`PXP(cgivm4oWb-Flt>Hc0qQqQh)mZ!2LqDCTrj#^^8gYB&RVePDZ(LnD{b&Lh&P#jSXSVWBs z^}%lz52V$EUifQMQ6goJt-wO)>5&>i$~N`pV8^cZ462P;1UrPvW5_C(EhxLpRp%8* zShfdAjJD<>bdY2R=rW+ok{sL1VdrJ`)qS<6ub)as#=aEV=ieqq&OhhKlJ2OHhbxhE z+95N9Jl!kM++u5A6Eb<~G2>f8&g;#hz+swZBiia~dM|fGow26$@^S7l3!8DC`f#-f z5_%4n)x6Tn_L0a61pYWhU`8VFn0@x02@GbQ69Y;2Yz!pbp%{$4O-W}Sf>i-n%}T7| z!oJ=ky*~9=<^M2-$gvcy%$ojK4So<$x%wRVu30**xE4?vM{r1wI?(^c7(MzBsH*&L zP~J!MTMEX`)5ycJH&NEdc#1HF9{X{M@?47YYZEBXJtxYN?%60yx@V&->5fAA_z23x zgHw-nE^UwjPo79oKFE{9x@?~(b#BJR0eaxZBG5yR!?Keo>!Vi`=&9?!PSHEr-=%*w zf!)dH#7@#Z8#_t&Z0sc6QP|CoU^m@g)3jKVzJ4QJ)4~yJT6oSiNxEmRNzy%gO_J`Y zHJut+Q>nkEl30_mUQE{n`&CHO$@g^nIoBlVp1meX_v|%Ex}(-~W@Jq>{WZ<>*Yr=w zzYuH9v$0MkBB#pdSjUMpCr{J-JT%)AGH+IJDa!ZjZ_5WfbLhH$@vk2Bi+}a#s{!Fx z<#WR1;U%IiQ$og&v~UW`f$zdjlE+B+ry@Q>m84AhbtEv4oK~$$WXTjPsg{>g=R}Pt z6KBd~VZ-4KXBi~ujt;BvrSy-*)3WJ+04LT?Bbg@87s%2c*i2o*d&6I35G{G@>5t+ZSYgz_y>v3;;&JJH-A;@<)Uer@P`dZb-b0(k}y7r=sgs_jzdc* ztVXPIXKrK`DVvWOmE^Rd?ImV%0}sQQ!0ANufvaForMdN=P`aanOFC za2L%nPda|^Pbr}Z;i$lCwID1T6AR#fKqQ}0LcW-x`Oe=%_8P5&CZ@1OnBzOgCs!i& zTaBha_>mVVgG(&s3q0UF%;xF*t;p$P%7$E&C{y7%P*G;Ws@3{*v>YnSMDVx7Mqa^P zi%pzbrNwJexhO+jZ0^hFVSN^LI(&0v8|LEN02D(&F+?UYYB)B*=LKvc$G=j}9}3PR zEFw`oY&s8n%EP9^QLDxs6i;IIAUhU3%#;EV*AIA@45Ck>Hk@S5{Fp321|L9VD<*Li~) zuTc}#yH-)X>lMAT+PEyzE4)p$hajIwEfHGPCdxLqQw{k zljAQv;BjOQc?+WqEOug_fw5D?+kyj1GO)lH6kuqrX8|*Tu|RTwvx$QeIRy!{L(sz(dppo>%+&o7C}#LCdRkTMkcq*=Q_N zs0D6fYW+#06$bvI{f<{_bi+mAeYr~;%f<+HI}mRDdaz`_7i_|7%w-sb)yjw=Snsxq{r)G12f4v?XcmooAZ)u-Ia17s^2STixOjL4Z31s|jSK5?Q5P~@d3D6*HwUC#sa zVvGaHb555Kp`>bl6Any8B?(j7-Na|aX>gzp_U))(T*r7rK+4%8ck2WeoVLm&2oF&9 zh(MrCHQ0`)4uJqR(ij9|S|mo>-$aXyiM@0al3o$ILkPW8w_pQ`?I||pi1zr>JW{wx zt~pwHNTixrg%E5KsTQ({>TFFy_IoH_A;?BmND(UJFhhb&%cF6N{@-yEy7>9<;vq)= z290_oC>7N?V5NS7zB&g%nLi4Y?V4aXw4xvB0?Ld1bOPNVc#|WB!XZ5`EG+~tU{D~1 zUPHJ-9QuAH+#d$^9t;d|n5QE@_D*j)F2vJtnUMP?gJ-2lL4<5G2N_>Nn6Ctf0CP3C z{S<_C5CVyFcq$BXq(Lc^6KD8W(G+Rf*lHGcwcboTvxmN27(a~kNGYCa&d8qoW6U;> z!A)dFb9=`{zi^T9ml2}*yY-hx%HXQuvvAVG4T(_C3D=bO0Y$$wBk!@GiVM&>)_qRV zv$Fc+DSqO-CtUdVcFqe8L;<%!pd68LSHy;;V|m3}+A+wRe`6>25c&f0yXM^}pOj{R zI1&yId}RzGL`;(5UbyNYh)>55dE^nn!X?W77A1>F5<>(;`TJCGhmwnwyg~^H3Vw-_ zS1EaolB-Dir>TnR3#T@}LKU>7Di*x)Rr**U$s*(`XUbnkO_GZ!z%1!SzZA1Xa5QLD z4By+V`jsr*$j8IrygO&_qWo3v5s6&itr3E(eot{xO+ACS`iec>|e9 zi4g^a?}@ByiqM%Nl8KlXnA?oarqM4k;ISs=M;RF90W7MNP)06!fi}4!nYTW z>vX7Q*$Errh>c*%;0`epLNti%j2N=wl%A0aQ81riQ*lr~LGiCgh5FRS4(ic;np~$xHw7qII$yKX}eRtvWs3wJKb-nAf`Zbwq)eUOZ zDt{5f$lW0}(>=-xOPmfRyh91uB%E|ICoRKCs&e8%xu1sTKk;N!1)c1Oe?(Z_V){9S zDgT*!(fUJ0w>p+?8CKRRShH3J_pEh6(3kUx;dk4eZ2?_U5YJ0^f%q6nqN`EY1aV~n q;$t+nzm$IZz=>t~CM9oDLNggbHl1Q(-IU1O0>ny4mb)eQkoJEitn(fK literal 0 HcmV?d00001 diff --git a/__pycache__/zmat.cpython-39.pyc b/__pycache__/zmat.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..813b12cfa15c184fcd7de927ed6b047a260e6a57 GIT binary patch literal 11206 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 P4z-vLJ?PK(>c;;82Va0S literal 0 HcmV?d00001 diff --git a/s_vectors.py b/s_vectors.py index 09fb5aee..c18eaba0 100644 --- a/s_vectors.py +++ b/s_vectors.py @@ -41,6 +41,8 @@ def run(self, carts, B_proj, proj=None, second_order=False): # Torsions, # Out-of-plane bending, # Linear Bends + # LinX Bends + # LinY Bends # Toggle this to convert from bohr to angstrom # self.carts = 0.5291772085936*self.carts diff --git a/test_suite/.nfs00000000504572b10000065d b/test_suite/.nfs00000000504572b10000065d deleted file mode 100644 index 96fbed9c21253d6d7a348e8a92ca2e8959dadbd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 PLdcy3mkO~4UsC-)X17|{ literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..88e3f79dd221b8262f39b10d410bd4c043a7d8a3 GIT binary patch literal 1514 zcmZWpOOG5i5VqZ~>6xD0*+)Wb@}C$&mwxnIji|3`bu%V|xW@3zAn zgFMm)fH-VNTfD|U08brM8!9(>ygHoCrC6k#X*TD%Of^(#{w9W!7=HyNq+wYXjjUIR z7G+Z~EoOi_ovGE_D3cL z4zq2}Oq`I~TBDv(&~bz&3o;T)-YW zWzy`W87m6dyOCL4HcSeWfH{4(%nJ=Mn6Rh;q0FsRoz=^NJ81g6sGqSStyn2coGND1 zZKT=x!et0|wWIdwZsdiR%6y$lY!b1|`kPP}6B!UnB z^!)^XgrSq0pqEF0n;w|KC8Kg56z1KuufeQO33!=F@x9D7@cEC*M1Sk#1bk?0DRFg_ z_FXXqiWRD}rOpczRLc@VB~?S;xt84Ql5Kao4zFA7+3Jtk(RI^*sc^^3rQ)BTnqreAC_Y?(T2KtJf<8zAt~6`rq4x z{Eo``&jjT@6!|LvBaDW`p}ICA(;$>YmQ$d4i|rJ3OUWtey6lvpHo{6&b*j3L8QM|J zscYE^8_|-pq~$`m95tP$mhEsQYB?<}7sJ(P%~{iODO``*PFu_6a3k7uHnm&{x1w!l zn-X3eUSL&LdqF{7Vs+LyHk^z6;`Gu9?2|3Aukc?z>Xbeq23rc}eW|}8buzKCEwF8mtrL1ozl98%n2bOKYL8SYh%+w0 z?SrFgf7f?G?SXGzV`9Dp$1?C+BLFa z0oVKcoot_Xz}H;x*yp{|6)psXsFV2qNO1O1<(rA3mDAPAJx@w5GClIz_4M#YS1J=K zW#=Qh7X(H@6?8TzW3Z!a*eWanCij5*5bVz$JXJ-Ayqi25s$!C7hANEWAcM)oC>B64 zqO8=*_LUK*sw{cNg5BMlOwoZVhy-G31fPpGDgNB2P1dyV8C z>_JK7`Is1ZI7dFwpV5Il4JJATYi3P_1Z3%uTmo z6KgQPTm>N1GOp5+(SWi=Eo%H_S>i6(|3xJ9|C~sFg7QC!M1U|zrkrr*0^$ClRu%fx zn578^^qCQ^K5YQWDnPgbvw?8tjBr0{!WHL)v&NSELldq9ge#vTTm=XR7u=k1ujYjN z?Hu81ns9{~;Rmno2%8972-^r35H2EILb#0Z1_FjbbP%o}Tt#>j;TpnQ2yY`?N9ZEFgYYiG zdkF6%^bq<8Hvqb}-juirGNvY;W|pEm;uiM0jerT6!v`R#)1ky;g7Ds2C34HI=>SD_gTwDTgbhQk(o|_6_@7Y>9gLHZzV+FeRT%dHwbhJtz f!v!%4`8^6fWCs8!4}Xo;4EV9mf6yurv{LhL^Co9- literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ad7e3bf3a09b99fb88dd87e4cd32d46147464ca8 GIT binary patch literal 4212 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 k0md|2D?Fr_EO}Y56nurPU~O7X z^?C)t=U*GSpBE7NTWucybl7xYCU<}kL@+}Z&Q>kZHH1-MSOuI*idHd`l&n&=npPQB zja7oGRn5-mtQOR*dWH>V24mKEh6`+0Fkww(xX31hDQhajB{m)GwsvROWHZ66HJjlw zn+xWx`3zUso?yXR$Z(bI4fa|4GW_^|YwW3DzqKDDIzj4WY*Vuuv@v>m3+yN3WY>qt zTBM7cYKPCG=EPm_6`gHjsb4sKN-ci421}9op~E~tb$Xe)si1a}`hqG^*F72Khq~@L z>JZ?W%iR?!RwIQ=%PWrH{$&MUkA)wFi8^uqZR(1MD{NSSBQ|DRZBBbOafH+E*&Hsi z1x-X-md{a=hQtYltBl+JAZ4fo^CZmVcOV`bB7p?%YcO?~M!%5JBG3{{bF(g&?%l*! zptOcML6C&X*=EfXKmYpA(yg@Pox0Qd?T_1^bi6&+{=>EQrycM84}Q4u)XHZa@5f^| zK4$-3?|65OGsmkheA)5Nym|ll!P5ZVI{1?4Tm?}7>%bScgKs+C^*2u4{OC^rm+pP_ z>W$&ej#s$y)6%W`-*@h+cc5}YsOtv~OEzBXa(XGHq3hG6;YL9W2`7y;-)V?d+F0&3 zf-JiY5;ej|G$4KMY9@jVQVx2wwJ}LKhx|4o*G)MkFIV0hN?h5Pt}Ho8Lb=E^pM5@F zKh#X54vQ@28qEc6f(WU44JwOH98+LcI`O)yHQV8G!tO;J9I|sO zgT#}?oFk2Xh!|c!rs4UxwqkZiFyhh?_OZ94KT;)me) zy>5Fo3TS&RWv&yp1ImsaJ$CfPcI>$CI37*fZWOu^SC1%&2<(-+Ikml>ou{)EugkG4 z4v$zfaCf2z!iKh}nVLCn;Jpuux`DL^hQW`3q~REALEPb!%>9H=Q{l z>sjsC4|^3?y+Y3Kys2jcXAMe`7nOYGNxAAmTs4^|l^=yDFV?x8%AO5H1Z|I(mHO;X z@xyZF>ghdsd19~S-H}(7e0rz$hPt~3B0ix??wqeM!=p#M1-D9S%)E5*2{t0F-NM zq)XEu&|?ohNXO3f+Iuhk6S%gQ{D59^>H=~)9wp>p_uB`Sz+$oVE0v-J&tJcfgL_%a z`dbT^p9~0lFl64gEMgIxS=crl@eHzTi#yo0r+pm?6L*Eh!+jcvL(KZmkrLb6~2mB4bHPQUdMHV3+xJC$Lj_c z*#^IguNqup*Z6gO-QY6Y7)KJI1D=WYeDxg-(pYF+ z=IH4YV8tWhN3#7Sl-j|;+)oF~&6c2TkNBw%z)!rC%Cw~lFDdCq#E;TIum1g$2T+Fb z7>3-?r);NI&-Rd}Jv6e0);L4Z#3q@#HL{6gtPXJvchl@R2PjXntJcJ}t+X)I^NTP_ zy|VT(r~^Jzpy=X^7i$MXKx@n^^6{&5pX13M>_ib1xek4tv`c<}u%-z>lS zbKo|ct!DGB4%D#Uq21kvJy^K2m7IUxkej=^n;JfBNR`#cN}~o+8L(j>4+m9WN-9$0 z^Qa-U@=@cOa!vWETs$ozl}kk25k3b)!opOQsac~ZXosGuitGmgmGVMFu~cr*C81DG z;-_6vf|WsWJ>Nf4F41dO1}Se>ix8_^7?BWSsw#YzgfvPo zg4cM=*!fiO!U)!q5&Z}kIqb~yh49Z+aW6U7H4CDehmSA@?uiIup7?^QGMK%Se#p`= zf~2q*JfvFlWH;_JVqCori%)#!MLwsh;7Pwtbp%!2H`#)F^;C#hs70?G3%D~LJxiD$ z`TE8+@~~^jmMUm!Lg2i)NAXEdEI}%8Nv~j<_y_8e@Ws?Jjk$eU*!j&8k6`M%{Z=>T zv~}8NfgiOvWjotD+YeibAH4QERJMXR3Lu$qOLCy$v-Oox(*B@E5bx%Iy5M&K?oDk52BiJ#IR% z(9KY-%}(xkP$JNkMM0ZaXU!LPOz1x;UYfP)bDCbD4>l#e(`i2!x&f=j*{LZdqM|M9 zA6QJ+_w*$cRqgS?X9s%8b6^rHnlv=g$8M_d64?Qr%6|pL)@Sr<-GZb(*qf%HbWxS< OGJ;q0*%uX|-2MZQ1#ZUx literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_s_vectors.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_s_vectors.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b828d94003d408a8580c1f09cba0d2075ad117f4 GIT binary patch literal 3276 zcmbVO4^R}>8Q;Cz`@{VMJVa28G~$exX6_&o5R13|!;Yji9l<|ynp~FK<#D+8C%bzX zE_bmJMKhpDV>M>{2iTCYO(~sbnvSEanaOC?sUf3D>>`AgC=rto9VewUIQ`xp$I#1E zr`@~vz2AG^?|t9*zV~MLW2{ya0nd*74qsCyK@8!+^hXDSWzfU{5G=uxJmDeLUK7x2 z2$Bd;9vzv`=skK>WAGT%-snk#Uc;LLW{+9rXn9M(>anVr;*9~DCtbxlJ|mFn$yBkP zpAoQo>?$_!S%I0JnJPB&*@0P}StP+_vT3Y|HM5qzT2Bs_)0W!~aUg=Vc95RgTw2>4 zZgx9Hv)l4mTLQ7^EV)agBXS8gqm0lJiBS2Q}1z9yNfn(`(MeU$Fb*0&g8BavsK#8-pLP9X8rkOm`P&WluVu91Fn{kUk)l&9 zCYf@QNhg_d3iH83WL(4SlHUD?QVe@d5E3lLOHomPA*IhH6;Ml zeQ0AvE%unUUU;Ow6+C8y)?ao|BM({lU+l<9J95&_!y>;wr(pK6t)Ix~W$x&;!LhGs z^w^dYo!2k@)}7+w!9z4@hfdm&lXiO0Gk0FmS|TT8)NFEo_;~y#jdJ#Pl^1^cmK#lM zk+u)%;AHo|dVR1U`;Ls7=)9vxZgllL*jYC}QxMGY^aU3u4))OK$j+00 zb49PDGE>v?S>w6G7VLf7*W&5seDH4XzkJ|y^H(xDNtF~WH~`+W7QWc!i-LFW+1u~P z7ls~k@zALY<$@0f(~>(>+Ik3rsVh78(LWonq%K68Z}d(q{;rEg1%F-KpYsJAZsoO- zi&c9^Wb_4Bz#iAN%E&UYYy1yIy)^n+Nzt3dCI9%Ik!SjrbzB~QTSm{9{HSgHd$5;d z*Y7s4j}4?Uhj&|Noz9*k^$g2L_lz7K?sgB)>A3XK{3!T6kh#0%^M7^8C`b4vGCX{T zMt9#GZ!qtJNIK8&TUD=XrBTn9Blceu^~z}J`Mxb{z8^_yZk?s);;rLv(`f$fftQT$ zK|+?S>wW*{KZL+6_)_hV3+}18G}43a9m|`ye|U&SOIF{^s(NEUMjyO0aQf=VJvTCqW=8j7)dwGr zp-QY;`^V1yzkn(wW{2h$4(-+qEbs>uMbBI@>qZA@9}K1*{NcrIB{b1V0*#0h5+RZG z8faSF*HcZ}I2j|`bm~aYlI`UM$(TdLHBwr=DXxuaW11#1PD$n%1-*{d#Pu;< zOuv$T4)qB9W+B6$_)5io7YyOC9Q>j-`7~-c97#_xr2NC`XOP@P`n z$Px^22^5`LRzUUe)8*BQA(SXBl$-`e@G~_$2abHW+F*o6uRrLQ6s-^mD(OB(fV#rZ z1jWQGxk9n5@Z!p2&D!c!73+j7Y+DN(66_e6mW3N}A>w5OCDZF;cpk`M!50dI8G%zQ zp!U{8{Ji83ictH6fFUY5Ua>9|;aQdHMSQ4+;k`j7z$s~7k*Vdd1;w^p-5rEjAqXKs zv3qMn0#rg??u9VV1Q{H>!=&grtQBFqxF`~4;-JjfYa%&Mc%}`WoIWV^sKF&@MTOHB zl_gXOe??FH$Ef%uAvnRw_-a>OD8RWIBD{|Yx&j;e_E@aK&A)EvjWSNs(D(hSsDP3SrLih+<48QYgT? z%=IQx?@Vj~(%}@iZ35JiO4`(vVwjv09>r@kAvguGE+YAPMHh?&!i|XowWmbulsHz< z;1w2?Z5St zf)RVo#bPcN`5+V>BM3|*-kw;;ggG@w>cLDCE=)9*L;fQ?=Z2ReA>zzEN*dv3!9NZB U)ZRuKwZ`qlW)o>5vnZqO-=V7!2mk;8 literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_transf_disp.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_transf_disp.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..006b721c98c1d9c0c8f65a6ccf948a1ca6d7f478 GIT binary patch literal 2111 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 S!KUgpRWnktkA~h9EB*sXZ$0S% literal 0 HcmV?d00001 diff --git a/tests/nohup.out b/tests/nohup.out new file mode 100644 index 00000000..25471a3d --- /dev/null +++ b/tests/nohup.out @@ -0,0 +1,46 @@ +proj singular values: +[2.06857334e+00 1.91769824e+00 1.86782796e+00 1.46614251e+00 + 1.30156659e+00 1.13504168e+00 9.83677468e-01 7.36371481e-01 + 6.16882787e-01 6.16129481e-01 4.86307077e-01 8.00804860e-07] +[[ 8.00121376e-05 -1.32715756e-05 -1.73338728e-05 -1.73338729e-05 + -1.02628585e-05 -1.80496698e-05 -2.12604120e-05 -2.04478488e-05 + -2.04478488e-05 0.00000000e+00 0.00000000e+00 5.00626441e-05] + [-1.32715756e-05 5.90035575e-04 -1.42964000e-05 -1.42962793e-05 + 0.00000000e+00 -1.62927551e-05 -1.62927552e-05 1.75444777e-05 + 1.75444053e-05 2.59451267e-05 -2.59456007e-05 -3.20145289e-05] + [-1.73338728e-05 -1.42964000e-05 5.90035575e-04 -1.47211823e-05 + 0.00000000e+00 7.52213196e-06 1.84338806e-05 -1.57546251e-05 + 2.05416834e-05 4.34117245e-06 2.83001423e-05 -1.09112087e-05] + [-1.73338729e-05 -1.42962793e-05 -1.47211823e-05 5.90035575e-04 + 0.00000000e+00 7.52323926e-06 1.84338159e-05 2.05416834e-05 + -1.57546251e-05 -2.82999534e-05 -4.34098373e-06 -1.09111166e-05] + [-1.02628585e-05 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 5.78617728e-04 -1.21882934e-05 -1.21882934e-05 5.81936740e-06 + 5.82022404e-06 4.38837729e-06 -4.38818656e-06 0.00000000e+00] + [-1.80496698e-05 -1.62927551e-05 7.52213196e-06 7.52323926e-06 + -1.21882934e-05 1.91331520e-04 1.56088852e-05 -7.79557410e-06 + -7.79672166e-06 -1.25700962e-05 1.25695499e-05 6.80353003e-06] + [-2.12604120e-05 -1.62927552e-05 1.84338806e-05 1.84338159e-05 + -1.21882934e-05 1.56088852e-05 1.55264109e-04 1.00850854e-06 + 1.00856159e-06 -1.56356767e-05 1.56366743e-05 -1.42465168e-04] + [-2.04478488e-05 1.75444777e-05 -1.57546251e-05 2.05416834e-05 + 5.81936740e-06 -7.79557410e-06 1.00850854e-06 1.55208823e-04 + -1.12229743e-06 -1.04056524e-05 -2.64304905e-05 -1.16816043e-04] + [-2.04478488e-05 1.75444053e-05 2.05416834e-05 -1.57546251e-05 + 5.82022404e-06 -7.79672166e-06 1.00856159e-06 -1.12229743e-06 + 1.55208824e-04 2.64300382e-05 1.04052001e-05 -1.16815711e-04] + [ 0.00000000e+00 2.59451267e-05 4.34117245e-06 -2.82999534e-05 + 4.38837729e-06 -1.25700962e-05 -1.56356767e-05 -1.04056524e-05 + 2.64300382e-05 3.76136297e-04 1.94198975e-04 -7.83770679e-05] + [ 0.00000000e+00 -2.59456007e-05 2.83001423e-05 -4.34098373e-06 + -4.38818656e-06 1.25695499e-05 1.56366743e-05 -2.64304905e-05 + 1.04052001e-05 1.94198975e-04 3.76137316e-04 7.83768965e-05] + [ 5.00626441e-05 -3.20145289e-05 -1.09112087e-05 -1.09111166e-05 + 0.00000000e+00 6.80353003e-06 -1.42465168e-04 -1.16816043e-04 + -1.16815711e-04 -7.83770679e-05 7.83768965e-05 3.78284543e-04]] +Traceback (most recent call last): + File "/home/vulcan/mel64643/packages/concordantmodes/tests/test_g_matrix.py", line 368, in + test_compute_G() + File "/home/vulcan/mel64643/packages/concordantmodes/tests/test_g_matrix.py", line 362, in test_compute_G + if np.setdiff1d(np.array(G_ref), np.array(g_mat.G.tolist())).size: +NameError: name 'G_ref' is not defined diff --git a/test_suite/ref_data/dir_tree/template.dat b/tests/ref_data/dir_tree/template.dat similarity index 100% rename from test_suite/ref_data/dir_tree/template.dat rename to tests/ref_data/dir_tree/template.dat diff --git a/test_suite/ref_data/dir_tree/template_ref.dat b/tests/ref_data/dir_tree/template_ref.dat similarity index 100% rename from test_suite/ref_data/dir_tree/template_ref.dat rename to tests/ref_data/dir_tree/template_ref.dat diff --git a/test_suite/ref_data/dir_tree/zmat b/tests/ref_data/dir_tree/zmat similarity index 100% rename from test_suite/ref_data/dir_tree/zmat rename to tests/ref_data/dir_tree/zmat diff --git a/test_suite/ref_data/f_conv_test/fc.dat b/tests/ref_data/f_conv_test/fc.dat similarity index 100% rename from test_suite/ref_data/f_conv_test/fc.dat rename to tests/ref_data/f_conv_test/fc.dat diff --git a/test_suite/ref_data/f_conv_test/fc_cart.dat b/tests/ref_data/f_conv_test/fc_cart.dat similarity index 100% rename from test_suite/ref_data/f_conv_test/fc_cart.dat rename to tests/ref_data/f_conv_test/fc_cart.dat diff --git a/test_suite/ref_data/f_conv_test/fc_int.dat b/tests/ref_data/f_conv_test/fc_int.dat similarity index 100% rename from test_suite/ref_data/f_conv_test/fc_int.dat rename to tests/ref_data/f_conv_test/fc_int.dat diff --git a/test_suite/ref_data/f_conv_test/zmat b/tests/ref_data/f_conv_test/zmat similarity index 100% rename from test_suite/ref_data/f_conv_test/zmat rename to tests/ref_data/f_conv_test/zmat diff --git a/test_suite/ref_data/f_read_test/fc.dat b/tests/ref_data/f_read_test/fc.dat similarity index 100% rename from test_suite/ref_data/f_read_test/fc.dat rename to tests/ref_data/f_read_test/fc.dat diff --git a/test_suite/ref_data/f_read_test/zmat b/tests/ref_data/f_read_test/zmat similarity index 100% rename from test_suite/ref_data/f_read_test/zmat rename to tests/ref_data/f_read_test/zmat diff --git a/test_suite/ref_data/reap_test/Disps/1/ijk.dat b/tests/ref_data/reap_test/Disps/1/ijk.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/1/ijk.dat rename to tests/ref_data/reap_test/Disps/1/ijk.dat diff --git a/test_suite/ref_data/reap_test/Disps/1/input.dat b/tests/ref_data/reap_test/Disps/1/input.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/1/input.dat rename to tests/ref_data/reap_test/Disps/1/input.dat diff --git a/test_suite/ref_data/reap_test/Disps/1/output.dat b/tests/ref_data/reap_test/Disps/1/output.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/1/output.dat rename to tests/ref_data/reap_test/Disps/1/output.dat diff --git a/test_suite/ref_data/reap_test/Disps/1/timer.dat b/tests/ref_data/reap_test/Disps/1/timer.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/1/timer.dat rename to tests/ref_data/reap_test/Disps/1/timer.dat diff --git a/test_suite/ref_data/reap_test/Disps/2/ijk.dat b/tests/ref_data/reap_test/Disps/2/ijk.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/2/ijk.dat rename to tests/ref_data/reap_test/Disps/2/ijk.dat diff --git a/test_suite/ref_data/reap_test/Disps/2/input.dat b/tests/ref_data/reap_test/Disps/2/input.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/2/input.dat rename to tests/ref_data/reap_test/Disps/2/input.dat diff --git a/test_suite/ref_data/reap_test/Disps/2/output.dat b/tests/ref_data/reap_test/Disps/2/output.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/2/output.dat rename to tests/ref_data/reap_test/Disps/2/output.dat diff --git a/test_suite/ref_data/reap_test/Disps/2/timer.dat b/tests/ref_data/reap_test/Disps/2/timer.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/2/timer.dat rename to tests/ref_data/reap_test/Disps/2/timer.dat diff --git a/test_suite/ref_data/reap_test/Disps/3/ijk.dat b/tests/ref_data/reap_test/Disps/3/ijk.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/3/ijk.dat rename to tests/ref_data/reap_test/Disps/3/ijk.dat diff --git a/test_suite/ref_data/reap_test/Disps/3/input.dat b/tests/ref_data/reap_test/Disps/3/input.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/3/input.dat rename to tests/ref_data/reap_test/Disps/3/input.dat diff --git a/test_suite/ref_data/reap_test/Disps/3/output.dat b/tests/ref_data/reap_test/Disps/3/output.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/3/output.dat rename to tests/ref_data/reap_test/Disps/3/output.dat diff --git a/test_suite/ref_data/reap_test/Disps/3/timer.dat b/tests/ref_data/reap_test/Disps/3/timer.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/3/timer.dat rename to tests/ref_data/reap_test/Disps/3/timer.dat diff --git a/test_suite/ref_data/reap_test/Disps/4/ijk.dat b/tests/ref_data/reap_test/Disps/4/ijk.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/4/ijk.dat rename to tests/ref_data/reap_test/Disps/4/ijk.dat diff --git a/test_suite/ref_data/reap_test/Disps/4/input.dat b/tests/ref_data/reap_test/Disps/4/input.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/4/input.dat rename to tests/ref_data/reap_test/Disps/4/input.dat diff --git a/test_suite/ref_data/reap_test/Disps/4/output.dat b/tests/ref_data/reap_test/Disps/4/output.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/4/output.dat rename to tests/ref_data/reap_test/Disps/4/output.dat diff --git a/test_suite/ref_data/reap_test/Disps/4/timer.dat b/tests/ref_data/reap_test/Disps/4/timer.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/4/timer.dat rename to tests/ref_data/reap_test/Disps/4/timer.dat diff --git a/test_suite/ref_data/reap_test/Disps/5/ijk.dat b/tests/ref_data/reap_test/Disps/5/ijk.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/5/ijk.dat rename to tests/ref_data/reap_test/Disps/5/ijk.dat diff --git a/test_suite/ref_data/reap_test/Disps/5/input.dat b/tests/ref_data/reap_test/Disps/5/input.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/5/input.dat rename to tests/ref_data/reap_test/Disps/5/input.dat diff --git a/test_suite/ref_data/reap_test/Disps/5/output.dat b/tests/ref_data/reap_test/Disps/5/output.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/5/output.dat rename to tests/ref_data/reap_test/Disps/5/output.dat diff --git a/test_suite/ref_data/reap_test/Disps/5/timer.dat b/tests/ref_data/reap_test/Disps/5/timer.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/5/timer.dat rename to tests/ref_data/reap_test/Disps/5/timer.dat diff --git a/test_suite/ref_data/reap_test/Disps/6/ijk.dat b/tests/ref_data/reap_test/Disps/6/ijk.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/6/ijk.dat rename to tests/ref_data/reap_test/Disps/6/ijk.dat diff --git a/test_suite/ref_data/reap_test/Disps/6/input.dat b/tests/ref_data/reap_test/Disps/6/input.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/6/input.dat rename to tests/ref_data/reap_test/Disps/6/input.dat diff --git a/test_suite/ref_data/reap_test/Disps/6/output.dat b/tests/ref_data/reap_test/Disps/6/output.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/6/output.dat rename to tests/ref_data/reap_test/Disps/6/output.dat diff --git a/test_suite/ref_data/reap_test/Disps/6/timer.dat b/tests/ref_data/reap_test/Disps/6/timer.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/6/timer.dat rename to tests/ref_data/reap_test/Disps/6/timer.dat diff --git a/test_suite/ref_data/reap_test/Disps/7/ijk.dat b/tests/ref_data/reap_test/Disps/7/ijk.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/7/ijk.dat rename to tests/ref_data/reap_test/Disps/7/ijk.dat diff --git a/test_suite/ref_data/reap_test/Disps/7/input.dat b/tests/ref_data/reap_test/Disps/7/input.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/7/input.dat rename to tests/ref_data/reap_test/Disps/7/input.dat diff --git a/test_suite/ref_data/reap_test/Disps/7/output.dat b/tests/ref_data/reap_test/Disps/7/output.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/7/output.dat rename to tests/ref_data/reap_test/Disps/7/output.dat diff --git a/test_suite/ref_data/reap_test/Disps/7/timer.dat b/tests/ref_data/reap_test/Disps/7/timer.dat similarity index 100% rename from test_suite/ref_data/reap_test/Disps/7/timer.dat rename to tests/ref_data/reap_test/Disps/7/timer.dat diff --git a/test_suite/ref_data/reap_test/fc.dat b/tests/ref_data/reap_test/fc.dat similarity index 100% rename from test_suite/ref_data/reap_test/fc.dat rename to tests/ref_data/reap_test/fc.dat diff --git a/test_suite/ref_data/reap_test/main.py b/tests/ref_data/reap_test/main.py similarity index 100% rename from test_suite/ref_data/reap_test/main.py rename to tests/ref_data/reap_test/main.py diff --git a/test_suite/ref_data/reap_test/template.dat b/tests/ref_data/reap_test/template.dat similarity index 100% rename from test_suite/ref_data/reap_test/template.dat rename to tests/ref_data/reap_test/template.dat diff --git a/test_suite/ref_data/reap_test/zmat b/tests/ref_data/reap_test/zmat similarity index 100% rename from test_suite/ref_data/reap_test/zmat rename to tests/ref_data/reap_test/zmat diff --git a/test_suite/ref_data/s_vec_test/zmat b/tests/ref_data/s_vec_test/zmat similarity index 85% rename from test_suite/ref_data/s_vec_test/zmat rename to tests/ref_data/s_vec_test/zmat index b03c8cbc..529a263f 100644 --- a/test_suite/ref_data/s_vec_test/zmat +++ b/tests/ref_data/s_vec_test/zmat @@ -4,18 +4,13 @@ ZMAT begin 1 4 1 5 2 6 +6 2 1 2 1 3 2 1 4 2 1 5 -3 1 4 -4 1 5 -5 1 3 -6 2 1 -6 2 1 4 T -4 1 3 5 O -3 1 2 6 Lx -3 1 2 6 Ly -5 1 2 4 L +4 1 2 6 T +5 1 2 6 T +3 1 4 5 O ZMAT end cart begin diff --git a/test_suite/ref_data/simple_int_zmat b/tests/ref_data/simple_int_zmat similarity index 100% rename from test_suite/ref_data/simple_int_zmat rename to tests/ref_data/simple_int_zmat diff --git a/test_suite/ref_data/zmat_test/zmat_custom b/tests/ref_data/zmat_test/zmat_custom similarity index 100% rename from test_suite/ref_data/zmat_test/zmat_custom rename to tests/ref_data/zmat_test/zmat_custom diff --git a/test_suite/ref_data/zmat_test/zmat_red b/tests/ref_data/zmat_test/zmat_red similarity index 100% rename from test_suite/ref_data/zmat_test/zmat_red rename to tests/ref_data/zmat_test/zmat_red diff --git a/test_suite/ref_data/zmat_test/zmat_zmat b/tests/ref_data/zmat_test/zmat_zmat similarity index 100% rename from test_suite/ref_data/zmat_test/zmat_zmat rename to tests/ref_data/zmat_test/zmat_zmat diff --git a/tests/suite_execute.py b/tests/suite_execute.py new file mode 100644 index 00000000..b844655d --- /dev/null +++ b/tests/suite_execute.py @@ -0,0 +1,75 @@ +import os +import shutil +import numpy as np +from concordantmodes.ted import TED +from numpy.linalg import inv +from numpy import linalg as LA + +from concordantmodes.algorithm import Algorithm +from concordantmodes.f_convert import FcConv +from concordantmodes.f_read import FcRead +from concordantmodes.gf_method import GFMethod +from concordantmodes.g_matrix import GMatrix +from concordantmodes.options import Options +from concordantmodes.s_vectors import SVectors +from concordantmodes.ted import TED +from concordantmodes.transf_disp import TransfDisp +from concordantmodes.zmat import Zmat + +class execute_suite(object): + def __init__(self,path,coords,s_vec_bool=False,disp_transf=False): + self.path = path + self.coords = coords + self.s_vec_bool = s_vec_bool + self.disp_transf = disp_transf + def run(self): + os.chdir(self.path) + self.options = Options() + # self.options.coords = "Redundant" + self.options.coords = self.coords + self.ZMAT = Zmat(self.options) + output_test = self.ZMAT.zmat_read("zmat") + self.ZMAT.zmat_process(output_test) + + self.ZMAT.zmat_calc() + + self.ZMAT.zmat_compile() + + + self.s_vec = SVectors(self.ZMAT, self.options, self.ZMAT.variable_dictionary_init) + self.s_vec.run(self.ZMAT.cartesians_init, True) + + self.TED_obj = TED(self.s_vec.proj, self.ZMAT) + self.g_mat = GMatrix(self.ZMAT, self.s_vec, self.options) + self.g_mat.run() + if self.s_vec_bool: + print("It ran") + os.chdir("../../") + return + self.FC = FcRead("fc.dat") + self.FC.run() + self.f_conv = FcConv(self.FC.fc_mat, self.s_vec, self.ZMAT, "internal", False, self.TED_obj, self.options.units) + self.f_conv.run() + + + self.F = np.dot(self.TED_obj.proj.T, np.dot(self.f_conv.F, self.TED_obj.proj)) + self.G = np.dot(self.TED_obj.proj.T, np.dot(self.g_mat.G, self.TED_obj.proj)) + self.GF = GFMethod(self.G, self.F, self.options.tol, self.options.proj_tol, self.ZMAT, self.TED_obj) + + self.GF.run() + self.algo = Algorithm(len(self.GF.L), None, self.options) + self.algo.run() + + self.disps = TransfDisp( + self.s_vec, + self.ZMAT, + self.options.disp, + self.GF.L, + True, + self.options.disp_tol, + self.TED_obj, + self.options, + self.algo.indices, + ) + self.disps.run() + os.chdir("../../") diff --git a/test_suite/test_directory_tree.py b/tests/test_directory_tree.py similarity index 100% rename from test_suite/test_directory_tree.py rename to tests/test_directory_tree.py diff --git a/test_suite/test_f_convert.py b/tests/test_f_convert.py similarity index 54% rename from test_suite/test_f_convert.py rename to tests/test_f_convert.py index 0279f608..ff8fb59a 100644 --- a/test_suite/test_f_convert.py +++ b/tests/test_f_convert.py @@ -4,6 +4,8 @@ from numpy.linalg import inv from numpy import linalg as LA +from suite_execute import execute_suite + from concordantmodes.f_convert import FcConv from concordantmodes.f_read import FcRead from concordantmodes.options import Options @@ -12,36 +14,17 @@ from concordantmodes.zmat import Zmat np.set_printoptions(precision=9) -os.chdir("./ref_data/f_conv_test/") -FCr = FcRead("fc.dat") -FCr.run() - -options = Options() -options.coords = "Redundant" -ZMAT = Zmat(options) -output_test = ZMAT.zmat_read("zmat") -ZMAT.zmat_process(output_test) - -ZMAT.zmat_calc() - -ZMAT.zmat_compile() - -s_vec = SVectors(ZMAT, options, ZMAT.variable_dictionary_init) -s_vec.run(ZMAT.cartesians_init, True) - -TED_obj = TED(s_vec.proj, ZMAT) - -os.chdir("../../") +suite = execute_suite("./ref_data/f_conv_test/","Redundant") +suite.run() def test_f_convert2int(): - os.chdir("./ref_data/f_conv_test/") errors = [] - FCint = FcConv(FCr.fc_mat, s_vec, ZMAT, "internal", False, TED_obj, options.units) + FCint = FcConv(suite.FC.fc_mat, suite.s_vec, suite.ZMAT, "internal", False, suite.TED_obj, suite.options.units) FCint.run() - FCintR = FcRead("fc_int.dat") + FCintR = FcRead(suite.path + "/fc_int.dat") FCintR.run() if np.setdiff1d(FCint.F.round(decimals=10), FCintR.fc_mat).size: @@ -49,20 +32,18 @@ def test_f_convert2int(): "Transformed internal force constants do not match the reference." ) - os.chdir("../../") assert not errors, "errors occured:\n{}".format("\n".join(errors)) def test_f_convert2cart(): - os.chdir("./ref_data/f_conv_test/") errors = [] - FCint = FcConv(FCr.fc_mat, s_vec, ZMAT, "internal", False, TED_obj, options.units) + FCint = FcConv(suite.FC.fc_mat, suite.s_vec, suite.ZMAT, "internal", False, suite.TED_obj, suite.options.units) FCint.run() - FCcart = FcConv(FCint.F, s_vec, ZMAT, "cartesian", False, TED_obj, options.units) + FCcart = FcConv(FCint.F, suite.s_vec, suite.ZMAT, "cartesian", False, suite.TED_obj, suite.options.units) FCcart.run() - FCintC = FcRead("fc_cart.dat") + FCintC = FcRead(suite.path + "/fc_cart.dat") FCintC.run() if np.setdiff1d(FCcart.F.round(decimals=10), FCintC.fc_mat).size: @@ -70,9 +51,8 @@ def test_f_convert2cart(): "Transformed internal force constants do not match the reference." ) - os.chdir("../../") assert not errors, "errors occured:\n{}".format("\n".join(errors)) -test_f_convert2int() -test_f_convert2cart() +# test_f_convert2int() +# test_f_convert2cart() diff --git a/test_suite/test_f_read.py b/tests/test_f_read.py similarity index 100% rename from test_suite/test_f_read.py rename to tests/test_f_read.py diff --git a/tests/test_g_matrix.py b/tests/test_g_matrix.py new file mode 100644 index 00000000..f733409f --- /dev/null +++ b/tests/test_g_matrix.py @@ -0,0 +1,65 @@ +import os +import shutil +import numpy as np +from concordantmodes.ted import TED +from numpy.linalg import inv +from numpy import linalg as LA + +from suite_execute import execute_suite + +from concordantmodes.g_matrix import GMatrix +from concordantmodes.options import Options +from concordantmodes.s_vectors import SVectors +from concordantmodes.zmat import Zmat + +# s_vec_test = SVectors() + + +suite = execute_suite("./ref_data/s_vec_test/","Custom",s_vec_bool=True) +suite.run() + +# os.chdir("./ref_data/s_vec_test/") +# options = Options() +# options.coords = "Custom" +# ZMAT = Zmat(options) +# output_test = ZMAT.zmat_read("zmat") +# ZMAT.zmat_process(output_test) + +# ZMAT.zmat_calc() + +# ZMAT.zmat_compile() +# os.chdir("../../") + +# s_vec = SVectors(ZMAT, options, ZMAT.variable_dictionary_init) + + +def test_compute_G(): + errors = [] + suite.s_vec.run(suite.ZMAT.cartesians_init, True) + + g_mat = GMatrix(suite.ZMAT, suite.s_vec, suite.options) + g_mat.run() + + + G_ref = [[ 8.00121376e-05, -1.32715756e-05, -1.73338728e-05, -1.73338729e-05, -1.02628585e-05, -1.80496698e-05, -2.12604120e-05, -2.04478488e-05, -2.04478488e-05, 0.00000000e+00, 0.00000000e+00, 5.00626441e-05], + [-1.32715756e-05, 5.90035575e-04, -1.42964000e-05, -1.42962793e-05, 0.00000000e+00, -1.62927551e-05, -1.62927552e-05, 1.75444777e-05, 1.75444053e-05, 2.59451267e-05, -2.59456007e-05, -3.20145289e-05], + [-1.73338728e-05, -1.42964000e-05, 5.90035575e-04, -1.47211823e-05, 0.00000000e+00, 7.52213196e-06, 1.84338806e-05, -1.57546251e-05, 2.05416834e-05, 4.34117245e-06, 2.83001423e-05, -1.09112087e-05], + [-1.73338729e-05, -1.42962793e-05, -1.47211823e-05, 5.90035575e-04, 0.00000000e+00, 7.52323926e-06, 1.84338159e-05, 2.05416834e-05, -1.57546251e-05, -2.82999534e-05, -4.34098373e-06, -1.09111166e-05], + [-1.02628585e-05, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 5.78617728e-04, -1.21882934e-05, -1.21882934e-05, 5.81936740e-06, 5.82022404e-06, 4.38837729e-06, -4.38818656e-06, 0.00000000e+00], + [-1.80496698e-05, -1.62927551e-05, 7.52213196e-06, 7.52323926e-06, -1.21882934e-05, 1.91331520e-04, 1.56088852e-05, -7.79557410e-06, -7.79672166e-06, -1.25700962e-05, 1.25695499e-05, 6.80353003e-06], + [-2.12604120e-05, -1.62927552e-05, 1.84338806e-05, 1.84338159e-05, -1.21882934e-05, 1.56088852e-05, 1.55264109e-04, 1.00850854e-06, 1.00856159e-06, -1.56356767e-05, 1.56366743e-05, -1.42465168e-04], + [-2.04478488e-05, 1.75444777e-05, -1.57546251e-05, 2.05416834e-05, 5.81936740e-06, -7.79557410e-06, 1.00850854e-06, 1.55208823e-04, -1.12229743e-06, -1.04056524e-05, -2.64304905e-05, -1.16816043e-04], + [-2.04478488e-05, 1.75444053e-05, 2.05416834e-05, -1.57546251e-05, 5.82022404e-06, -7.79672166e-06, 1.00856159e-06, -1.12229743e-06, 1.55208824e-04, 2.64300382e-05, 1.04052001e-05, -1.16815711e-04], + [ 0.00000000e+00, 2.59451267e-05, 4.34117245e-06, -2.82999534e-05, 4.38837729e-06, -1.25700962e-05, -1.56356767e-05, -1.04056524e-05, 2.64300382e-05, 3.76136297e-04, 1.94198975e-04, -7.83770679e-05], + [ 0.00000000e+00, -2.59456007e-05, 2.83001423e-05, -4.34098373e-06, -4.38818656e-06, 1.25695499e-05, 1.56366743e-05, -2.64304905e-05, 1.04052001e-05, 1.94198975e-04, 3.76137316e-04, 7.83768965e-05], + [ 5.00626441e-05, -3.20145289e-05, -1.09112087e-05, -1.09111166e-05, 0.00000000e+00, 6.80353003e-06, -1.42465168e-04, -1.16816043e-04, -1.16815711e-04, -7.83770679e-05, 7.83768965e-05, 3.78284543e-04]] + G_ref = np.array(G_ref) + # print(np.sum(abs(G_ref - g_mat.G))) + + # if np.setdiff1d(np.array(G_ref), np.array(g_mat.G.tolist())).size: + # errors.append("Computed G-matrix does not match the reference.") + + assert np.sum(abs(G_ref - g_mat.G)) < 1.0e-8 + + +test_compute_G() diff --git a/test_suite/test_gf_method.py b/tests/test_gf_method.py similarity index 61% rename from test_suite/test_gf_method.py rename to tests/test_gf_method.py index 65e3097f..f3d06934 100644 --- a/test_suite/test_gf_method.py +++ b/tests/test_gf_method.py @@ -5,6 +5,8 @@ from numpy.linalg import inv from numpy import linalg as LA +from suite_execute import execute_suite + from concordantmodes.f_convert import FcConv from concordantmodes.f_read import FcRead from concordantmodes.gf_method import GFMethod @@ -14,37 +16,13 @@ from concordantmodes.ted import TED from concordantmodes.zmat import Zmat - -os.chdir("./ref_data/f_read_test/") -options = Options() -options.coords = "Redundant" -FC = FcRead("fc.dat") -FC.run() -ZMAT = Zmat(options) -output_test = ZMAT.zmat_read("zmat") -ZMAT.zmat_process(output_test) - -ZMAT.zmat_calc() - -ZMAT.zmat_compile() -s_vec = SVectors(ZMAT, options, ZMAT.variable_dictionary_init) -s_vec.run(ZMAT.cartesians_init, True) - -TED_obj = TED(s_vec.proj, ZMAT) -f_conv = FcConv(FC.fc_mat, s_vec, ZMAT, "internal", False, TED_obj, options.units) -f_conv.run() - -g_mat = GMatrix(ZMAT, s_vec, options) -g_mat.run() - -os.chdir("../../") - +suite = execute_suite("./ref_data/f_read_test/","Redundant") +suite.run() def test_gf_method(): errors = [] - F = np.dot(TED_obj.proj.T, np.dot(f_conv.F, TED_obj.proj)) - G = np.dot(TED_obj.proj.T, np.dot(g_mat.G, TED_obj.proj)) - GF = GFMethod(G, F, options.tol, options.proj_tol, ZMAT, TED_obj) + + GF = GFMethod(suite.G, suite.F, suite.options.tol, suite.options.proj_tol, suite.ZMAT, suite.TED_obj) GF.run() diff --git a/tests/test_reap.py b/tests/test_reap.py new file mode 100644 index 00000000..31de349d --- /dev/null +++ b/tests/test_reap.py @@ -0,0 +1,56 @@ +import fileinput +import os +import re +import shutil +import numpy as np +from numpy.linalg import inv +from numpy import linalg as LA + +from suite_execute import execute_suite + +from concordantmodes.algorithm import Algorithm +from concordantmodes.f_convert import FcConv +from concordantmodes.f_read import FcRead +from concordantmodes.gf_method import GFMethod +from concordantmodes.g_matrix import GMatrix +from concordantmodes.options import Options +from concordantmodes.reap import Reap +from concordantmodes.s_vectors import SVectors +from concordantmodes.ted import TED +from concordantmodes.transf_disp import TransfDisp +from concordantmodes.zmat import Zmat + +suite = execute_suite("./ref_data/reap_test/","Redundant") +suite.run() + +def test_reap(): + suite.options.program = "psi4@master" + prog = suite.options.program + prog_name = prog.split("@")[0] + + suite.options.energy_regex = r"Giraffe The Energy is\s+(\-\d+\.\d+)" + suite.options.success_regex = r"beer" + # print(os.getcwd()) + os.chdir(suite.path + "/Disps") + reap_obj = Reap( + prog_name, + suite.ZMAT, + suite.disps.disp_cart, + suite.options, + suite.disps.n_coord, + suite.GF.L, + suite.algo.indices, + suite.options.energy_regex, + suite.options.gradient_regex, + suite.options.molly_regex_init, + suite.options.success_regex + ) + reap_obj.run() + + ref_en = -76.332189646734 + + os.chdir("../..") + + assert ref_en == reap_obj.m_en_array[1][1] + +# test_reap() diff --git a/tests/test_s_vectors.py b/tests/test_s_vectors.py new file mode 100644 index 00000000..568169c7 --- /dev/null +++ b/tests/test_s_vectors.py @@ -0,0 +1,256 @@ +import os +import shutil +import numpy as np +from concordantmodes.ted import TED +from numpy.linalg import inv +from numpy import linalg as LA + +from suite_execute import execute_suite + +from concordantmodes.options import Options +from concordantmodes.s_vectors import SVectors +from concordantmodes.zmat import Zmat + +suite = execute_suite("./ref_data/s_vec_test/","Custom",s_vec_bool=True) +suite.run() + +# B-tensor ran on INTDER +B_ref_INTDER = [ + -0.9985411814, + -0.0539954540, + 0.0000000186, + 0.9985411814, + 0.0539954540, + -0.0000000186, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.3415577087, + -0.9398608036, + 0.0000390060, + 0.0000000000, + 0.0000000000, + 0.0000000000, + -0.3415577087, + 0.9398608036, + -0.0000390060, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.3547641089, + 0.4616317820, + -0.8130427571, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + -0.3547641089, + -0.4616317820, + 0.8130427571, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.3547607114, + 0.4616952226, + 0.8130082159, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + -0.3547607114, + -0.4616952226, + -0.8130082159, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + -0.3503184562, + 0.9366306525, + 0.0000008880, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.3503184562, + -0.9366306525, + -0.0000008880, + -0.0380023722, + 0.7027801558, + 0.0000006509, + -0.9382188310, + -1.0679062637, + -0.0000009208, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.9762212031, + 0.3651261079, + 0.0000002699, + 0.8251633666, + 1.0164658738, + -0.0000395779, + 0.0380023721, + -0.7027801552, + 0.0000286922, + -0.8631657387, + -0.3136857186, + 0.0000108857, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.8710959025, + -0.4550382470, + 0.9227364964, + -0.0181444829, + 0.3355468016, + -0.6184037915, + 0.0000000000, + 0.0000000000, + 0.0000000000, + -0.8529514196, + 0.1194914454, + -0.3043327049, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.8710997622, + -0.4551102486, + -0.9226973463, + -0.0181470691, + 0.3355950550, + 0.6183775308, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + -0.8529526931, + 0.1195151936, + 0.3043198155, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0605180559, + -1.1191643373, + -0.8297518682, + -0.0136825993, + 0.2530336329, + 1.4507337555, + 0.0000000000, + 0.0000000000, + 0.0000000000, + -0.0468353818, + 0.8661296968, + 0.4713374292, + 0.0000000000, + 0.0000000000, + 0.0000000000, + -0.0000000749, + 0.0000010076, + -1.0923193164, + -0.0605155392, + 1.1191172225, + -0.8298394512, + 0.0136822035, + -0.2530253119, + 1.4507535579, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.0468334106, + -0.8660929182, + 0.4714052098, + -0.0000000749, + 0.0000010076, + -1.0923193164, + -2.1071998375, + 0.6422844466, + -0.0000271200, + 0.0000000000, + 0.0000000000, + 0.0000000000, + 0.8631657387, + 0.3136857185, + -0.0000127766, + 0.6220183952, + -0.4779861168, + 0.0000199483, + 0.6220157036, + -0.4779840484, + 0.0000199482, + 0.0000000000, + 0.0000000000, + 0.0000000000 +] +B_ref_INTDER = np.array(B_ref_INTDER) +B_ref_INTDER = B_ref_INTDER.reshape((12,18)) +B_ref_INTDER[5:] *= 0.529177210903 +# print(B_ref_INTDER) + + +def test_compute_B(): + errors = [] + s_vec = SVectors(suite.ZMAT, suite.options, suite.ZMAT.variable_dictionary_init) + s_vec.run(suite.ZMAT.cartesians_init, True) + + + B_diff = s_vec.B - B_ref_INTDER + # print(np.sum(B_diff)) + + # if np.setdiff1d(np.array(B_ref), np.array(s_vec.B.tolist())).size: + # errors.append("Computed S-vectors do not match the reference.") + + assert abs(np.sum(B_diff)) < 1.0e-8 + +test_compute_B() diff --git a/test_suite/test_transf_disp.py b/tests/test_transf_disp.py similarity index 60% rename from test_suite/test_transf_disp.py rename to tests/test_transf_disp.py index c2f2a09d..05dbbe21 100644 --- a/test_suite/test_transf_disp.py +++ b/tests/test_transf_disp.py @@ -5,6 +5,8 @@ from numpy.linalg import inv from numpy import linalg as LA +from suite_execute import execute_suite + from concordantmodes.algorithm import Algorithm from concordantmodes.f_convert import FcConv from concordantmodes.f_read import FcRead @@ -16,52 +18,23 @@ from concordantmodes.transf_disp import TransfDisp from concordantmodes.zmat import Zmat -os.chdir("./ref_data/f_read_test/") -options = Options() -options.coords = "Redundant" -FC = FcRead("fc.dat") -FC.run() -ZMAT = Zmat(options) -output_test = ZMAT.zmat_read("zmat") -ZMAT.zmat_process(output_test) - -ZMAT.zmat_calc() - -ZMAT.zmat_compile() -s_vec = SVectors(ZMAT, options, ZMAT.variable_dictionary_init) -s_vec.run(ZMAT.cartesians_init, True) - -TED_obj = TED(s_vec.proj, ZMAT) -f_conv = FcConv(FC.fc_mat, s_vec, ZMAT, "internal", False, TED_obj, options.units) -f_conv.run() - -g_mat = GMatrix(ZMAT, s_vec, options) -g_mat.run() - -F = np.dot(TED_obj.proj.T, np.dot(f_conv.F, TED_obj.proj)) -G = np.dot(TED_obj.proj.T, np.dot(g_mat.G, TED_obj.proj)) -GF = GFMethod(G, F, options.tol, options.proj_tol, ZMAT, TED_obj) - -GF.run() -algo = Algorithm(len(GF.L), None, options) -algo.run() - -os.chdir("../../") - +print(os.getcwd()) +suite = execute_suite("./ref_data/f_read_test/","Redundant") +suite.run() def test_transf_disp(): errors = [] disps = TransfDisp( - s_vec, - ZMAT, - options.disp, - GF.L, + suite.s_vec, + suite.ZMAT, + suite.options.disp, + suite.GF.L, True, - options.disp_tol, - TED_obj, - options, - algo.indices, + suite.options.disp_tol, + suite.TED_obj, + suite.options, + suite.algo.indices, ) disps.run() diff --git a/test_suite/test_zmat.py b/tests/test_zmat.py similarity index 73% rename from test_suite/test_zmat.py rename to tests/test_zmat.py index 0e4a92cb..b0acc355 100644 --- a/test_suite/test_zmat.py +++ b/tests/test_zmat.py @@ -1,3 +1,4 @@ +import pytest import numpy as np import os import shutil @@ -8,29 +9,16 @@ from concordantmodes.options import Options from concordantmodes.zmat import Zmat - -def test_zmat_read(): - os.chdir("./ref_data/zmat_test/") - options = Options() - - options.coords = "ZMAT" - ZMAT = Zmat(options) - - output_ref_zmat = ["C\n", "O 1\n", "H 1 2\n", "H 1 2 3\n", "H 1 2 4\n", "H 2 1 3\n"] - output_test_zmat = ZMAT.zmat_read("zmat_zmat") - zmat_bool = output_ref_zmat == output_test_zmat - - options.coords = "Redundant" - ZMAT = Zmat(options) - - output_ref_redundant = ["1 2\n", "1 3\n", "1 4\n", "1 5\n", "2 6\n"] - output_test_redundant = ZMAT.zmat_read("zmat_red") - red_bool = output_ref_redundant == output_test_redundant - - options.coords = "Custom" - ZMAT = Zmat(options) - - output_ref_custom = [ +coord1 = "Redundant" +coord2 = "ZMAT" +coord3 = "Custom" +file1 = "zmat_red" +file2 = "zmat_zmat" +file3 = "zmat_custom" +# ZMAT read data +ref_Red = ["1 2\n", "1 3\n", "1 4\n", "1 5\n", "2 6\n"] +ref_ZMAT = ["C\n", "O 1\n", "H 1 2\n", "H 1 2 3\n", "H 1 2 4\n", "H 2 1 3\n"] +ref_Custom = [ "1 2\n", "1 3\n", "1 4\n", @@ -49,12 +37,118 @@ def test_zmat_read(): "3 1 2 6 Ly\n", "5 1 2 4 L\n", ] - output_test_custom = ZMAT.zmat_read("zmat_custom") - custom_bool = output_ref_custom == output_test_custom +zmat_read = [(coord1,ref_Red,file1),(coord2,ref_ZMAT,file2),(coord2,ref_Custom,file3)] + +# ZMAT ref indices and variables +# ref_zmat_bond_indices = [["2", "1"], ["3", "1"], ["4", "1"], ["5", "1"], ["6", "2"]] +# ref_zmat_angle_indices = [ + # ["3", "1", "2"], + # ["4", "1", "2"], + # ["5", "1", "2"], + # ["6", "2", "1"], +# ] +# ref_zmat_torsion_indices = [ + # ["4", "1", "2", "3"], + # ["5", "1", "2", "4"], + # ["6", "2", "1", "3"], +# ] +# ref_zmat_bond_variables = ["R1", "R2", "R3", "R4", "R5"] +# ref_zmat_angle_variables = ["A2", "A3", "A4", "A5"] +# ref_zmat_torsion_variables = ["D3", "D4", "D5"] + +# #Redundant ref indices and variables +# ref_red_bond_indices = np.array( + # [["1", "2"], ["1", "3"], ["1", "4"], ["1", "5"], ["2", "6"]] +# ) +# ref_red_angle_indices = np.array( + # [ + # ["2", "1", "3"], + # ["2", "1", "4"], + # ["2", "1", "5"], + # ["1", "2", "6"], + # ["3", "1", "4"], + # ["3", "1", "5"], + # ["4", "1", "5"], + # ] +# ) +# ref_red_torsion_indices = np.array( + # [ + # ["3", "1", "2", "4"], + # ["3", "1", "2", "5"], + # ["3", "1", "2", "6"], + # ["2", "1", "3", "4"], + # ["2", "1", "3", "5"], + # ["4", "1", "2", "5"], + # ["4", "1", "2", "6"], + # ["2", "1", "4", "3"], + # ["2", "1", "4", "5"], + # ["5", "1", "2", "6"], + # ["2", "1", "5", "3"], + # ["2", "1", "5", "4"], + # ["4", "1", "3", "5"], + # ["3", "1", "4", "5"], + # ["3", "1", "5", "4"], + # ] +# ) +# ref_red_bond_variables = ["R1", "R2", "R3", "R4", "R5"] +# ref_red_angle_variables = ["A1", "A2", "A3", "A4", "A5", "A6", "A7"] +# ref_red_torsion_variables = [ + # "D1", + # "D2", + # "D3", + # "D4", + # "D5", + # "D6", + # "D7", + # "D8", + # "D9", + # "D10", + # "D11", + # "D12", + # "D13", + # "D14", + # "D15", +# ] + +# # Custom ref indices and variables +# ref_custom_bond_indices = [("1", "2"), ("1", "3"), ("1", "4"), ("1", "5"), ("2", "6")] +# ref_custom_angle_indices = [ + # ("2", "1", "3"), + # ("2", "1", "4"), + # ("2", "1", "5"), + # ("3", "1", "4"), + # ("4", "1", "5"), + # ("5", "1", "3"), + # ("6", "2", "1"), +# ] +# ref_custom_torsion_indices = [("6", "2", "1", "4")] +# ref_custom_oop_indices = [("4", "1", "3", "5")] +# ref_custom_lin_indices = [("5", "1", "2", "4")] +# ref_custom_linx_indices = [("3", "1", "2", "6")] +# ref_custom_liny_indices = [("3", "1", "2", "6")] +# ref_custom_bond_variables = ["R1", "R2", "R3", "R4", "R5"] +# ref_custom_angle_variables = ["A1", "A2", "A3", "A4", "A5", "A6", "A7"] +# ref_custom_torsion_variables = ["D1"] +# ref_custom_oop_variables = ["O1"] +# ref_custom_lin_variables = ["L1"] +# ref_custom_linx_variables = ["Lx1"] +# ref_custom_liny_variables = ["Ly1"] + +@pytest.mark.parametrize( + "option, expected, file_name",zmat_read +) + +def test_zmat_read(option, expected, file_name): + os.chdir("./ref_data/zmat_test/") + options = Options() - os.chdir("../../") + options.coords = option + ZMAT = Zmat(options) - assert red_bool and zmat_bool and custom_bool + output_test = ZMAT.zmat_read(file_name) + + os.chdir("../../") + assert expected == output_test def test_zmat_process(): @@ -263,7 +357,6 @@ def test_zmat_calc(): errors.append("Custom variables do not match.") os.chdir("../../") - assert not errors, "errors occured:\n{}".format("\n".join(errors)) @@ -309,5 +402,7 @@ def test_zmat_compile(): errors.append("Custom indices do not match.") os.chdir("../../") - assert not errors, "errors occured:\n{}".format("\n".join(errors)) + + +# test_zmat_read_ZMAT() From c94f190f99ebed2d01007530f7487f837a11fdb2 Mon Sep 17 00:00:00 2001 From: MitchLahm Date: Tue, 20 Dec 2022 16:35:03 -0500 Subject: [PATCH 5/7] Removed nohup and cleaned up some comments --- __pycache__/__init__.cpython-39.pyc | Bin 149 -> 0 bytes __pycache__/algorithm.cpython-39.pyc | Bin 2302 -> 0 bytes __pycache__/directory_tree.cpython-39.pyc | Bin 3705 -> 0 bytes __pycache__/f_convert.cpython-39.pyc | Bin 2408 -> 0 bytes __pycache__/f_read.cpython-39.pyc | Bin 1136 -> 0 bytes __pycache__/g_matrix.cpython-39.pyc | Bin 1184 -> 0 bytes __pycache__/gf_method.cpython-39.pyc | Bin 1999 -> 0 bytes __pycache__/int2cart.cpython-39.pyc | Bin 3467 -> 0 bytes __pycache__/masses.cpython-39.pyc | Bin 50973 -> 0 bytes __pycache__/options.cpython-39.pyc | Bin 2030 -> 0 bytes __pycache__/reap.cpython-39.pyc | Bin 5795 -> 0 bytes __pycache__/s_vectors.cpython-39.pyc | Bin 14226 -> 0 bytes __pycache__/ted.cpython-39.pyc | Bin 6325 -> 0 bytes __pycache__/transf_disp.cpython-39.pyc | Bin 9601 -> 0 bytes __pycache__/zmat.cpython-39.pyc | Bin 11206 -> 0 bytes .../__pycache__/suite_execute.cpython-39.pyc | Bin 2310 -> 0 bytes ...directory_tree.cpython-39-pytest-7.2.0.pyc | Bin 1514 -> 0 bytes ...test_f_convert.cpython-39-pytest-7.2.0.pyc | Bin 2271 -> 0 bytes .../test_f_read.cpython-39-pytest-7.2.0.pyc | Bin 4212 -> 0 bytes .../test_g_matrix.cpython-39-pytest-7.2.0.pyc | Bin 3001 -> 0 bytes ...test_gf_method.cpython-39-pytest-7.2.0.pyc | Bin 1823 -> 0 bytes .../test_reap.cpython-39-pytest-7.2.0.pyc | Bin 2115 -> 0 bytes ...test_s_vectors.cpython-39-pytest-7.2.0.pyc | Bin 3276 -> 0 bytes ...st_transf_disp.cpython-39-pytest-7.2.0.pyc | Bin 2111 -> 0 bytes .../test_zmat.cpython-39-pytest-7.2.0.pyc | Bin 7318 -> 0 bytes tests/nohup.out | 46 --------- tests/test_g_matrix.py | 22 ---- tests/test_s_vectors.py | 5 - tests/test_transf_disp.py | 1 - tests/test_zmat.py | 95 ------------------ 30 files changed, 169 deletions(-) delete mode 100644 __pycache__/__init__.cpython-39.pyc delete mode 100644 __pycache__/algorithm.cpython-39.pyc delete mode 100644 __pycache__/directory_tree.cpython-39.pyc delete mode 100644 __pycache__/f_convert.cpython-39.pyc delete mode 100644 __pycache__/f_read.cpython-39.pyc delete mode 100644 __pycache__/g_matrix.cpython-39.pyc delete mode 100644 __pycache__/gf_method.cpython-39.pyc delete mode 100644 __pycache__/int2cart.cpython-39.pyc delete mode 100644 __pycache__/masses.cpython-39.pyc delete mode 100644 __pycache__/options.cpython-39.pyc delete mode 100644 __pycache__/reap.cpython-39.pyc delete mode 100644 __pycache__/s_vectors.cpython-39.pyc delete mode 100644 __pycache__/ted.cpython-39.pyc delete mode 100644 __pycache__/transf_disp.cpython-39.pyc delete mode 100644 __pycache__/zmat.cpython-39.pyc delete mode 100644 tests/__pycache__/suite_execute.cpython-39.pyc delete mode 100644 tests/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc delete mode 100644 tests/__pycache__/test_f_convert.cpython-39-pytest-7.2.0.pyc delete mode 100644 tests/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc delete mode 100644 tests/__pycache__/test_g_matrix.cpython-39-pytest-7.2.0.pyc delete mode 100644 tests/__pycache__/test_gf_method.cpython-39-pytest-7.2.0.pyc delete mode 100644 tests/__pycache__/test_reap.cpython-39-pytest-7.2.0.pyc delete mode 100644 tests/__pycache__/test_s_vectors.cpython-39-pytest-7.2.0.pyc delete mode 100644 tests/__pycache__/test_transf_disp.cpython-39-pytest-7.2.0.pyc delete mode 100644 tests/__pycache__/test_zmat.cpython-39-pytest-7.2.0.pyc delete mode 100644 tests/nohup.out diff --git a/__pycache__/__init__.cpython-39.pyc b/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 0d56505ca997b902531f1225cc8e0f2d6c087ef1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 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 diff --git a/__pycache__/f_convert.cpython-39.pyc b/__pycache__/f_convert.cpython-39.pyc deleted file mode 100644 index c8b63df8dd8bb4785eca4fc3844e8da0e455df37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2408 zcma)8&2QX96rb_;exx61NFlUf0TSAh?55C`5>VTelD3F0RU3i20vX3MyRqZ7w_|TY zw$3R%aDyYqU2)<+KuFxUgT!r4NSrDT+TmQHa_k4e{PnUq{7%wXn2!c1=M>n)qn zyQF440!`AaQK^T?HoUAjO#HYL;PiCUVQ>YW>_UwHCaeCfokEl#sFuZGAJ$+#vR|%G#b6l-7E~UdJ<-Ny_0S?f=;-!5hjhG-*0^4$9;ZzQz(s_Z8yib;dr)O7V>P- zZHM4A-{fw>cgFK+;x=#IT~`Y2R4CyM*oojA!~Zbt$9%HMEQG}vbuaCy^&y0qpoZY% z@NZqa*Zjb{v3h5H#k~t#V7_2(KMCM~d^m+&H*LGi_2t8M@w_s0_2V0Nyw&FQ|D|)F^DAW}ySM7_PAyN*zWZ{d%)w zy#C#vU-XV&=?s4Qtz!Q5`{i0mnn9WhCh3~AdjdA&wWXPP+dPnZ&Y3j(NtkES7(nV} z`S2j5bFjIZBaMv5ZDB!t0wWd`BqkCYNeKy-&-X+eh1cVE8=GmDH@5q6;3thPk1w3N zaPF-}&kwfz4$m3@z5s#(taMWbj!HC zK>U-2wTi*2Q>}ueAQ2hT5mfD#CVtGdA)H`jL}mo18rhLE()MUUBWq7nGFoUbqa&Y} zhUG#Zfpml?T{+YR&B}NVxGK}Y@>c~hNHhcEBc~y)9&nTK(Rb7sw2v|LU70*HBg{8y z92Y<2vxUBoSv^sZ;oOK&k~Bdwj@;PNzM;ZV762C*^%FW}MXi|y$#c>CK4sP%?ETQ5 z!in9K&OvFnoLg)+;j2k!P!0XXXk*deSh^HOvh?Iu7*zdmaU+@t9^vIwJE@W{%{blR zLTX7*>MYF_4y4f&X(Z{oLW-nUrS{RPK#aHaRc~FvWQ?R4m=jeX(&Ax~^}7m8Qjd8e zX;W6lXa!(oxdNOl`FYy)Vz@tQhB$)S3usomx-RK;1-vmihBkH4PhJ8hdkqNDj%f1$ zp(>q&UZ%&OKM&)w;!jbB&eB170x3{@TxkbucsbXZp9dKHK||1E2`Fe?0%$S12PMk1 zA;}?ikrt^GM#e~cn*f|l24jiz z9A*^y9C?9^C|Y}Vo>?dVTV_8cb5Q^O?L%+#1fXI}`=1~CKl8NzLyZLjVA2n*-v1Ti zQFil6L0M^E`+8x|D2!nh$_MuRDSQ$Q==<<-OlHr5zifFKK#lz#JPM5ErX+*PgO&4a zPm%KA#8lqhO+RxXA7T!Ud{BC@^5$~=>~eeW5mx&n%!{PufwuETZAMz~6~NEeX_y^f zP%d(a0ck3m3U<;6(%x>%Uh~wPwA-ax>X|%(bKZ85*GWf$^gfZ@@K^FjBRp|48xKq#(eTc<{za1SVgV_o0ruGd# z3F1{SQnT?kMAx1t%bo|fC4AO^uX^77z8_B{w&$@l@H}xGbi^x2FpR0t@KzRB7vkV< z%n-#6HL6aJ;>U08z_GO#lD@ diff --git a/__pycache__/f_read.cpython-39.pyc b/__pycache__/f_read.cpython-39.pyc deleted file mode 100644 index b2ca8ada17bcd633b0a02029f38c35c8fa1ef9a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1136 zcmYjQ&2H2%5VoCcHeI%*0tq3+!6zU^=JD#Bjg7zPD%`m2Qb=A zP>LvO$cToSjTp?#L{&VBDaIm0s?I2(U<`uqq~b}lq&j?WXVs+K(;dKqq6=0 zQ)0?mnw=coCk3vtEXl#pp&XQ=qew9oeI}!LnS9hy38d}%`MA}lupP+zl~`o`_ub*Rsr2x})a0@rR@&UTedqSA;Y8-|>-zE>(2F zzMS8ub7=FB?6cSKlw$Z65heBdP10VyL1_5ifOgSA45vDCcE|vb#B~o+SSM};te!iC z_5#3KP{j(^bI^CI0lFkW7j1cJfBpl>)_mMdbR7WkF*arsxRmb}CD3k+#k=|h00hoG zt0%r|bvu?5jStuXobRpkk~=rfoI|SLcE_!a}?+lPGi zA}Zwfgu=QOY3jmgvCovoNg4-Vw&FYWw3^K9S=<&-=m*DO`HNb7nHKr;?D<2VG~2s6 ccj4@b8lhxpFx^~U^d8dRB919dX`l9^|CPENhyVZp diff --git a/__pycache__/g_matrix.cpython-39.pyc b/__pycache__/g_matrix.cpython-39.pyc deleted file mode 100644 index a3d7a029cb66a290416dcdcc0de37b9341a207f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1184 zcmYjQ&2QT_6z3Bq*>UW&D~bU{fkD840Y1b&Ea+j#wyrIf7HD%>4}*b$phd=(Lx~Pa zc}<`khV*|Jwo`KKss9hJJ$0v@ciN-m0C~du@$u{T_&&r(qX9vA`StVpDJA4nnB0{Z zCr?rB0fHa`6qx~zk%~$>qY&1pB4s>FfE*DKi{w2KiA=BPtS8_XGEP6^O>#U2Pm5}U zL#m33t3@7`?@EM|r>HhVkgc0pBw$8GBf;L}_dAwtWbU-FzNgp0nH|SIwo;v#1Q|>kpoj2* zm>nGc`)<0_rJQbRmGf#^O7-O6$-%eNHP27^LfR=tm}?_=oBzq}fgHl-R>DJqwsHN9MnhI)1(zV;GIG&1Mz)Gq$qigmm%3g< zuiy$^kl!Ykal6xR;z!tKr;&LfDCQwPBxm1 z-G-vVYIp-TA)_N?A*&Id*$X4CMW^Ht+c&i6@#2er_W$_n&$I76{AxlN3sjVUfBZ~w z7~gAi>fxD>s@ce-S%u+FDOt|iti76o5;Dzx+P z*29sfd~U~y=_9+@L-5pT<)QXav^DD>{G6Vex_W>{+a3h^G=@F6kKZ7A07JxwaIt$^ z3_N>0PD9lyUP{LNfH5p;t%5yd?5yT$yVGM#=$tXL8y@jhfY2>>Ah$& z`$@Yt?)#*w%k{arhr52*+LP|*Hld|WNS%*f|Kw9WUt!0#*Y41_-r5lRhus^02)W-n I8p4qN50RN6Hvj+t diff --git a/__pycache__/gf_method.cpython-39.pyc b/__pycache__/gf_method.cpython-39.pyc deleted file mode 100644 index 8c1fee309343faae140800e2d4a4c86477d96a78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1999 zcmb7FOK%)S5bmDWj%OcEOdLBeGK33@kT;Mh5+)*9;YUDzNU;Ob2xyI`XV}|pAwMAq2vxl{n81Zz_19I^)zvlKUElikx?t(Pa5q?la8K^Ar3lTkH{p?{V0$g#r>7d+&o?in9 zRW_c+si*S_*SYb8dd7HX&*U2HX-j)~X*DdiGd_IgxX?DYqudQ*KhIqde0MJtxnD$a z=qAd|EiyOAlK!9w-Q^{>Bf{N5mkI4i?#F2!io(qcKjpsQ?jQ|7_oK7` zPdDqhellQToZvp-;@)fD-@L!L$UbX-y14dWRYh70Z1{?khO!3zBk1`&KuJr&NT~tR zQU}yZ15htbK!f8fd?cV%T7Z?Z0%&srpRKQTza@O@hZpTT-PLQg`q$q(?dF7}%aSfh zy~tu|_eIuYC>cXIanEV5K46P0tL=>qIr&Pmup;DA4-y~F)5ycPBP_^IR1h$2F@b<@ zNz@SFEs^htn1tci4_ez<61MgRap0$|B#dv}ymj+NtM3OpemBfpL6!!Y;C@;p83(=F zVdIOK>+egOu_%oS#u^YRp8_D%dgV7fdve2bC*A=?&*O%vVy5a`e}S2Tl%z*FJ;1Zm z3jNT)4mQwx<`JTX$gHArXoF@Q(a%wzfbQUl_Z(PJ#qkJkp;y}>x5=p(j#^y@O9N)> z=)+K(9BU(bJOisonz~<%H~F_e*eUFNrlcV0U^hzII}4gNGSnNGQdwY3%tGyOl11+| zuuK%^xc(G#o-WQ8GhmrMpa*n;eDTT1Jlh{-SG@chZl;A>ieckV&DwvU3wp$@xS)H4*Ool(mcFUn!GXtv1SOjp-+HC#l-kC z9YOv|Q&w2(sEdwuS`&S>~f>wmOiwbgn& z|K-i=`KZ+zUfs+JKXw<>P;~d*g(wGh+ZrI(xo>SQE;N@QD@TMu!TJK&qxptF)>Q@O z>C0?gYH45UJS$YWdHNEXR@%}Cqwcn60Re`pqBh7S>^!LRyXtJi{x$!@px&?v%VPZy2=0VioKbgdPmsYmbgU6sk X{nx(IzCF(SLwu$=vagMYL~Ht=k=W`S diff --git a/__pycache__/int2cart.cpython-39.pyc b/__pycache__/int2cart.cpython-39.pyc deleted file mode 100644 index 8703ff659fc989f99209cc6dc22cc9fa7a394c91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3467 zcmcgv&2JmW6`zm&B1O^?ZVDc7%preRU0cn++MadwkyttCcRuz zvn$sUmO%j-Z4WKro^ug%Gtj?iu00e!_g0{Ae{YtQNZCzqU1HwMdv9jm=e!xl&1Rk9 z`^DFP?Eb0E*xw0R{2U-R(emp6iYcD5kfRqV8;VeJrlfLGXXu75XP+_UD(^8-f*GlI?c5@zQ=4r@dz!IHAKh&y&1M?8Q$2xrvr<10+^lC=^%XF$*P$L+@0A zLRa}J0Pd-ps-ySSifW(_R1>0GCfLb}4{pV}=t^uh|7c87ZlUGx0F=CB5i12CuOyXx zAa1i`qC+O2qZoE{cDtng{G&}=w7Y2eIzW$=>|Sfa3wFXwKIMNE`_5hVly!tAPnw{Y z6cO3o5k_2l&$wy4m!#SQ&w_t_vUPtnOtu~#q}@2%8Ybz7*FU`eqpfk=eGvDOe5*Uk zx+AUPtQd|I@ILJ8!oF+cLsQ>Q`+3nF4aYZX*zlid?CAS*4_u3)e%3Fd=-PHV>c(k) z1B3be-Z$?~|M1OY@6(QJoTFh}nBZZoBh~K~rWO~YVMJ3a8)Pv`JJL9Ll76L|q(9M9%{N#y$Mn{Ale3m6n{khN(W9jn3O}8#%Lw)ccnA;8Mgw6l{Q)4A8^P zY~Y}|15b$!wm}Igdy-}_p+)8No4E?gQru*H`W8nx)ohopLu2ZRK6Y4lnS$ zGu~x3L0}<&<)lFYe#7EeG1mceH`vESozt3?URcw*$dvy&n;_3lE|g-*ClVH{BKzbN zG}yDK(Sp=VY~n20?0lzvQvbPFo7vnx=EwXtdm`@Lp13nl2H!&SiMJr}l@j*<7avr- z1#MpD0~-l=e1n}_oT5CG@N_lqNyzd`zjzfM^R35x%wAVD(1X&SuPFl?2eHkTXjU&v zo9#E7=PuG#7^pN8tCux_9?-nf$!bz7YgQ9TN9<~+n$*kMsU}rMkS2>X?4vwOo9$Ru z^Ok7Pq)rk^ld}vcQ5G*DFE*gvVipW8VU9a!llPZ+D`y#k(dBXlzG^_%Rcf<*X-oxW z#f;{Z0dlBLw32dhmXDC^R+5pE6=$AhFU0jH|0Bzu@crA+W`pv^>irs|HD{S7syw@Q zdE#2W>%yY4`4N+Bn>~^He|vEyD6cQ=)k0)8%hr_tMocbDDqBg`DxHo z5)7_9!0xs(*LOSeA5>-N)32NYD%TdpjpM|R`uQ^|+M2F_9vWl6|LSH(T3p+?1fCJQ z^F1T7v2kOq<3r<8mCcP8kH<--s**>=&$RYNnTk*?`|)0yLk?~%xSIOozP36~c zZQSC1QpBMT9cYWtAqN=V58X$3n2+yeGu2re{OP*O$0Dh{mVIGff$YlV^d!LZ|=Q(u3AeL{)X%XwXY2*$6`a`xyqLn~ej#7Dz{EI=d(4n6$TsBp&KFUJYkBFuG|3tng;B5@&Vdsi+DE3B(hR zI?Ke^))FE-b!M^ct0XJ>#i4oNkE! E0Dv&>G5`Po diff --git a/__pycache__/masses.cpython-39.pyc b/__pycache__/masses.cpython-39.pyc deleted file mode 100644 index 8efab470a582ef857bd5bda99f3dc145b11a4ef3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50973 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�VH+eIkM}p8E(Oj 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 diff --git a/__pycache__/options.cpython-39.pyc b/__pycache__/options.cpython-39.pyc deleted file mode 100644 index 09edbbd78ccaad7196a6e5b28ab34458aa37e7d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2030 zcmcJQOLH4V5XV;!%aSa~vaR^-IDT7xNOt1L7!qQjicm$x9N-XinOg6RR~zrkGrNYE zTqs=m61k8g7rqR)xdA5^M{Zo8yERTJAAnWuzvj0+{g~d-tX-{^Ex2C)_^rcW^e4jL zl?OP6TQxwQTHNB9Yq*8=Q?8rg*{`i;&H>ANR~G0PZt@Wp%(J>#4zsVVZjR@`C$ERU ziW4sim6I88MMq5dB|7^+uQESFGM;^#ePyu>QI6+{vP46?K$IgI=0&1BQOVebh{}9~ zYz3lO^yVo@k6{!O%F-T@!PHXwguE=$?srhiJ+8O%g2|+Z54?p=qL3Lo-Bc#&4Eroo`Sr zb3~hF<~&i;*cOPkjO{MbwyA89Xov4olzT)iLrX+$zDKrYqJ4g!Xocv3iMdL2U}%l# zp`mr6j;UpX=+LZTljs9OO`;>?w?*`!$-YhW5r0J4cen+c^6`nTor=)u1-3kAXQ}Uh z-Yt1yA|y*9-~H{`Y5n<8?O5j>+jqXvBaST-=0uU?s+<2b>PcNf3-dxRF;*{BLMAu= z!lmmpzyIWRjxX$x^`cY>J?!|Yf?T?Anfi_$>cVa4?z2xI8yC{MWWKl*{tf8{~fIk}E=no=Vr=4g03DE26*zues9Zo(K~Yt3mCvlPK^UbWiNi5xN+_s$&_w z&=Wz#1@thDeJ^xPka`gLzNx04q7W)SO4JRW6}lLmok1+y)wSCZJGDa&mAzx%3*a5p zVhQ=96sz$Wv>0+ifx%S+GQjxw{@(sxYroYw+zw(-SB%*-6APq1z1e>I`ptFWu^zfe zMJlce(13&1g|0}!Q%7*>i>@f)L?LIe9pEMAWuUmutJn*5Ri%z2lrlXTe-BL$6VL4> z{XjW*H+m?AO{BUbU%(!dLg4Od?&@3|#S#z6Zt)az!AzM0lz3>$A(R425v7EJhr6tx zR8dAz>L_C<<0um-c)H6;lqr;Hlo^y+lsS}nlm(Q#D2pgdD9b1-D61%IDC;O2D4Qrv zlr5BPlpT~^lom=GWe;T^q?v`j3I9wN&cCyztA4TMLwNkpQM(rfqTT;@v;*OH4mt-9 z+Oh4N+pbV;=)MEZx5ETCm1;-*4@@h5sf&!-%oz4gJqNKewg2UJRX5+Y)@{lY_}D@I z&<+G+y380SOf&8*b}AO6oDJ diff --git a/__pycache__/reap.cpython-39.pyc b/__pycache__/reap.cpython-39.pyc deleted file mode 100644 index f957efc0d138cb8bf3443c911f3198f47e079e1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5795 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 diff --git a/__pycache__/s_vectors.cpython-39.pyc b/__pycache__/s_vectors.cpython-39.pyc deleted file mode 100644 index 7a8dec6f802acc3d49e5f80fa88827e822269fc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14226 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 GoBs#n%cg_? diff --git a/__pycache__/ted.cpython-39.pyc b/__pycache__/ted.cpython-39.pyc deleted file mode 100644 index 22d925d75d8041c8e6a4098e21b1319936d18e1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6325 zcmc&&&5s;M74NG4n4aDldt*D^_1Yv&93U%&HTiOog{%O!LL{?6_8!PcR%>>ucX!r3 z-Lus_ws+ElP#idczfh(87^u90H>N^pf(2TG;mZTw(HlCW zHa*ZfM#EIJ5m=o{qr$XTHDLT zwQ%zR!dGOMiji}?Fx!wy} z&G1ae56-@L_Qe;@bepYf&2>LM(~80tri|%yB7u71i>2;%W_w;cY$u*~2uflKBaKXYJ9ddZRL#cM>Fu4~seMc<|IN4ghODIT&;w}}4 zbEA2)9p4pHna%XT4>KNiGc(?3c75gi%#_V=-OsFMx9f)@GgTmFwadLQX?OgKQbsb< zMU-Ux($@hY7E)$+dO_0e2HP21ktTFE>VUypm45S@h;D@0OwwEpd{3!bv?aMZGZ3F~ zW~@nnD{~|QEoV2X6crvZ3v#u$wwAGWqdsB)+UqJh@`ARIOqadz2#9zAg~ko`40G6V zc8b}|!0!-h$3XWh6akQZ2zv@RiZ+G)??C`V;EfVX`vg$DrprqS6I|g0WD`E--C}c) z0DepusvSK?ZTeeGm=s5(FEtiagb?0{izSK+AZKEESgCPLLu^=c8c{z$ECEln0#6kk zTVkl=xF&x)>SvO)7|NqIlvm5FvaG=G|NIKpP_oeu*WHa~?5;WDac#2lMJ64h#9;px}E_g*d6?ZVNDbMhzqQ3 zo>q#z!loVKj+WY~PT0DBPsK?BY%dNXDL<&*?+rw_1!^LwV+UU?V-%Ff*{GLlq@_UK1uh(+9Nq#SJ4xnL@-*XLRzaK07 zZiN3V`|TipFJxv43@Y+efdNqm!eETzR6J&;;!)!4gGVkk36BzIUvK7elkg~U4xnKY z9=V1x9*-Az=%Fb4@RQO39WQWV;jhd7{4_Wfed`5gj{JUs8Bw1KvvD*`#jidUzY=F3{Bo&D z_?0;OdOw$&gkOns01cDy%Qckoo6GUT8D$=4KTap86t~M%r*kHq1Jx<;Z^QH5RuGhI8$iaK{=%21K7D)0>d%aHoO2&Amz2M} z^xWDYza?33o_p>q7zwIh#HZq3S-E^MAL^xeAn6#7#&29)zJU9Op4V1hzkCHE71w?J z_3z}wrPr1ff$w*R#2ZAwVj3);(sLNW`ZiJ)?&&@TKK}yh+;tZZW!73GDPf~-HFS+p z`H-x(8ifKkU(rS)N1jG|R&6Fx#|w}WqJ&nG)p2vjHM@|>4kJkuBTqDHn2Dn9xPsi* zs8U1a=0mmZVQsPY$jzxy!B`$HPVx(69NnWDwfydbbXB*PWGu{Bpzc%|+sxRtM{ib7 zqsvQp<9Eo5xS89yOVLf8zEnGe?|i9lu_O4M!hMTw^BkF+>tn;1{crjo-J|#K{3L%5dY|O5)!F6T`IxLQOzT6#M%%E(ZH45w$!|QZht-o(jsbNZJlcTZBr(P)<+fX(%-pQw=NMvJGd}KC0Rm zoy3XySqJP8YFK;tCZZ%Q$gdz&uHw-{#rhZ Q^OQJ^DPu{S6Mp)C0L0X_H2?qr diff --git a/__pycache__/transf_disp.cpython-39.pyc b/__pycache__/transf_disp.cpython-39.pyc deleted file mode 100644 index faa236feef5f6d9c7f736d16267c2a543801776c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9601 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 diff --git a/__pycache__/zmat.cpython-39.pyc b/__pycache__/zmat.cpython-39.pyc deleted file mode 100644 index 813b12cfa15c184fcd7de927ed6b047a260e6a57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11206 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 P4z-vLJ?PK(>c;;82Va0S diff --git a/tests/__pycache__/suite_execute.cpython-39.pyc b/tests/__pycache__/suite_execute.cpython-39.pyc deleted file mode 100644 index 5d74ec2f170e430f1a6dcfb216d3c42d379f7749..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2310 zcmZuyOK;mo5a#kNO0xWZ#Bt&zZdxU+RG>jlMUfzhi~@;UG)51+5Hv~KWcg5+DSto` z46XhhB-Ub?;rNciX08{m-%{Ahy`t^66}IzE(e=9u zJNaDE^Lq-r`Fye9FDTr~7mFo-NntNvE>`>%h1>aRvF5KSeD&N;zFutj8;ak}Zxx&V zCewDccrNaJ(BfWldusSwF?*}^=l_B=+FqYYWB=7l>eBKAot>v;m>&VPp65puPsMRT z>{0ZhY6M2n4@nq<=kAW)B;vRt?Cib?1yA1*{BA7Ls;o)k?T<+$Do)tj=V4hNzD(;e zMy6kcA|e&8eg+25(CRxNiAL`A_1KB^*!aNUWHYutXucWSFu;}FFPDp2bY2o zBca(x=2K)V7yOMGp`F7CnSQ~TCXA^D^WlQbLNfzP*wjzSO%9NA?#Aqb{X#38^VS(K z!wO*ULYtvBA<-c&8tvs|-6=VD4tVaor#SPmexXBdfq2;>@uqYQOJbQYanVe*ZUt!N zyf-^xmH#2uVq;4BLigAt9q7WudTc38Hz2>!$ctNqvrSOi&x!4r_Fh6Wv)fbPU<-I_ zCVl7pF3o0(*|uo#R(7x9TtHt)-<$ET%B*DfugTmO4=^Sktu?b9MLz*mXHVhN;2}m2 zXQzHDKBH0ApCYtLR$2WB=+R8#F|g8~X0y*hAss^>jJ^O>_Mm^14W=#ZJ_H`l)?V{b z-`$huDY9(;)c#g%BY02k!C;90seKp?;!sF8Ek(kS?xX&fQm<-hMaOZE*z&x)XT9n;z~%iFWE@4T~6sG4S{TT>70O&zB}SnNTiV` zrDU&t6P2;z9b%bO6QtWz2FN;T36m1|kXUtJ=SvXt+toyjCnBH}SH+t0_UjZnW(SIV$Rf zHbOUx6Q_TNlR46^k0&C{rBzOf@q7N5cuO~G-asUAbFCdEHE5n4PA>qbU8Vl|xxaC9 zmGVD5NzJ`{G~Zlr!bNlYt2fsls*qJN^6}3-c@>o@cs)Y~8~ PLdcy3mkO~4UsC-)X17|{ diff --git a/tests/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc deleted file mode 100644 index 88e3f79dd221b8262f39b10d410bd4c043a7d8a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1514 zcmZWpOOG5i5VqZ~>6xD0*+)Wb@}C$&mwxnIji|3`bu%V|xW@3zAn zgFMm)fH-VNTfD|U08brM8!9(>ygHoCrC6k#X*TD%Of^(#{w9W!7=HyNq+wYXjjUIR z7G+Z~EoOi_ovGE_D3cL z4zq2}Oq`I~TBDv(&~bz&3o;T)-YW zWzy`W87m6dyOCL4HcSeWfH{4(%nJ=Mn6Rh;q0FsRoz=^NJ81g6sGqSStyn2coGND1 zZKT=x!et0|wWIdwZsdiR%6y$lY!b1|`kPP}6B!UnB z^!)^XgrSq0pqEF0n;w|KC8Kg56z1KuufeQO33!=F@x9D7@cEC*M1Sk#1bk?0DRFg_ z_FXXqiWRD}rOpczRLc@VB~?S;xt84Ql5Kao4zFA7+3Jtk(RI^*sc^^3rQ)BTnqreAC_Y?(T2KtJf<8zAt~6`rq4x z{Eo``&jjT@6!|LvBaDW`p}ICA(;$>YmQ$d4i|rJ3OUWtey6lvpHo{6&b*j3L8QM|J zscYE^8_|-pq~$`m95tP$mhEsQYB?<}7sJ(P%~{iODO``*PFu_6a3k7uHnm&{x1w!l zn-X3eUSL&LdqF{7Vs+LyHk^z6;`Gu9?2|3Aukc?z>Xbeq23rc}eW|}8buzKCEwF8mtrL1ozl98%n2bOKYL8SYh%+w0 z?SrFgf7f?G?SXGzV`9Dp$1?C+BLFa z0oVKcoot_Xz}H;x*yp{|6)psXsFV2qNO1O1<(rA3mDAPAJx@w5GClIz_4M#YS1J=K zW#=Qh7X(H@6?8TzW3Z!a*eWanCij5*5bVz$JXJ-Ayqi25s$!C7hANEWAcM)oC>B64 zqO8=*_LUK*sw{cNg5BMlOwoZVhy-G31fPpGDgNB2P1dyV8C z>_JK7`Is1ZI7dFwpV5Il4JJATYi3P_1Z3%uTmo z6KgQPTm>N1GOp5+(SWi=Eo%H_S>i6(|3xJ9|C~sFg7QC!M1U|zrkrr*0^$ClRu%fx zn578^^qCQ^K5YQWDnPgbvw?8tjBr0{!WHL)v&NSELldq9ge#vTTm=XR7u=k1ujYjN z?Hu81ns9{~;Rmno2%8972-^r35H2EILb#0Z1_FjbbP%o}Tt#>j;TpnQ2yY`?N9ZEFgYYiG zdkF6%^bq<8Hvqb}-juirGNvY;W|pEm;uiM0jerT6!v`R#)1ky;g7Ds2C34HI=>SD_gTwDTgbhQk(o|_6_@7Y>9gLHZzV+FeRT%dHwbhJtz f!v!%4`8^6fWCs8!4}Xo;4EV9mf6yurv{LhL^Co9- diff --git a/tests/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc deleted file mode 100644 index ad7e3bf3a09b99fb88dd87e4cd32d46147464ca8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4212 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 k0md|2D?Fr_EO}Y56nurPU~O7X z^?C)t=U*GSpBE7NTWucybl7xYCU<}kL@+}Z&Q>kZHH1-MSOuI*idHd`l&n&=npPQB zja7oGRn5-mtQOR*dWH>V24mKEh6`+0Fkww(xX31hDQhajB{m)GwsvROWHZ66HJjlw zn+xWx`3zUso?yXR$Z(bI4fa|4GW_^|YwW3DzqKDDIzj4WY*Vuuv@v>m3+yN3WY>qt zTBM7cYKPCG=EPm_6`gHjsb4sKN-ci421}9op~E~tb$Xe)si1a}`hqG^*F72Khq~@L z>JZ?W%iR?!RwIQ=%PWrH{$&MUkA)wFi8^uqZR(1MD{NSSBQ|DRZBBbOafH+E*&Hsi z1x-X-md{a=hQtYltBl+JAZ4fo^CZmVcOV`bB7p?%YcO?~M!%5JBG3{{bF(g&?%l*! zptOcML6C&X*=EfXKmYpA(yg@Pox0Qd?T_1^bi6&+{=>EQrycM84}Q4u)XHZa@5f^| zK4$-3?|65OGsmkheA)5Nym|ll!P5ZVI{1?4Tm?}7>%bScgKs+C^*2u4{OC^rm+pP_ z>W$&ej#s$y)6%W`-*@h+cc5}YsOtv~OEzBXa(XGHq3hG6;YL9W2`7y;-)V?d+F0&3 zf-JiY5;ej|G$4KMY9@jVQVx2wwJ}LKhx|4o*G)MkFIV0hN?h5Pt}Ho8Lb=E^pM5@F zKh#X54vQ@28qEc6f(WU44JwOH98+LcI`O)yHQV8G!tO;J9I|sO zgT#}?oFk2Xh!|c!rs4UxwqkZiFyhh?_OZ94KT;)me) zy>5Fo3TS&RWv&yp1ImsaJ$CfPcI>$CI37*fZWOu^SC1%&2<(-+Ikml>ou{)EugkG4 z4v$zfaCf2z!iKh}nVLCn;Jpuux`DL^hQW`3q~REALEPb!%>9H=Q{l z>sjsC4|^3?y+Y3Kys2jcXAMe`7nOYGNxAAmTs4^|l^=yDFV?x8%AO5H1Z|I(mHO;X z@xyZF>ghdsd19~S-H}(7e0rz$hPt~3B0ix??wqeM!=p#M1-D9S%)E5*2{t0F-NM zq)XEu&|?ohNXO3f+Iuhk6S%gQ{D59^>H=~)9wp>p_uB`Sz+$oVE0v-J&tJcfgL_%a z`dbT^p9~0lFl64gEMgIxS=crl@eHzTi#yo0r+pm?6L*Eh!+jcvL(KZmkrLb6~2mB4bHPQUdMHV3+xJC$Lj_c z*#^IguNqup*Z6gO-QY6Y7)KJI1D=WYeDxg-(pYF+ z=IH4YV8tWhN3#7Sl-j|;+)oF~&6c2TkNBw%z)!rC%Cw~lFDdCq#E;TIum1g$2T+Fb z7>3-?r);NI&-Rd}Jv6e0);L4Z#3q@#HL{6gtPXJvchl@R2PjXntJcJ}t+X)I^NTP_ zy|VT(r~^Jzpy=X^7i$MXKx@n^^6{&5pX13M>_ib1xek4tv`c<}u%-z>lS zbKo|ct!DGB4%D#Uq21kvJy^K2m7IUxkej=^n;JfBNR`#cN}~o+8L(j>4+m9WN-9$0 z^Qa-U@=@cOa!vWETs$ozl}kk25k3b)!opOQsac~ZXosGuitGmgmGVMFu~cr*C81DG z;-_6vf|WsWJ>Nf4F41dO1}Se>ix8_^7?BWSsw#YzgfvPo zg4cM=*!fiO!U)!q5&Z}kIqb~yh49Z+aW6U7H4CDehmSA@?uiIup7?^QGMK%Se#p`= zf~2q*JfvFlWH;_JVqCori%)#!MLwsh;7Pwtbp%!2H`#)F^;C#hs70?G3%D~LJxiD$ z`TE8+@~~^jmMUm!Lg2i)NAXEdEI}%8Nv~j<_y_8e@Ws?Jjk$eU*!j&8k6`M%{Z=>T zv~}8NfgiOvWjotD+YeibAH4QERJMXR3Lu$qOLCy$v-Oox(*B@E5bx%Iy5M&K?oDk52BiJ#IR% z(9KY-%}(xkP$JNkMM0ZaXU!LPOz1x;UYfP)bDCbD4>l#e(`i2!x&f=j*{LZdqM|M9 zA6QJ+_w*$cRqgS?X9s%8b6^rHnlv=g$8M_d64?Qr%6|pL)@Sr<-GZb(*qf%HbWxS< OGJ;q0*%uX|-2MZQ1#ZUx diff --git a/tests/__pycache__/test_s_vectors.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_s_vectors.cpython-39-pytest-7.2.0.pyc deleted file mode 100644 index b828d94003d408a8580c1f09cba0d2075ad117f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3276 zcmbVO4^R}>8Q;Cz`@{VMJVa28G~$exX6_&o5R13|!;Yji9l<|ynp~FK<#D+8C%bzX zE_bmJMKhpDV>M>{2iTCYO(~sbnvSEanaOC?sUf3D>>`AgC=rto9VewUIQ`xp$I#1E zr`@~vz2AG^?|t9*zV~MLW2{ya0nd*74qsCyK@8!+^hXDSWzfU{5G=uxJmDeLUK7x2 z2$Bd;9vzv`=skK>WAGT%-snk#Uc;LLW{+9rXn9M(>anVr;*9~DCtbxlJ|mFn$yBkP zpAoQo>?$_!S%I0JnJPB&*@0P}StP+_vT3Y|HM5qzT2Bs_)0W!~aUg=Vc95RgTw2>4 zZgx9Hv)l4mTLQ7^EV)agBXS8gqm0lJiBS2Q}1z9yNfn(`(MeU$Fb*0&g8BavsK#8-pLP9X8rkOm`P&WluVu91Fn{kUk)l&9 zCYf@QNhg_d3iH83WL(4SlHUD?QVe@d5E3lLOHomPA*IhH6;Ml zeQ0AvE%unUUU;Ow6+C8y)?ao|BM({lU+l<9J95&_!y>;wr(pK6t)Ix~W$x&;!LhGs z^w^dYo!2k@)}7+w!9z4@hfdm&lXiO0Gk0FmS|TT8)NFEo_;~y#jdJ#Pl^1^cmK#lM zk+u)%;AHo|dVR1U`;Ls7=)9vxZgllL*jYC}QxMGY^aU3u4))OK$j+00 zb49PDGE>v?S>w6G7VLf7*W&5seDH4XzkJ|y^H(xDNtF~WH~`+W7QWc!i-LFW+1u~P z7ls~k@zALY<$@0f(~>(>+Ik3rsVh78(LWonq%K68Z}d(q{;rEg1%F-KpYsJAZsoO- zi&c9^Wb_4Bz#iAN%E&UYYy1yIy)^n+Nzt3dCI9%Ik!SjrbzB~QTSm{9{HSgHd$5;d z*Y7s4j}4?Uhj&|Noz9*k^$g2L_lz7K?sgB)>A3XK{3!T6kh#0%^M7^8C`b4vGCX{T zMt9#GZ!qtJNIK8&TUD=XrBTn9Blceu^~z}J`Mxb{z8^_yZk?s);;rLv(`f$fftQT$ zK|+?S>wW*{KZL+6_)_hV3+}18G}43a9m|`ye|U&SOIF{^s(NEUMjyO0aQf=VJvTCqW=8j7)dwGr zp-QY;`^V1yzkn(wW{2h$4(-+qEbs>uMbBI@>qZA@9}K1*{NcrIB{b1V0*#0h5+RZG z8faSF*HcZ}I2j|`bm~aYlI`UM$(TdLHBwr=DXxuaW11#1PD$n%1-*{d#Pu;< zOuv$T4)qB9W+B6$_)5io7YyOC9Q>j-`7~-c97#_xr2NC`XOP@P`n z$Px^22^5`LRzUUe)8*BQA(SXBl$-`e@G~_$2abHW+F*o6uRrLQ6s-^mD(OB(fV#rZ z1jWQGxk9n5@Z!p2&D!c!73+j7Y+DN(66_e6mW3N}A>w5OCDZF;cpk`M!50dI8G%zQ zp!U{8{Ji83ictH6fFUY5Ua>9|;aQdHMSQ4+;k`j7z$s~7k*Vdd1;w^p-5rEjAqXKs zv3qMn0#rg??u9VV1Q{H>!=&grtQBFqxF`~4;-JjfYa%&Mc%}`WoIWV^sKF&@MTOHB zl_gXOe??FH$Ef%uAvnRw_-a>OD8RWIBD{|Yx&j;e_E@aK&A)EvjWSNs(D(hSsDP3SrLih+<48QYgT? z%=IQx?@Vj~(%}@iZ35JiO4`(vVwjv09>r@kAvguGE+YAPMHh?&!i|XowWmbulsHz< z;1w2?Z5St zf)RVo#bPcN`5+V>BM3|*-kw;;ggG@w>cLDCE=)9*L;fQ?=Z2ReA>zzEN*dv3!9NZB U)ZRuKwZ`qlW)o>5vnZqO-=V7!2mk;8 diff --git a/tests/__pycache__/test_transf_disp.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_transf_disp.cpython-39-pytest-7.2.0.pyc deleted file mode 100644 index 006b721c98c1d9c0c8f65a6ccf948a1ca6d7f478..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2111 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 S!KUgpRWnktkA~h9EB*sXZ$0S% diff --git a/tests/nohup.out b/tests/nohup.out deleted file mode 100644 index 25471a3d..00000000 --- a/tests/nohup.out +++ /dev/null @@ -1,46 +0,0 @@ -proj singular values: -[2.06857334e+00 1.91769824e+00 1.86782796e+00 1.46614251e+00 - 1.30156659e+00 1.13504168e+00 9.83677468e-01 7.36371481e-01 - 6.16882787e-01 6.16129481e-01 4.86307077e-01 8.00804860e-07] -[[ 8.00121376e-05 -1.32715756e-05 -1.73338728e-05 -1.73338729e-05 - -1.02628585e-05 -1.80496698e-05 -2.12604120e-05 -2.04478488e-05 - -2.04478488e-05 0.00000000e+00 0.00000000e+00 5.00626441e-05] - [-1.32715756e-05 5.90035575e-04 -1.42964000e-05 -1.42962793e-05 - 0.00000000e+00 -1.62927551e-05 -1.62927552e-05 1.75444777e-05 - 1.75444053e-05 2.59451267e-05 -2.59456007e-05 -3.20145289e-05] - [-1.73338728e-05 -1.42964000e-05 5.90035575e-04 -1.47211823e-05 - 0.00000000e+00 7.52213196e-06 1.84338806e-05 -1.57546251e-05 - 2.05416834e-05 4.34117245e-06 2.83001423e-05 -1.09112087e-05] - [-1.73338729e-05 -1.42962793e-05 -1.47211823e-05 5.90035575e-04 - 0.00000000e+00 7.52323926e-06 1.84338159e-05 2.05416834e-05 - -1.57546251e-05 -2.82999534e-05 -4.34098373e-06 -1.09111166e-05] - [-1.02628585e-05 0.00000000e+00 0.00000000e+00 0.00000000e+00 - 5.78617728e-04 -1.21882934e-05 -1.21882934e-05 5.81936740e-06 - 5.82022404e-06 4.38837729e-06 -4.38818656e-06 0.00000000e+00] - [-1.80496698e-05 -1.62927551e-05 7.52213196e-06 7.52323926e-06 - -1.21882934e-05 1.91331520e-04 1.56088852e-05 -7.79557410e-06 - -7.79672166e-06 -1.25700962e-05 1.25695499e-05 6.80353003e-06] - [-2.12604120e-05 -1.62927552e-05 1.84338806e-05 1.84338159e-05 - -1.21882934e-05 1.56088852e-05 1.55264109e-04 1.00850854e-06 - 1.00856159e-06 -1.56356767e-05 1.56366743e-05 -1.42465168e-04] - [-2.04478488e-05 1.75444777e-05 -1.57546251e-05 2.05416834e-05 - 5.81936740e-06 -7.79557410e-06 1.00850854e-06 1.55208823e-04 - -1.12229743e-06 -1.04056524e-05 -2.64304905e-05 -1.16816043e-04] - [-2.04478488e-05 1.75444053e-05 2.05416834e-05 -1.57546251e-05 - 5.82022404e-06 -7.79672166e-06 1.00856159e-06 -1.12229743e-06 - 1.55208824e-04 2.64300382e-05 1.04052001e-05 -1.16815711e-04] - [ 0.00000000e+00 2.59451267e-05 4.34117245e-06 -2.82999534e-05 - 4.38837729e-06 -1.25700962e-05 -1.56356767e-05 -1.04056524e-05 - 2.64300382e-05 3.76136297e-04 1.94198975e-04 -7.83770679e-05] - [ 0.00000000e+00 -2.59456007e-05 2.83001423e-05 -4.34098373e-06 - -4.38818656e-06 1.25695499e-05 1.56366743e-05 -2.64304905e-05 - 1.04052001e-05 1.94198975e-04 3.76137316e-04 7.83768965e-05] - [ 5.00626441e-05 -3.20145289e-05 -1.09112087e-05 -1.09111166e-05 - 0.00000000e+00 6.80353003e-06 -1.42465168e-04 -1.16816043e-04 - -1.16815711e-04 -7.83770679e-05 7.83768965e-05 3.78284543e-04]] -Traceback (most recent call last): - File "/home/vulcan/mel64643/packages/concordantmodes/tests/test_g_matrix.py", line 368, in - test_compute_G() - File "/home/vulcan/mel64643/packages/concordantmodes/tests/test_g_matrix.py", line 362, in test_compute_G - if np.setdiff1d(np.array(G_ref), np.array(g_mat.G.tolist())).size: -NameError: name 'G_ref' is not defined diff --git a/tests/test_g_matrix.py b/tests/test_g_matrix.py index f733409f..8bc264d4 100644 --- a/tests/test_g_matrix.py +++ b/tests/test_g_matrix.py @@ -12,27 +12,9 @@ from concordantmodes.s_vectors import SVectors from concordantmodes.zmat import Zmat -# s_vec_test = SVectors() - - suite = execute_suite("./ref_data/s_vec_test/","Custom",s_vec_bool=True) suite.run() -# os.chdir("./ref_data/s_vec_test/") -# options = Options() -# options.coords = "Custom" -# ZMAT = Zmat(options) -# output_test = ZMAT.zmat_read("zmat") -# ZMAT.zmat_process(output_test) - -# ZMAT.zmat_calc() - -# ZMAT.zmat_compile() -# os.chdir("../../") - -# s_vec = SVectors(ZMAT, options, ZMAT.variable_dictionary_init) - - def test_compute_G(): errors = [] suite.s_vec.run(suite.ZMAT.cartesians_init, True) @@ -54,10 +36,6 @@ def test_compute_G(): [ 0.00000000e+00, -2.59456007e-05, 2.83001423e-05, -4.34098373e-06, -4.38818656e-06, 1.25695499e-05, 1.56366743e-05, -2.64304905e-05, 1.04052001e-05, 1.94198975e-04, 3.76137316e-04, 7.83768965e-05], [ 5.00626441e-05, -3.20145289e-05, -1.09112087e-05, -1.09111166e-05, 0.00000000e+00, 6.80353003e-06, -1.42465168e-04, -1.16816043e-04, -1.16815711e-04, -7.83770679e-05, 7.83768965e-05, 3.78284543e-04]] G_ref = np.array(G_ref) - # print(np.sum(abs(G_ref - g_mat.G))) - - # if np.setdiff1d(np.array(G_ref), np.array(g_mat.G.tolist())).size: - # errors.append("Computed G-matrix does not match the reference.") assert np.sum(abs(G_ref - g_mat.G)) < 1.0e-8 diff --git a/tests/test_s_vectors.py b/tests/test_s_vectors.py index 568169c7..37cdca1b 100644 --- a/tests/test_s_vectors.py +++ b/tests/test_s_vectors.py @@ -236,7 +236,6 @@ B_ref_INTDER = np.array(B_ref_INTDER) B_ref_INTDER = B_ref_INTDER.reshape((12,18)) B_ref_INTDER[5:] *= 0.529177210903 -# print(B_ref_INTDER) def test_compute_B(): @@ -246,10 +245,6 @@ def test_compute_B(): B_diff = s_vec.B - B_ref_INTDER - # print(np.sum(B_diff)) - - # if np.setdiff1d(np.array(B_ref), np.array(s_vec.B.tolist())).size: - # errors.append("Computed S-vectors do not match the reference.") assert abs(np.sum(B_diff)) < 1.0e-8 diff --git a/tests/test_transf_disp.py b/tests/test_transf_disp.py index 05dbbe21..2245f426 100644 --- a/tests/test_transf_disp.py +++ b/tests/test_transf_disp.py @@ -47,7 +47,6 @@ def test_transf_disp(): [1.941172931083388, -1.5774905865156932, -0.0019238478290682895], ] - # print(disps.p_disp[3][3].tolist()) if np.setdiff1d(np.array(disp_ref), disps.p_disp[3][3].tolist()).size: errors.append("Computed Displacement does not match the reference.") diff --git a/tests/test_zmat.py b/tests/test_zmat.py index b0acc355..22b34437 100644 --- a/tests/test_zmat.py +++ b/tests/test_zmat.py @@ -39,101 +39,6 @@ ] zmat_read = [(coord1,ref_Red,file1),(coord2,ref_ZMAT,file2),(coord2,ref_Custom,file3)] -# ZMAT ref indices and variables -# ref_zmat_bond_indices = [["2", "1"], ["3", "1"], ["4", "1"], ["5", "1"], ["6", "2"]] -# ref_zmat_angle_indices = [ - # ["3", "1", "2"], - # ["4", "1", "2"], - # ["5", "1", "2"], - # ["6", "2", "1"], -# ] -# ref_zmat_torsion_indices = [ - # ["4", "1", "2", "3"], - # ["5", "1", "2", "4"], - # ["6", "2", "1", "3"], -# ] -# ref_zmat_bond_variables = ["R1", "R2", "R3", "R4", "R5"] -# ref_zmat_angle_variables = ["A2", "A3", "A4", "A5"] -# ref_zmat_torsion_variables = ["D3", "D4", "D5"] - -# #Redundant ref indices and variables -# ref_red_bond_indices = np.array( - # [["1", "2"], ["1", "3"], ["1", "4"], ["1", "5"], ["2", "6"]] -# ) -# ref_red_angle_indices = np.array( - # [ - # ["2", "1", "3"], - # ["2", "1", "4"], - # ["2", "1", "5"], - # ["1", "2", "6"], - # ["3", "1", "4"], - # ["3", "1", "5"], - # ["4", "1", "5"], - # ] -# ) -# ref_red_torsion_indices = np.array( - # [ - # ["3", "1", "2", "4"], - # ["3", "1", "2", "5"], - # ["3", "1", "2", "6"], - # ["2", "1", "3", "4"], - # ["2", "1", "3", "5"], - # ["4", "1", "2", "5"], - # ["4", "1", "2", "6"], - # ["2", "1", "4", "3"], - # ["2", "1", "4", "5"], - # ["5", "1", "2", "6"], - # ["2", "1", "5", "3"], - # ["2", "1", "5", "4"], - # ["4", "1", "3", "5"], - # ["3", "1", "4", "5"], - # ["3", "1", "5", "4"], - # ] -# ) -# ref_red_bond_variables = ["R1", "R2", "R3", "R4", "R5"] -# ref_red_angle_variables = ["A1", "A2", "A3", "A4", "A5", "A6", "A7"] -# ref_red_torsion_variables = [ - # "D1", - # "D2", - # "D3", - # "D4", - # "D5", - # "D6", - # "D7", - # "D8", - # "D9", - # "D10", - # "D11", - # "D12", - # "D13", - # "D14", - # "D15", -# ] - -# # Custom ref indices and variables -# ref_custom_bond_indices = [("1", "2"), ("1", "3"), ("1", "4"), ("1", "5"), ("2", "6")] -# ref_custom_angle_indices = [ - # ("2", "1", "3"), - # ("2", "1", "4"), - # ("2", "1", "5"), - # ("3", "1", "4"), - # ("4", "1", "5"), - # ("5", "1", "3"), - # ("6", "2", "1"), -# ] -# ref_custom_torsion_indices = [("6", "2", "1", "4")] -# ref_custom_oop_indices = [("4", "1", "3", "5")] -# ref_custom_lin_indices = [("5", "1", "2", "4")] -# ref_custom_linx_indices = [("3", "1", "2", "6")] -# ref_custom_liny_indices = [("3", "1", "2", "6")] -# ref_custom_bond_variables = ["R1", "R2", "R3", "R4", "R5"] -# ref_custom_angle_variables = ["A1", "A2", "A3", "A4", "A5", "A6", "A7"] -# ref_custom_torsion_variables = ["D1"] -# ref_custom_oop_variables = ["O1"] -# ref_custom_lin_variables = ["L1"] -# ref_custom_linx_variables = ["Lx1"] -# ref_custom_liny_variables = ["Ly1"] - @pytest.mark.parametrize( "option, expected, file_name",zmat_read ) From 29946e64225e0b7ed686167b7edcfe77166bd0de Mon Sep 17 00:00:00 2001 From: MitchLahm Date: Tue, 20 Dec 2022 16:37:56 -0500 Subject: [PATCH 6/7] Fixed some string literals --- zmat.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/zmat.py b/zmat.py index d26f3c27..b31a5c33 100644 --- a/zmat.py +++ b/zmat.py @@ -39,27 +39,27 @@ def zmat_read(self,zmat_name): self.zmat_end_regex = re.compile(r"ZMAT end") # ZMAT regexes - self.first_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s*\n") - self.second_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s*\n") - self.third_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s*\n") - self.full_atom_regex = re.compile("^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s+(\d+)\s*\n") + self.first_atom_regex = re.compile(r"^\s*([A-Za-z]+[0-9]*)\s*\n") + self.second_atom_regex = re.compile(r"^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s*\n") + self.third_atom_regex = re.compile(r"^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s*\n") + self.full_atom_regex = re.compile(r"^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s+(\d+)\s*\n") # Custom int coord regexes - self.bond_regex = re.compile("^\s*(\d+)\s+(\d+)\s*\n") - self.angle_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s*\n") - self.torsion_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*T\s*\n") - self.oop_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*O\s*\n") - self.lin_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*L\s*\n") - self.linx_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*Lx\s*\n") - self.liny_regex = re.compile("^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*Ly\s*\n") + self.bond_regex = re.compile(r"^\s*(\d+)\s+(\d+)\s*\n") + self.angle_regex = re.compile(r"^\s*(\d+)\s+(\d+)\s+(\d+)\s*\n") + self.torsion_regex = re.compile(r"^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*T\s*\n") + self.oop_regex = re.compile(r"^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*O\s*\n") + self.lin_regex = re.compile(r"^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*L\s*\n") + self.linx_regex = re.compile(r"^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*Lx\s*\n") + self.liny_regex = re.compile(r"^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*Ly\s*\n") # Cartesian regexes self.cart_begin_regex = re.compile(r"cart begin") self.cart_end_regex = re.compile(r"cart end") - s = "[A-Za-z]+[0-9]*\s+(-?\d+\.\d+)\s+(-?\d+\.\d+)\s+(-?\d+\.\d+)\s*\n" + s = r"[A-Za-z]+[0-9]*\s+(-?\d+\.\d+)\s+(-?\d+\.\d+)\s+(-?\d+\.\d+)\s*\n" self.cartesian_regex = re.compile(s) - s = "([A-Za-z]+[0-9]*)\s+-?\d+\.\d+\s+-?\d+\.\d+\s+-?\d+\.\d+\s*\n" + s = r"([A-Za-z]+[0-9]*)\s+-?\d+\.\d+\s+-?\d+\.\d+\s+-?\d+\.\d+\s*\n" self.cartesian_atom_regex = re.compile(s) - self.divider_regex = re.compile("^\s*\-\-\-\s*\n") + self.divider_regex = re.compile(r"^\s*\-\-\-\s*\n") with open(zmat_name, "r") as file: From 9db1a94d697e09ec4ba119958e9009434ec119bd Mon Sep 17 00:00:00 2001 From: MitchLahm Date: Wed, 8 Feb 2023 12:59:19 -0500 Subject: [PATCH 7/7] Updates to interface with CMA_benchmarker --- __pycache__/__init__.cpython-35.pyc | Bin 0 -> 141 bytes __pycache__/__init__.cpython-38.pyc | Bin 0 -> 149 bytes __pycache__/__init__.cpython-39.pyc | Bin 0 -> 149 bytes __pycache__/algorithm.cpython-35.pyc | Bin 0 -> 2540 bytes __pycache__/algorithm.cpython-38.pyc | Bin 0 -> 2302 bytes __pycache__/algorithm.cpython-39.pyc | Bin 0 -> 2302 bytes __pycache__/cma.cpython-35.pyc | Bin 0 -> 11617 bytes __pycache__/cma.cpython-38.pyc | Bin 0 -> 10126 bytes __pycache__/cma.cpython-39.pyc | Bin 0 -> 10214 bytes __pycache__/directory_tree.cpython-35.pyc | Bin 0 -> 4003 bytes __pycache__/directory_tree.cpython-38.pyc | Bin 0 -> 3573 bytes __pycache__/directory_tree.cpython-39.pyc | Bin 0 -> 3705 bytes __pycache__/f_convert.cpython-35.pyc | Bin 0 -> 2616 bytes __pycache__/f_convert.cpython-38.pyc | Bin 0 -> 2386 bytes __pycache__/f_convert.cpython-39.pyc | Bin 0 -> 2408 bytes __pycache__/f_read.cpython-35.pyc | Bin 0 -> 1179 bytes __pycache__/f_read.cpython-38.pyc | Bin 0 -> 1118 bytes __pycache__/f_read.cpython-39.pyc | Bin 0 -> 1136 bytes __pycache__/force_constant.cpython-35.pyc | Bin 0 -> 2188 bytes __pycache__/force_constant.cpython-38.pyc | Bin 0 -> 2048 bytes __pycache__/force_constant.cpython-39.pyc | Bin 0 -> 2034 bytes __pycache__/g_matrix.cpython-35.pyc | Bin 0 -> 1270 bytes __pycache__/g_matrix.cpython-38.pyc | Bin 0 -> 1184 bytes __pycache__/g_matrix.cpython-39.pyc | Bin 0 -> 1184 bytes __pycache__/gf_method.cpython-35.pyc | Bin 0 -> 2253 bytes __pycache__/gf_method.cpython-38.pyc | Bin 0 -> 1999 bytes __pycache__/gf_method.cpython-39.pyc | Bin 0 -> 1999 bytes __pycache__/int2cart.cpython-35.pyc | Bin 0 -> 3929 bytes __pycache__/int2cart.cpython-38.pyc | Bin 0 -> 3441 bytes __pycache__/int2cart.cpython-39.pyc | Bin 0 -> 3467 bytes __pycache__/masses.cpython-35.pyc | Bin 0 -> 83293 bytes __pycache__/masses.cpython-38.pyc | Bin 0 -> 89544 bytes __pycache__/masses.cpython-39.pyc | Bin 0 -> 50973 bytes __pycache__/options.cpython-35.pyc | Bin 0 -> 2424 bytes __pycache__/options.cpython-38.pyc | Bin 0 -> 2099 bytes __pycache__/options.cpython-39.pyc | Bin 0 -> 2099 bytes __pycache__/reap.cpython-35.pyc | Bin 0 -> 6519 bytes __pycache__/reap.cpython-38.pyc | Bin 0 -> 5690 bytes __pycache__/reap.cpython-39.pyc | Bin 0 -> 5820 bytes __pycache__/rmsd.cpython-38.pyc | Bin 0 -> 11182 bytes __pycache__/rmsd.cpython-39.pyc | Bin 0 -> 11180 bytes __pycache__/s_vectors.cpython-38.pyc | Bin 0 -> 14284 bytes __pycache__/s_vectors.cpython-39.pyc | Bin 0 -> 14226 bytes __pycache__/sapelo_template.cpython-38.pyc | Bin 0 -> 2149 bytes __pycache__/sapelo_template.cpython-39.pyc | Bin 0 -> 2153 bytes __pycache__/submit.cpython-38.pyc | Bin 0 -> 1926 bytes __pycache__/submit.cpython-39.pyc | Bin 0 -> 1906 bytes __pycache__/ted.cpython-38.pyc | Bin 0 -> 6325 bytes __pycache__/ted.cpython-39.pyc | Bin 0 -> 6325 bytes __pycache__/transf_disp.cpython-38.pyc | Bin 0 -> 9613 bytes __pycache__/transf_disp.cpython-39.pyc | Bin 0 -> 9601 bytes __pycache__/vulcan_template.cpython-38.pyc | Bin 0 -> 4175 bytes __pycache__/vulcan_template.cpython-39.pyc | Bin 0 -> 4179 bytes __pycache__/zmat.cpython-38.pyc | Bin 0 -> 14048 bytes __pycache__/zmat.cpython-39.pyc | Bin 0 -> 14036 bytes options.py | 6 +- reap.py | 8 +- s_vectors.py | 2 +- .../__pycache__/suite_execute.cpython-39.pyc | Bin 0 -> 2310 bytes ...directory_tree.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 1514 bytes ...test_f_convert.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 2271 bytes .../test_f_read.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 4212 bytes .../test_g_matrix.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 3001 bytes ...test_gf_method.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 1823 bytes .../test_reap.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 2115 bytes ...test_s_vectors.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 3276 bytes ...st_transf_disp.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 2111 bytes .../test_zmat.cpython-39-pytest-7.2.0.pyc | Bin 0 -> 7318 bytes zmat.py | 223 ++++++++++++++---- 69 files changed, 192 insertions(+), 47 deletions(-) create mode 100644 __pycache__/__init__.cpython-35.pyc create mode 100644 __pycache__/__init__.cpython-38.pyc create mode 100644 __pycache__/__init__.cpython-39.pyc create mode 100644 __pycache__/algorithm.cpython-35.pyc create mode 100644 __pycache__/algorithm.cpython-38.pyc create mode 100644 __pycache__/algorithm.cpython-39.pyc create mode 100644 __pycache__/cma.cpython-35.pyc create mode 100644 __pycache__/cma.cpython-38.pyc create mode 100644 __pycache__/cma.cpython-39.pyc create mode 100644 __pycache__/directory_tree.cpython-35.pyc create mode 100644 __pycache__/directory_tree.cpython-38.pyc create mode 100644 __pycache__/directory_tree.cpython-39.pyc create mode 100644 __pycache__/f_convert.cpython-35.pyc create mode 100644 __pycache__/f_convert.cpython-38.pyc create mode 100644 __pycache__/f_convert.cpython-39.pyc create mode 100644 __pycache__/f_read.cpython-35.pyc create mode 100644 __pycache__/f_read.cpython-38.pyc create mode 100644 __pycache__/f_read.cpython-39.pyc create mode 100644 __pycache__/force_constant.cpython-35.pyc create mode 100644 __pycache__/force_constant.cpython-38.pyc create mode 100644 __pycache__/force_constant.cpython-39.pyc create mode 100644 __pycache__/g_matrix.cpython-35.pyc create mode 100644 __pycache__/g_matrix.cpython-38.pyc create mode 100644 __pycache__/g_matrix.cpython-39.pyc create mode 100644 __pycache__/gf_method.cpython-35.pyc create mode 100644 __pycache__/gf_method.cpython-38.pyc create mode 100644 __pycache__/gf_method.cpython-39.pyc create mode 100644 __pycache__/int2cart.cpython-35.pyc create mode 100644 __pycache__/int2cart.cpython-38.pyc create mode 100644 __pycache__/int2cart.cpython-39.pyc create mode 100644 __pycache__/masses.cpython-35.pyc create mode 100644 __pycache__/masses.cpython-38.pyc create mode 100644 __pycache__/masses.cpython-39.pyc create mode 100644 __pycache__/options.cpython-35.pyc create mode 100644 __pycache__/options.cpython-38.pyc create mode 100644 __pycache__/options.cpython-39.pyc create mode 100644 __pycache__/reap.cpython-35.pyc create mode 100644 __pycache__/reap.cpython-38.pyc create mode 100644 __pycache__/reap.cpython-39.pyc create mode 100644 __pycache__/rmsd.cpython-38.pyc create mode 100644 __pycache__/rmsd.cpython-39.pyc create mode 100644 __pycache__/s_vectors.cpython-38.pyc create mode 100644 __pycache__/s_vectors.cpython-39.pyc create mode 100644 __pycache__/sapelo_template.cpython-38.pyc create mode 100644 __pycache__/sapelo_template.cpython-39.pyc create mode 100644 __pycache__/submit.cpython-38.pyc create mode 100644 __pycache__/submit.cpython-39.pyc create mode 100644 __pycache__/ted.cpython-38.pyc create mode 100644 __pycache__/ted.cpython-39.pyc create mode 100644 __pycache__/transf_disp.cpython-38.pyc create mode 100644 __pycache__/transf_disp.cpython-39.pyc create mode 100644 __pycache__/vulcan_template.cpython-38.pyc create mode 100644 __pycache__/vulcan_template.cpython-39.pyc create mode 100644 __pycache__/zmat.cpython-38.pyc create mode 100644 __pycache__/zmat.cpython-39.pyc create mode 100644 tests/__pycache__/suite_execute.cpython-39.pyc create mode 100644 tests/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_f_convert.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_g_matrix.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_gf_method.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_reap.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_s_vectors.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_transf_disp.cpython-39-pytest-7.2.0.pyc create mode 100644 tests/__pycache__/test_zmat.cpython-39-pytest-7.2.0.pyc diff --git a/__pycache__/__init__.cpython-35.pyc b/__pycache__/__init__.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..99fac7340868346aba79fefb51fae335273fce08 GIT binary patch literal 141 zcmWgV<>hi$c1~gdg2x~N1{i@12OutH0TL+;48fX=ek&P@K*9*(mz91-er~FMS!qsk zVxE3(YL1zSnTfG}L1J=tVtQ(^esX?Za(+=tVqQsZehQEuAD@|*SrQ+wS5SG2!v-i; Nnv-e=GP4+n82~f_Ao~CS literal 0 HcmV?d00001 diff --git a/__pycache__/__init__.cpython-38.pyc b/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..006d891af7593eeb2ec294a8b44b1afc2b099916 GIT binary patch literal 149 zcmWIL<>g`k0(WKSBoO@=L?8o3AjbiSi&=m~3PUi1CZpd6pl#-ZNlAE6bg`k0(WKSBoO@=L?8o3AjbiSi&=m~3PUi1CZpd6pl#-ZNlAE6bS9oR;;D79(q(1AnZlNfUjeTS_MNtd2N%VRTp zJ@*-G(r!;^x2(ddjCiQ6fwK@YsJmOrjz7NWY(}NcvHp;VfBIE=)=P{%806v8;x9Y@9t#($qg>y>T(E zWW2@h;n>)O$>n-1E2+jwCS&$8Ev14AcKEsCiO?@2oFg0f{b?3eNuDhu36EeU$*SDA z<8YE#s?ex#nE4~A(y&;Dm*r|4rU)ljagv19sgmq}$HQ?EMG>kh ziKc0&{Dmdsb)3g?YvG^y!wJgUQg`yZ0*QoQ0iJ< zaQLNeCRtJ?VH)(Ko}-;orhUbRmB*cn?srmky#BqjJfx}>dLScYB${v{|sMSdQ zvXsGXi`M7Pa@^p0II>CoxH4nWmAOlkKiH~KcPYEDGQixKg{E-~YoF6WO)g?=-L_E zbv^I*176VQmQrvC{*^1^G#MwAcG5gAdY-Dm)53qF%2N;<^wc6$7dQeNx+edNu3_fX zG`j?$yoQcM!}3H2xonF~t1T{wi=u0Ftfuh9N#|vDu_xkW^22=M^O?l{34xPm5<5VT zs|V?IY4)qhu;BDQ_~s{?do=sOOnG#QKXUcd!pfB9H9Ex~yg+u2kohm^^U01;s?m`} zYDT9H(}TCwXs}>Rw!PFqihnaQ(v96e)8|?Dbvuwrg!Uole~0!b@6bNX?)B{5XIzI0 z7d`cClRoVN#(~scSQIjgd-Vm%jGDn!U1o`k;lSRTjasnw@-1{+FCKnf zaTORlK>9KeZ$s(=@so2ek><3%fchMEavd3{M_}6m;R=AGB+S2W;9$U?Pz8+609OX^ zWOeE*gS5erQT>+D049v8M=-N9xw8W49jZ`oMjLAzd>46(SB*BVY@ThbEjR8@-lKhv zYf&+V0u_v-dQjfH08?f#uM-cEaZ|A-VDUBTu0iuA%^sN5I@G;yHthrJyl6V-#iqC>*2FqiJ9xh#Jm=)i zmxO%HeYM-G^EV+2$1(_XGYD|eO;eWJK`@zy>Dfvx2;w{n0@Z|bway(^h2p4IBIOH3 z@!h0sbbO(eyrJ!RR@-Z@wb#siuclo9SsW`aC~f6Hp^OrYxqP*kAC6>H8P(U>*7co5 Qlpk|eOZLeHh%3+j4|x|kMF0Q* literal 0 HcmV?d00001 diff --git a/__pycache__/algorithm.cpython-38.pyc b/__pycache__/algorithm.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9b466f0274b9b08e92af076b6c3307465b091199 GIT binary patch literal 2302 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

nggBO;RQ-%y{4cgR1*xgRD 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 literal 0 HcmV?d00001 diff --git a/__pycache__/vulcan_template.cpython-38.pyc b/__pycache__/vulcan_template.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..16a8558dca5c4fde0aa927fd7392aa23b1e06f85 GIT binary patch literal 4175 zcmeGf%W~UB65s=*5j)Q2S$mtvs#M7_0a;clDQBGuEYcPokyHt^z00jNJj4u1&>#Q} z2DC)UrzF??f*f{_`zQGZTyxs}gQQZG^x#2}jH0UD@?j4d6z0*>)352C>3MwZnkqrr zyRqB<`MM;1F9wUH1cNW&54WKr5|Lf0Cqr9s3zK56C<|E8l_sTLS(YA3q(sVJOQcMd zuZq12kxgks`8TYT+8c6Qbi64vitBjT9ohoCSPC%s0{##|MH4o?0+D+~QXs{zrCuo| z-YXLY$X4PvpG2;Wy)K;uF6MN$qarBXkrSeU<5Dz^LXJZ2Ga4d3qG+0+qoXkDqtIqf zz>@`b8QA4T^sDgi!XG|^>a2JsS)ev4oRvuN15of=0g=z-aRL4!DgUE%R`{n3cqLvw zD|{uNNn;rOQ6kE>6~I(rERo8K0_&10j4Pf(u85XMpoQ9={bl020rOGKL+fpGztc5Q zt>*brNNcV?Of(VW+VRA#`4JByj%vQpbg85>8o?Yn9^i=H?0OJ7+Y5weZ+<+bHdw@& zVea_eMln`W?r}+=#$|ipM{HKQT|0dR7M71<#S2}ZhdpJC8N(;>6%ci3d3Zu$33Ph} zZuiPIY$;_GuowOhnD54idf)N%aHQT?N3|n#dh{ykwb8Ec**+uK;|ah-i-`71l0Z2+ zO}VA3xQ$M^{Yq6eq*HF|z*bmABl^TAkxN4j7^yc<-3f6Y_8sO)WDEU}KS02aA`(r4 z#3@2Ga-E3-CbZF}s#1I8qqViHz4>}dP7awIGwygpH1_*3j?_CiQS9F{o4$z7mkK5SSW z>uKlk%X;&0#V$ewGwOrcI3*|wVX@$GzL%)w69_UR0Mlc8gmN8Uk3Da$iQTmcI5zj8 zBF@wy5q1&B;fr%ERKQqPLr;cX!~D_$LuKLb`k0{8#9_gu;2gl*9^G5-whlmXef_c7 zfLiPUECIGA2csQjykOatNplTb@vV%M%}!(olm6kd+)XyFgkFK@9BQP z^_1~q7osIPt{s26W9@9~pcQp%x9@11+NPewUu{djx*oxex?9R_)+2{q!5Xh22a*pUT2taj?-nnla?k=IHkc-hD z?6#Wi?jm{yxfnfDV?me|#g>K1m0G~hK^N2S9CTNt&mb40H_cABbI>ps<)6cTb4klE zS63vUix)Va!wL103t&NyMexN7JNxxkXNge;Sw_##nZwBQ#Nm-RDuN^S`6xSfp65}I z<~Z23Be(CY~k-Aw&{!xot)be~9$c#J>LN{$ z&b%~>9cUgj+s6J}kw>l0z81iBkKp_h4xWYZgKSuD9@HC$Xs=Nc_oXd~Ki;R^g2M8u1 ziGUoF!p1E*ytan$caXLIp6-Y&>i2Z#|2N$cnL1=US^AP?DW_>_5AZA<+Nd(|80=LA zI&o|smyaSEQFaBOu_8_+%;RFnSzPv$`Ri$JWAW?_wo#5tA$13F1ri@P_QPIf45ybD zO%lrN4IuO{iM<2OkA^<-Cp6EFCe+>8-r2sR2iSgrhZK(X`BMSXd>F5=(t?w?YFXlf zvn)Y3c{WP2Qh*{WKUFIwxg=NR0(^>G{h|7XDpwn`51uSN8nv8)Edze^Eb_jAPAHzYl018RMF5y? zZzw_)k-J+~tXfw3u7Unl%Q}KgH=C(g7V&M%V($SZ_P(gjnI%2Jk%=d}0)Hr~s$42n zX9;Yh8kb=wz-|REh_5DHEq#kKAsiDb$Ax_(R{Z`Lo(9RPi&(_fKcymmE-aPtxhh{R F{sOJsh`Rs) literal 0 HcmV?d00001 diff --git a/__pycache__/vulcan_template.cpython-39.pyc b/__pycache__/vulcan_template.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ce13d2415de4cd163ae56ed43bd50529dd2a568 GIT binary patch literal 4179 zcmeGfO>f&qmedEOuu0SJqPJPcDBx^FI*#EMX;YN3lvt@H8K#=FDjH_Q8A((qk{%8f zTXs(EUiTODumyVAf3m-U*FEk2gDncQZ}=fgTGzlXdg!4eXgKrc&HI}7-n_xruBj5V zy&JpzpRY^OKgDFRm0dEjexP?ivSCj>;=t`4PuPjRsB~l{gZzWQu z$~VPcg~+C~q5KPWO6?6fE;`;6K8ovj*d5veyx0mb`4s*kf{rF^dIci)iljh_-%7nw zO1xJl3XrYDuRe}k8+%VSK}Sbn)JLJs zoPZ}A>@u*+n;2K&zYG8HDRgJWGsyzAN#U$SitmDg-wB9(CXWm7FOu@#N@s=dWxy-( z@>$^<`Aiza>^+Gn-&Fupfw@E~&kL+esxYs33b`V_L;@|;_Uy}v?*`0AH4m+~&HYZ- zM75gdM?k79 zBuJbhR3q1!IAB5>ZK^7@M?P9x%f2^%o0gM9CdZ6B-Vlxb{@om!f5qvw!Hjp8juEY` zKkD4K+D5C92_=@B^%X3X;Wg_ESbKiR#lbA#uC4EN%Fq#_PWoZ;jyP%|Gk ztd8}hbNE@kdAMR1A%Yq8!EBro6os%^@Hjt9)ba@gnGt~Lu{}b$j=zmPZ?1{cwFx*j z_n{-s)FBae5y#>4b1hWBSXM(%rd`AQ%mPDY;qUsGpwq-*!KEM%U~Z4@t#?}opt!#N zx!HhToB?bBwkG9hikTxkD^%%m;4_Xotplt5dCThV9X5=*d2c&kNaOe3Z8czY;2hu6 z{ebH!eg=G(KfYBJ&C{CmbO_t8I8BMcEI273_lo!?zBG% zhEsAf3ASE*u*3Ym5N_8GPK0wI2zIR6!DagEy_V5M>zTsIEZLDts`qi|g!;oq`@Uh$ zvHlyOv3pQAy2d$%GeBRV8byzcX1o3c`uZc0YCQz9WRRRA`UnD0ouhZ|8;83~=qco4 z^as1GX1lwHo|`^g9RL73nj`#pq45)9oBI%tiUkFiEWlTIx5+Otn!X81kOL3xI6eI%Y-YP=Jqc0ZEuQotA^fIP7PU8F`Vi|=} z1>t$rBFyZOGo{Jxq{4*(mp^CN3kN=%ptbPU(_4@HzEuYitt>6+x7JW?Y7Z{ec6E~` zNM~M}#SVNPG~34hT#-ku&b}7Fb&nwb2?x(Y_(3+UHxKHKL$ud0&8E>tfL(92QM>U( zIFRwU^U$atcEo-S3Kx`l<2>YN6U;X^Z_kbRKj_N-4_yVjn`xX6XU^rR@gig8#Q}mv zC?cT7q;POc4zH~t{12#F|0s7v74=8C^ZPA#M5PYZPFB8TRmy2v+5EAJO+DJ zfleHo$K|7lMwDFvXsn2ggn3*HIg87FvVJ|SZ7iO>!8XcqDWvWou0Y`fX+P{$#*n?d zXp&H7uK=OHOYBYf{AlPSe?s%>XhPkc?VasAdVuZcct|0&&z}lV=EHo2l@^@DRm&0= zoMj2R$+J#(b`Kekd$tAfe7vQJJ)&EpqQRQl5_U_}QN28Wguw@{TH!&6u-{cke z77WB2ZY&QZM~n(T$bS_NTe-baWUs+0yCyn#Jp+urF2+K^v=h7IB8$Agz#tS)TuGk2 zu_6R4w>K1_j;P-)D^@KlecQnJs%0HPwVSO}EQ|QIWwEz`5_?B<=gg9k;K+pZ3j9OS zRpnBtI!j<1)wm3&0k$i6L3}kCYUz8N3E@}~y11}!#ERb^!}B27brFlW`f)1aC&F48 JpR4lK;xEfziP``F literal 0 HcmV?d00001 diff --git a/__pycache__/zmat.cpython-38.pyc b/__pycache__/zmat.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..610fdad5750e5cd4a68e53eeaa7bc307d9eb9fbb GIT binary patch literal 14048 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 literal 0 HcmV?d00001 diff --git a/__pycache__/zmat.cpython-39.pyc b/__pycache__/zmat.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..129ae201db4d48e9bbf7c25f7ae8bd43d5ca67b1 GIT binary patch literal 14036 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 PLdcy3mkO~4UsC-)X17|{ literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_directory_tree.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..88e3f79dd221b8262f39b10d410bd4c043a7d8a3 GIT binary patch literal 1514 zcmZWpOOG5i5VqZ~>6xD0*+)Wb@}C$&mwxnIji|3`bu%V|xW@3zAn zgFMm)fH-VNTfD|U08brM8!9(>ygHoCrC6k#X*TD%Of^(#{w9W!7=HyNq+wYXjjUIR z7G+Z~EoOi_ovGE_D3cL z4zq2}Oq`I~TBDv(&~bz&3o;T)-YW zWzy`W87m6dyOCL4HcSeWfH{4(%nJ=Mn6Rh;q0FsRoz=^NJ81g6sGqSStyn2coGND1 zZKT=x!et0|wWIdwZsdiR%6y$lY!b1|`kPP}6B!UnB z^!)^XgrSq0pqEF0n;w|KC8Kg56z1KuufeQO33!=F@x9D7@cEC*M1Sk#1bk?0DRFg_ z_FXXqiWRD}rOpczRLc@VB~?S;xt84Ql5Kao4zFA7+3Jtk(RI^*sc^^3rQ)BTnqreAC_Y?(T2KtJf<8zAt~6`rq4x z{Eo``&jjT@6!|LvBaDW`p}ICA(;$>YmQ$d4i|rJ3OUWtey6lvpHo{6&b*j3L8QM|J zscYE^8_|-pq~$`m95tP$mhEsQYB?<}7sJ(P%~{iODO``*PFu_6a3k7uHnm&{x1w!l zn-X3eUSL&LdqF{7Vs+LyHk^z6;`Gu9?2|3Aukc?z>Xbeq23rc}eW|}8buzKCEwF8mtrL1ozl98%n2bOKYL8SYh%+w0 z?SrFgf7f?G?SXGzV`9Dp$1?C+BLFa z0oVKcoot_Xz}H;x*yp{|6)psXsFV2qNO1O1<(rA3mDAPAJx@w5GClIz_4M#YS1J=K zW#=Qh7X(H@6?8TzW3Z!a*eWanCij5*5bVz$JXJ-Ayqi25s$!C7hANEWAcM)oC>B64 zqO8=*_LUK*sw{cNg5BMlOwoZVhy-G31fPpGDgNB2P1dyV8C z>_JK7`Is1ZI7dFwpV5Il4JJATYi3P_1Z3%uTmo z6KgQPTm>N1GOp5+(SWi=Eo%H_S>i6(|3xJ9|C~sFg7QC!M1U|zrkrr*0^$ClRu%fx zn578^^qCQ^K5YQWDnPgbvw?8tjBr0{!WHL)v&NSELldq9ge#vTTm=XR7u=k1ujYjN z?Hu81ns9{~;RhL3Gis(#YZ)y9jeGX(ST;LgwRA-L1-bMqXoKL z=fR8;qK$?PgiVAkgl&Wi2p179AzVgy0|CPzItW(~t|GjNa1G%tgtrl{BXkkoL3kJ8 zJ%slWdI)`l8vtEfZ%W(*8B-HaGfUAOaSMChM!eKfO6a^p)kT|F>Ph>y=+d?Zw8~wIzzU|-?&rJoe_iQblK{`E#$DE>JpTI$EWV f;er^2{2qlKvI78=hrdQ^2K-p(KWG&QTB-RrXSrwc literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_f_read.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..335b4914077da20e1a4de14937eb61a33ca3b026 GIT binary patch literal 4212 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 literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_gf_method.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_gf_method.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bdd29cec96c23515ec9676dd56286638d82fd64a GIT binary patch literal 1823 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 UslAOfQpWAXW)o>5vnZqK-y>WRSpWb4 literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_transf_disp.cpython-39-pytest-7.2.0.pyc b/tests/__pycache__/test_transf_disp.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ef445bf57ad7ba07ef6b7549577c666ab7926cd GIT binary patch literal 2111 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 literal 0 HcmV?d00001 diff --git a/zmat.py b/zmat.py index b31a5c33..a09a003b 100644 --- a/zmat.py +++ b/zmat.py @@ -3,6 +3,7 @@ import shutil import re from . import masses +from qcelemental.covalent_radii import CovalentRadii from concordantmodes.int2cart import Int2Cart from concordantmodes.transf_disp import TransfDisp @@ -15,7 +16,7 @@ def __init__(self, options): self.Bohr_Ang = 0.529177210903 def run(self, zmat_name="zmat"): - + # Read in the ZMAT file zmat_output = self.zmat_read(zmat_name) @@ -24,16 +25,14 @@ def run(self, zmat_name="zmat"): # Calculate internal coordinate values from reference cartesian coordinates self.zmat_calc() - - # + + # self.zmat_compile() # self.zmat_print() - - - def zmat_read(self,zmat_name): + def zmat_read(self, zmat_name): # Define some regexes self.zmat_begin_regex = re.compile(r"ZMAT begin") self.zmat_end_regex = re.compile(r"ZMAT end") @@ -41,8 +40,12 @@ def zmat_read(self,zmat_name): # ZMAT regexes self.first_atom_regex = re.compile(r"^\s*([A-Za-z]+[0-9]*)\s*\n") self.second_atom_regex = re.compile(r"^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s*\n") - self.third_atom_regex = re.compile(r"^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s*\n") - self.full_atom_regex = re.compile(r"^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s+(\d+)\s*\n") + self.third_atom_regex = re.compile( + r"^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s*\n" + ) + self.full_atom_regex = re.compile( + r"^\s*([A-Za-z]+[0-9]*)\s+(\d+)\s+(\d+)\s+(\d+)\s*\n" + ) # Custom int coord regexes self.bond_regex = re.compile(r"^\s*(\d+)\s+(\d+)\s*\n") self.angle_regex = re.compile(r"^\s*(\d+)\s+(\d+)\s+(\d+)\s*\n") @@ -61,7 +64,6 @@ def zmat_read(self,zmat_name): self.cartesian_atom_regex = re.compile(s) self.divider_regex = re.compile(r"^\s*\-\-\-\s*\n") - with open(zmat_name, "r") as file: output = file.readlines() @@ -117,28 +119,30 @@ def zmat_read(self,zmat_name): self.cartesians_init /= self.Bohr_Ang self.cartesians_final /= self.Bohr_Ang + zmat_output = "" # Slice out the ZMAT from the input - zmat_range = [] + if not self.options.covalent_radii: + zmat_range = [] - for i in range(len(output)): - beg_zmat = re.search(self.zmat_begin_regex, output[i]) - if beg_zmat: - zmat_range.append(i) - - for i in range(len(output) - zmat_range[0]): - end_zmat = re.search(self.zmat_end_regex, output[i + zmat_range[0]]) - if end_zmat: - zmat_range.append(i + zmat_range[0]) - break + for i in range(len(output)): + beg_zmat = re.search(self.zmat_begin_regex, output[i]) + if beg_zmat: + zmat_range.append(i) + + for i in range(len(output) - zmat_range[0]): + end_zmat = re.search(self.zmat_end_regex, output[i + zmat_range[0]]) + if end_zmat: + zmat_range.append(i + zmat_range[0]) + break + + zmat_output = output[zmat_range[0] + 1 : zmat_range[1]].copy() - zmat_output = output[zmat_range[0] + 1 : zmat_range[1]].copy() - # print(output) # print(zmat_output) return zmat_output - def zmat_process(self,zmat_output): + def zmat_process(self, zmat_output): # Initialize necessary lists self.bond_indices = [] self.bond_variables = [] @@ -196,7 +200,9 @@ def zmat_process(self,zmat_output): self.torsion_variables.append("D" + str(i - first_index)) elif self.options.coords.upper() == "REDUNDANT": count = 0 - if self.options.interatomic_distance: + if self.options.covalent_radii: + # This program yields the covalent radius of an atom in bohr. + c_r = CovalentRadii() self.bond_indices = np.array([]) indices = [] transdisp_inter = TransfDisp( @@ -213,13 +219,21 @@ def zmat_process(self,zmat_output): inter_atomic_len = np.zeros( (len(self.cartesians_init), len(self.cartesians_init)) ) + N = len(self.cartesians_init) + adj_mat = np.zeros((N,N)) for i in range(len(self.cartesians_init)): for j in range(i): inter_atomic_len[j, i] = transdisp_inter.calc_bond( self.cartesians_init[i], self.cartesians_init[j] ) - if inter_atomic_len[j, i] < self.options.bond_tol: + if inter_atomic_len[ + j, i + ] < self.options.bond_threshold * ( + c_r.get(self.atom_list[i]) + c_r.get(self.atom_list[j]) + ): count += 1 + adj_mat[i,j] = 1 + adj_mat[j,i] = 1 self.bond_indices = np.append( self.bond_indices, np.array([str(j + 1), str(i + 1)]) ) @@ -227,10 +241,19 @@ def zmat_process(self,zmat_output): self.bond_indices = np.reshape(self.bond_indices, (-1, 2)) print("Interatomic Distance Matrix:") print(inter_atomic_len) - print("Bond tolerance:") - print(self.options.bond_tol) + print("Adjacency Matrix:") + print(adj_mat) + for i in range(len(adj_mat)): + print("Degree of vertex " + str(i)) + print(np.sum(adj_mat[i])) + adj_mat2 = np.dot(adj_mat,adj_mat) + for i in range(len(adj_mat2)): + adj_mat2[i,i] = 0 + print("Covalent Radius Scale Factor:") + print(self.options.bond_threshold) print("Resulting bond indices:") print(self.bond_indices) + # raise RuntimeError else: for i in range(len(zmat_output)): if re.search(self.bond_regex, zmat_output[i]): @@ -239,7 +262,7 @@ def zmat_process(self,zmat_output): self.bond_indices.append(List) self.bond_variables.append("R" + str(count)) self.bond_indices = np.array(self.bond_indices) - + # Form all possible angles from bonds self.angle_indices = np.array([]) count = 0 @@ -259,24 +282,144 @@ def zmat_process(self,zmat_output): # Form all possible torsions from angles self.torsion_indices = np.array([]) - count = 0 + self.oop_indices = np.array([]) + tor_count = 0 + oop_count = 0 for i in range(len(self.angle_indices)): - for j in range(len(self.angle_indices) - i - 1): + for j in range(len(self.bond_indices)): a = np.setdiff1d( - self.angle_indices[i], self.angle_indices[i + j + 1] + self.angle_indices[i], self.bond_indices[j] ) b = np.intersect1d( - self.angle_indices[i], self.angle_indices[i + j + 1] + self.angle_indices[i], self.bond_indices[j] ) c = np.setdiff1d( - self.angle_indices[i + j + 1], self.angle_indices[i] + self.bond_indices[j], self.angle_indices[i] ) - if len(a) and len(b) == 2 and len(c): - d = np.array([a[0], b[0], b[1], c[0]]) - self.torsion_indices = np.append(self.torsion_indices, d) - count += 1 - self.torsion_variables.append("D" + str(count)) + if len(c) == 1: + d = np.where(self.bond_indices[j]==c)[0][0] + f = 1 - d + g = self.bond_indices[j][f] + h = np.where(self.angle_indices[i]==g)[0][0] + if h == 1: + # This is an out of plane bend + oop = np.array([self.bond_indices[j][d],self.bond_indices[j][f],a[0],a[1]]) + self.oop_indices = np.append(self.oop_indices, oop, axis=0) + else: + # This is a torsion + if h: + tor = np.append(self.angle_indices[i].copy(),self.bond_indices[j][d]) + else: + tor = np.append(self.bond_indices[j][d],self.angle_indices[i].copy()) + self.torsion_indices = np.append(self.torsion_indices, tor, axis=0) + self.torsion_indices = self.torsion_indices.reshape((-1, 4)) + + # Eliminate all redundancies + self.torsion_indices = np.unique(self.torsion_indices,axis=0) + + del_list = np.array([]) + for i in range(len(self.torsion_indices)): + for j in range(len(self.torsion_indices) - i - 1): + a = np.array([self.torsion_indices[i],np.flip(self.torsion_indices[i+j+1])]) + a = np.unique(a,axis=0) + if len(a) == 1: + del_list = np.append(del_list,[i+j+1]) + + del_list = del_list.astype(int) + self.torsion_indices = np.delete(self.torsion_indices,del_list,axis=0) + self.oop_indices = self.oop_indices.reshape((-1, 4)) + + for i in range(len(self.torsion_indices)): + self.torsion_variables.append("D" + str(i+1)) + for i in range(len(self.oop_indices)): + self.oop_variables.append("O" + str(i+1)) + + if self.options.topo_analysis: + X_len_walks_dict = {} + X_len_walks_dict["2_length_walks"] = self.bond_indices.copy() + X_len_walks_dict["3_length_walks"] = self.angle_indices.copy() + X_len_walks_dict["4_length_walks"] = self.torsion_indices.copy() + + count = 4 + + # self.options.topo_max_it = 4 + + prev_walks = self.torsion_indices.copy() + + while True: + new_walks = np.array([]) + for i in range(len(prev_walks)): + for j in range(len(self.bond_indices)): + a = np.where(prev_walks[i]==self.bond_indices[j][0])[0] + b = np.where(prev_walks[i]==self.bond_indices[j][1])[0] + if len(a) and not len(b): + if not a[0]: + new_walk = np.append(self.bond_indices[j][1],prev_walks[i].copy()) + new_walks = np.append(new_walks,new_walk) + elif a[0]==count-1: + new_walk = np.append(prev_walks[i].copy(),self.bond_indices[j][1]) + new_walks = np.append(new_walks,new_walk) + if len(b) and not len(a): + if not b[0]: + new_walk = np.append(self.bond_indices[j][0],prev_walks[i].copy()) + new_walks = np.append(new_walks,new_walk) + elif b[0]==count-1: + new_walk = np.append(prev_walks[i].copy(),self.bond_indices[j][0]) + new_walks = np.append(new_walks,new_walk) + + count += 1 + # print(count) + new_walks = new_walks.reshape((-1,count)) + new_walks = np.unique(new_walks,axis=0) + + del_list = np.array([]) + for i in range(len(new_walks)): + for j in range(len(new_walks) - i - 1): + a = np.array([new_walks[i],np.flip(new_walks[i+j+1])]) + a = np.unique(a,axis=0) + if len(a) == 1: + del_list = np.append(del_list,[i+j+1]) + + del_list = del_list.astype(int) + new_walks = np.delete(new_walks,del_list,axis=0) + prev_walks = new_walks + if count > self.options.topo_max_it or not len(new_walks): + print("Walk generator has terminated at walk lengths of " + str(count)) + break + X_len_walks_dict[str(count) + "_length_walks"] = new_walks + print(str(count) + "_length_walks") + print(len(new_walks)) + print(new_walks) + + + dict_len = len(X_len_walks_dict) - 1 + + cycles_dict = {} + for i in range(dict_len): + print(str(i+3)) + cycles_dict[str(i+3)] = np.array([]) + for j in range(len(X_len_walks_dict[str(i+3) + "_length_walks"])): + a = np.array([X_len_walks_dict[str(i+3) + "_length_walks"][j][0],X_len_walks_dict[str(i+3) + "_length_walks"][j][-1]]) + for k in range(len(self.bond_indices)): + b = np.intersect1d(a,self.bond_indices[k]) + if len(b) == 2: + cycle = X_len_walks_dict[str(i+3) + "_length_walks"][j].copy() + cycles_dict[str(i+3)] = np.append(cycles_dict[str(i+3)],cycle) + cycles_dict[str(i+3)] = cycles_dict[str(i+3)].reshape((-1,i+3)) + del_array = np.array([]) + if len(cycles_dict[str(i+3)]): + for j in range(len(cycles_dict[str(i+3)])): + for k in range(len(cycles_dict[str(i+3)]) - j - 1): + a = np.intersect1d(cycles_dict[str(i+3)][j],cycles_dict[str(i+3)][k + j + 1]) + if len(a) == len(cycles_dict[str(i+3)][0]): + del_array = np.append(del_array,[k + j + 1]) + del_array = del_array.astype(int) + del_array = np.unique(del_array) + cycles_dict[str(i+3)] = np.delete(cycles_dict[str(i+3)],del_array,axis=0) + print(cycles_dict[str(i+3)]) + + # raise RuntimeError elif self.options.coords.upper() == "CUSTOM": # This option will allow the user to specify a custom array of @@ -473,7 +616,7 @@ def zmat_calc(self): >= 270.0 ): self.variable_dictionary_final[self.torsion_variables[i]] -= 360.0 - + def zmat_compile(self): # The masses are assigned to the respective atom from the masses.py file self.masses = [masses.get_mass(label) for label in self.atom_list] @@ -508,7 +651,7 @@ def zmat_compile(self): self.index_dictionary["Lx" + str(i + 1)] = self.linx_indices[i] for i in range(len(self.liny_indices)): self.index_dictionary["Ly" + str(i + 1)] = self.liny_indices[i] - + def zmat_print(self): # Print off the internal coordinate and its value in Bohr/Degree print("Initial Geometric Internal Coordinate Values:")

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 Qf)?oRH;YC2ExyVB0|vObssI20 literal 0 HcmV?d00001 diff --git a/__pycache__/cma.cpython-39.pyc b/__pycache__/cma.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf188fadb921aeebbf0d639fdc7855ec346f6a89 GIT binary patch literal 10214 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 literal 0 HcmV?d00001 diff --git a/__pycache__/f_convert.cpython-38.pyc b/__pycache__/f_convert.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..171ba2e15dcfd2afcef2c8d05a55dabea99fbb11 GIT binary patch literal 2386 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 MAt_$Q>J;>U0bEo_)Bpeg literal 0 HcmV?d00001 diff --git a/__pycache__/f_read.cpython-35.pyc b/__pycache__/f_read.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6b2d5c5004a7596eb85a8399bc638c66e546e74 GIT binary patch literal 1179 zcmYjQOOF&c5H9y?9@`5jfRYQsx6p!}Ie<_Oh=+(0MM5jFAO($9vb^2yot|}f4{i@I zqvf>R`5igulHcNMPWum{2nnj(J7}$Txm@r1%KhW+?)caLz8w7%0Q?J=R)qXh+}#0^ z0zU>CV8*t50JFgJ0q79w2xbv5vJ1(sj$xJn`@M*uh~X28V^9M)3t={-P_MG&9OJ@% z##~r6@9;=;)kuAulX$zZsJ@5^GHRQi5;K^EP#_ahbjw&r%Od?ZpA z(iHsuUf$|e?LE=ZVz{!>YQq00PWbz|wCIAQ55pU2h>C(iQ;4d&^JpTV>I&W(=eYeuNY^Jr+4<9^yaDTd# z`H4JM-4ub!TT>uZbz9)Q#8|SJEZ1%*MAcMQh$~cdgap`#ZLaq7m~6EH69`tQL83Fr5ltLz6Pz$ zkZuV=ici4>&C(5w>gIB(=!IJZ_^q)n)T(ib?Cculaj9Erv(SvlHKHlGpv*n|J=q~e zXjaV+$aEKNAc_Y2SwgtekcDt#A#f-woVswS5N}sfUuXtG6m2eq zp`B0l8opDgXcg literal 0 HcmV?d00001 diff --git a/__pycache__/f_read.cpython-38.pyc b/__pycache__/f_read.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe8036c53e5aa8cf15913642ac62056aa3792514 GIT binary patch literal 1118 zcmYjQ&2H2%5VoCcHr;LuDiS9SzCi@tJy0qR6+Z%jkWeN51X@*CZtQdePO^2pz*ftt z+2Jy`7) zC`A-CWJJTxMhtdlqADK66l0MgRcDk?@|dVtb-obQ(cQynlq&jyWXUh6K(;gLqq6=0 zTVl#un!Oy|=LN2@Xvx9Qp&hiMqew9oeIcWGQGC=<36$;n%a-Rx zwk@yZjPGhbZMEXA;TDp3S@WW?x#oFOw@%g$Jm9FLD;o&ers8g_LnRC=X%)Y@o;PM% zg)bq|LAjzddcdEk_x$5nI`{MsAPeT}Sv~PxtJ|@hXnd>= zsN1*BM@H8^k*%A7zf+h-x-7B?$;ZgQXGI=}U8rRYM0Q%QfzhHObd|2Li!`P&xqK2c z_V1u~${3_=X9@C(LlnaIgaFc~Fje9ELhMhaIgNCMP)#m`?L$R-1r<*7oWjl)hth@B zBGQz`Ng4-Vw&XkYw3^K9B}@xE^n+ut_#rL6LyOb$?CE`^=JD#Bjg7zPD%`m2Qb=A zP>LvO$cToSjTp?#L{&VBDaIm0s?I2(U<`uqq~b}lq&j?WXVs+K(;dKqq6=0 zQ)0?mnw=coCk3vtEXl#pp&XQ=qew9oeI}!LnS9hy38d}%`MA}lupP+zl~`o`_ub*Rsr2x})a0@rR@&UTedqSA;Y8-|>-zE>(2F zzMS8ub7=FB?6cSKlw$Z65heBdP10VyL1_5ifOgSA45vDCcE|vb#B~o+SSM};te!iC z_5#3KP{j(^bI^CI0lFkW7j1cJfBpl>)_mMdbR7WkF*arsxRmb}CD3k+#k=|h00hoG zt0%r|bvu?5jStuXobRpkk~=rfoI|SLcE_!a}?+lPGi zA}Zwfgu=QOY3jmgvCovoNg4-Vw&FYWw3^K9S=<&-=m*DO`HNb7nHKr;?D<2VG~2s6 ccj4@b8lhxpFx^~U^d8dRB919dX`l9^|CPENhyVZp literal 0 HcmV?d00001 diff --git a/__pycache__/force_constant.cpython-35.pyc b/__pycache__/force_constant.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..66b7645d5947fabb9e57ec4c6ccebdf8a87329e3 GIT binary patch literal 2188 zcmZuyOK;>v5U#ez^YkQ>Y<4pt(h{D_0Ln_6eeU+OETT(}}3koc;dNhUzgbh*0RT~+wtdcN8r`i+)G4g3LS zegqQYFK9|M5{9>EYEf*{$R@$>Y%T^crG^WSy?Ct-;5i4eHm>MJEHH z?I=0Nqdtuie|j3Qcrk1+2blSHAaY@HWU-16)TY;h4d0p>!Csxh2AhNfVUxm^;UR2O z*fBgjaN$8$caKsP$ipM!@xYjq&OKgbR*4*2sU*sjPgu3GS64aztD~NhN&w#_GF?PQ4&Uh%ylP}DmwS3 z@?1^_OJY-Np8R zA?2}-$u1c*e}@!MPKZha!d;XFM?HA zR2s-9O)5=%CM_!K^vV&4(pNwJO(pO*8Mnm`i?*y1TU#blO}cEd>Maf%L@l$h$~Ki9 z6YjeW(7m+5rLw!wP#xmr!0v^H6)IP61TQR7kBzTwy2Rf#xq*w~K26%Xs@%u57RL5p z%EeKe6nI<{?yQ*8V4wiTp&n=M)ZjGsRceeEtmX&C5c`2C00dS&y6hPg_yL%4`EqS> zvIih49c#3o92>F0jIW??;N~4o>Z9_Q6Z~gI8{1fVbxL|vbh#W6E>Wz|&!$H_8#pJX zx~@4NuDPt{pM4XZo=LTX!~cnRezuq1Kml-V{fr=3l+_f-BqPInTnD^yWh`} zB8uhLN~LPBu3UJ0XHyGbw=-1eO})0`JKmO_(hk(gS6W0`Omt0pS!Af;W5dUlJY#tr zYbzLQE1H^etq9kcw$&_o6HNXINL6t?(Z8*`u6QWkGCx-gg)8b}&t4ZBVpFV&5A3#> zuidXoXuB;)4g^nAkTozj{mED#i0a1NJ(k?*j3bp7o{7~Lc$IS?NzAwIn_1cwa6{t3 zp|UZJxyN8op2!{cTt1y$@CDZ6@z9d6&t1Or9{gy@UFgm-nGon~)u2=Ij`W-T#2Rl)@+Y zB%nbjek?stw>=MCd^Tm?^}Lree_Fj!tI(uAWbzRc#>v=OvVDgl+vT9;jE>t|ZMi#c z&8;bx!=97O;_N~_z)HJ@->p91igQBQEVsV>QrFYx6B!id*#Ftl&Hc*T&p8=$w&;qU H=-K}OE7`qG literal 0 HcmV?d00001 diff --git a/__pycache__/force_constant.cpython-38.pyc b/__pycache__/force_constant.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d09ebc1342d5e1a5eab875e8f77d8f77139fe65 GIT binary patch literal 2048 zcmZuy-EQ1O6rLIX?yfi4hR`N}#EQSNq9jN}6+#sh3V{oh3o33_LdNxYQ*UjrJN8B- zvM->0fIdQd*_YrcxSCt8`UFS_3BEJVHXFgL=JS~|Kj+MM&YAsTIP5dDU;h02-sXU@ zKWMPtYz%IrR|f#eB+uBC<0~?eTT_dZ&dOMBPaV#_VbYe)V`vN=J z(S&O&El%)pv$Tk^@Usv|! z0AEiAFt(wGhYJ-acNRreM@6kT&We4&s*xO-b zG#=2E>@IuGk0ze>7G<5ngtlc`mD(%ANU7*ld-=KGs$>=>h4#`yrg2i~flO3-5@yLs zl1+SVS4lQg9?UCpNc9LP63Qh&B$x^S&zai5=dauQ_ZNAxf3nQtsMybw?B>DEgOB&i zD1HzfC)IwuDB^{ZxN*La7|)1=5L&~+UU{nhFieZI4#TTBucAX4ch`PrS1%E_w^|+( zgR8a$f!s3Wm6&PRoVB2C&RbA77jsMUUDjH){nP=C)=WGjVnO2Ed%~*&TGN8qx!;2J zd9QUF{uTT2x7KTrExQaTb`hV}Z+i%U-}p0(A@!ObNto%k1B7ff@(5$r7Ayy8W4Xhnt^|0Ao+u@(@ z!1=TTw+$Lgif5u7H6ywK5Vx6$_KI0Kf`)8dxy6c4AmNq|#1pQ5f=s;mJE$Uj`JB_f zZT33Whi(znLuo(aoYfn@qUw;~&XGy!7ZjBjl*ebEew!ZOPt+LU2d<^rI9}xCvW`rq zjw6*6*X!|VQje=;SuRwa$jN4xX)p6oJJtQDOtdIU?VKfQQE72_$7JF~ifT`$(Q!D7 z^+;t^r=&jPV_Q_UdI1&od&X zM{U*UZ6hYk#*ZN2!4>e#Lgw?v+h*h;#tyoBjdVWwOO=3^pa=Rs#HP;Oen;PRQoK#@ z4#B$w?-9ID@bU_3pN5yYRy)vrgITus1XiS9}wIiAhwLTH5V?pB=Z!wiumzI{hmMeZQoX;hdrlQ=H;o{#z+T7 q-s}E673GGqNH4zoLc5E5^CYg#w*RxE{ac;4pHW&?WYI@12iCvr#=qN8gN9Ct+?U^$33Fz;bjJAlS+Sil+%5P++_uv4BYF9?!6se|Aq?yKlh#+{Yl+0AQ?+gXZ7b8;-4ICo$0YL8@EICk!}aQnR1 zIt~Ap{rFq!HprH31~j%2pVn)82!PjkGps@NnjTTu>9+%fY`J5v?D*|apV5+9W_f0< zUB`*u6GQ&qu$TR&-}nfuG3Sl9&Cbalr@L{VJw4QtraXk?pjm_L0Mf%|edUCAc>?#- z3B1;COktcG?Wh^i3xIgd%xG_D$q_iDTlX%e2>dsO;)-SjNi8OJ$$MvZ$1Ccu!~IRf;NCB;j!|i`1Z) z&4T5^uVu18j&=ENmomv~Db&|#3Nm}kwRw#6Fb7OF<@H;_rFG#ib} zIFeMpojs1WN5RSE6p%^sj_yawm_?n5+E{X*yajmuGRC*~*_+obyv%`!+SqbXHzQBz zgP(ywi#1@GiCpK6yUEBxtZhu^7V$i?mvSGq--G);#i7pJe&@d1#CV_J1A-3;J|g&- z;Pn&aE-kP7T5f@NAG0Ex7{Bu$FR$b>{;YJBp;4o4=3y2Gf$9eVdg~%3+7E)Ki!kkW z-^?Tmfvph=@ANuTkk(H-%6D#FwdZ+ull$0CN jB);*(H_9m<&Eu%n$No=`^7cDxzoN9PNTY{b_RW6*$i=_v literal 0 HcmV?d00001 diff --git a/__pycache__/g_matrix.cpython-35.pyc b/__pycache__/g_matrix.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00e51c7470652102be46077311ab3e98f7f3874b GIT binary patch literal 1270 zcmYjROK%%D5FYMJ4@p^;VCj$`htzG;CWu=gaSjd8LO?*Qc4=v4?ouYX zs%E&=ZLw+CUA%8X;_J6qlbaoa3`~|m0g!&Vl z<~fQ2KL!$D%Df(c44?{O8UiCp zEbBEci7e|(&T}$vM}W!`oMwzdY$>M!K_Fj&N=WEaq}ehdZ;>ED$90ZhW>%LMSAXlwZlxmDV@j#?3;8AUEKLZ0dv zp>#r`gW?0|9xnero-9-)ChJD#Sv{$QeDv_q!v~X9mY-#FVI~-6u5^*rwo(P|=e*6- zcy;NzoR@WJIUgdDA!uMd{JYxQ6k)tQkTY`Pphr-EKDa+o!N`{QF?freg)#sez|zOJ zj9?kV4H`qZcm*~A+o90Wg5R?@U%}hR-^X)ZxQ^fed*dtsol}QUjv_cZe@tD{ZVo>G z-}p1p^vHo-dJ_-_S^66S++y07JG3Q<`d~v$wHSH^eD~1by5pZQqyt!^Gk_ysnB-*s z$=`>+y?=N9wPU|%%E25bj(@)W7~(S8^#yV4dl%Fz7iU^$m%dQbq{5yR#>Ln_bKycM zYS+uGs<GMl@wP}Z^6jvc!&o0(CpyNIsupm3p8(y_*|(iglHeecmt zeHRt8j{?{rOxUOFfbFwku+Q$Y-QY`hwX>}xo;?{QRPs8j1m~{LId()NNgr^2-ehv) z>2O}CoO8W{u=)!U)M~c`(Q9f0>KWfSgE$EWvA2!7F0Pwub*XpJ>jqvQxBnNbBUTQvEBW(TkxLEhuA%8-}nvXz9nLNY%lx|J5wN| literal 0 HcmV?d00001 diff --git a/__pycache__/g_matrix.cpython-38.pyc b/__pycache__/g_matrix.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..97ce786e0876f0cd32d7c5cb06ebc3f63816c0c1 GIT binary patch literal 1184 zcmYjQ&1>976rZP&wCnY*orDqyB_Id{_Tb$^Ob*3O(35 zwy}{9#rYpXda{o__5Yb`PU)%Vp87^wgP(Z6dGqyq^FH+JXfz-wKR#5_M~iBW zLoACblk?m!-Cnv-b&PQH-EL)(Ijt#T_`?j$$qhkS*Tia zPm`<4SY79~W1AQ2j_O#755=sIg*|K8bXJ*TrIEi-RkAL!mdZPQy>Z%+=RT=7;%y)K z3siF-p@D`l(gcXmP{e=}j2Di^)P?6r?zRkDi`*)0Tu-gMGcyidXoNi05i;o5Ll5CE zqPKAP@4M+jm14TCWu8^jQpl(KPxqfpS6P0N&4rm_gt^i@t8A$_&gZO4(qwh!`ivD- zVHq1ClkwC9V*JkUZ1O+3Igo?j+=zdO*EX&{(P+q$Ea3t;Tm&|_!pN54GP;HfYGd1L z=p|gjOY(kl5w<)1CVYTxb`t29oMIlr19JM9hu(TXz9ly+$h6f^9$g2>6I=}%>KPlj z+HNQ+EQi-{?K3(;7P1`SnH@jkT5v)Ruzh`t9?kFmv-ij6Pp98I_)YsT=BOzD{_vIJ zFy3u*>fk3AR4W%{T4!f%uG6^0juXa3SpB(hREo-NWmc6;7RI_*ibzR*(1Ms;m@@xdCHX)LMFb$k=I}$<0oWF|KmP^tOM*Ll3@NZh?2NeTVw8x3%v> z826)gZQOTJRhO$Xy^FhU*xHls=hnWZwNIT3UjOJ~HCtlGw%2aax8B+i`v=_{pZVNx J91USe{|Bk{AgTZW literal 0 HcmV?d00001 diff --git a/__pycache__/g_matrix.cpython-39.pyc b/__pycache__/g_matrix.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a3d7a029cb66a290416dcdcc0de37b9341a207f4 GIT binary patch literal 1184 zcmYjQ&2QT_6z3Bq*>UW&D~bU{fkD840Y1b&Ea+j#wyrIf7HD%>4}*b$phd=(Lx~Pa zc}<`khV*|Jwo`KKss9hJJ$0v@ciN-m0C~du@$u{T_&&r(qX9vA`StVpDJA4nnB0{Z zCr?rB0fHa`6qx~zk%~$>qY&1pB4s>FfE*DKi{w2KiA=BPtS8_XGEP6^O>#U2Pm5}U zL#m33t3@7`?@EM|r>HhVkgc0pBw$8GBf;L}_dAwtWbU-FzNgp0nH|SIwo;v#1Q|>kpoj2* zm>nGc`)<0_rJQbRmGf#^O7-O6$-%eNHP27^LfR=tm}?_=oBzq}fgHl-R>DJqwsHN9MnhI)1(zV;GIG&1Mz)Gq$qigmm%3g< zuiy$^kl!Ykal6xR;z!tKr;&LfDCQwPBxm1 z-G-vVYIp-TA)_N?A*&Id*$X4CMW^Ht+c&i6@#2er_W$_n&$I76{AxlN3sjVUfBZ~w z7~gAi>fxD>s@ce-S%u+FDOt|iti76o5;Dzx+P z*29sfd~U~y=_9+@L-5pT<)QXav^DD>{G6Vex_W>{+a3h^G=@F6kKZ7A07JxwaIt$^ z3_N>0PD9lyUP{LNfH5p;t%5yd?5yT$yVGM#=$tXL8y@jhfY2>>Ah$& z`$@Yt?)#*w%k{arhr52*+LP|*Hld|WNS%*f|Kw9WUt!0#*Y41_-r5lRhus^02)W-n I8p4qN50RN6Hvj+t literal 0 HcmV?d00001 diff --git a/__pycache__/gf_method.cpython-35.pyc b/__pycache__/gf_method.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f0b8f882143bfbdfa2bc30b7dc652f1e232c5de6 GIT binary patch literal 2253 zcmb6a%WfP+uzFtm&L&Qblh`DKxv+?M6JkY*iAb#Y0g~-N>?G0(XvQsilZ-7{;) zo2)n_AHW3(K7k8&_ymq{>k|qmixWo>QmE?LO-z&vz1ubQestH=Ox0>-_UpIqS2cj& z;n*?|zlA%!kHEt}gAky_6s|$2L8L=V2SzfTWRU?aGp7v*Er<%xDgaycOz)`0*k~}R2k|~WtT2e3u!GoCTR3hOBuMhe$wcsw_mTr&xMVS2IwH4l zr&kd8dLyG?Ihmd>#~h&YbQu;H+0g}M#QoA zeUUm@5c+nc)a)#=-6ZPuGv8iavD?Dm>-(`A_~~3ZcW`Iv&Vv1MocbcO)69uIM|gHW zc9C|1I73Z4Y1>ZJ=YAMb98|GCTD-e;cX^pVSiHZyac^CD+Hi|l6fJsErMGdX_Ygd0 z@ECw2qA3JPT_H#s3PI9T2v%KC2$r0SEO?B6G)I0eD$>!^%T zjtm5y_1S9eo1e>zNB=y3{=9SP_RJs8uARTx`3}78U;bLW*(gc2D%pzEvm}(oo=Cc! zFk^t1)+#Tq-{Z?`>x-M4vi?euXyJQOcO$1!lt$`@ZBfF2f@B_7h9HqS3`u6HPl zoCk4`aee|_rQ{D->6PE$)VMR|#@a3;OEK=hDhd3 zH!&_FkDiw?PU%<~r&U@w9njqw^vfvYNqBew*&C2eDd{A|!~fFfU&7Elmf9pW{W+9i zr|%jdeq?kqdHFA7bWDo4v3H>4XGcy)ww3=VJjki;Impga%sd^0201}j({Np*1V4Fg zg4b1oGo#7VeUlQz_i+k6O?gG!B_QTFCCZ&-Z11f0AVV{C8;r0DDSFjW>57#L$@l_v zFDfs!kuR?X-U;jib$%qaNx<#=MXzskR3F1{HwE>yG`;Mw=Z}~GgUWcW9olaX%ts4X zz2Oll4zvY(P<*s-9E-xT--`BC$yJiUvv)br69!t zzul*CZ@;s(ywqrwh3{s(Cvar0G~N<4iqv>$>8t#X)Z(7hy(Ck^qNT48Yi&^)e$d&G zCPKb1^)-%4&UUJXiDYZi5Wa&m3Ry{r16<&n3zBU~wu$p+Ph_${qdoK=N`nqSn!<@Y zzSKiMmPQac9cei!os=}&VS?Wznjg|sNlL4o2>MRZsFJ$q$E_O9H@=NAcfI5wZdl?J z6>)*U41$)qhGS@7%#r~M)LhHKX;Qg_;2iFB0Rd=}`n&7`n`P5%l1;D)tyG_8b;L{B ztTwI9uo-4+v(}_GftYU08)bHymDxo$sJ@tEm{Y@|;TJoR&$%pfj>EAZ5?XbQ~Ekq*-858{{pE#?JfWS literal 0 HcmV?d00001 diff --git a/__pycache__/gf_method.cpython-38.pyc b/__pycache__/gf_method.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8be7028961787671d00884ab3c76462e5c634653 GIT binary patch literal 1999 zcmb7FOK%)S5bmDWj%OcEOdLBeGK33@kT;Mh5+)*9;YUDzNU;Ob2xyI`XV}|pAwMAq2vxl{n81Zz_19I^)zvlKUEe;a*Bt_l{`gJs zRh^KZQ90cVQ0_v{5jf#ACLV=Ri?u}ebc!}TCW+yhN;YCEsdyDimI*hx^@MOMv=4M| zg3}GstUQM(WUWc19;JIQSaFp4aTlbSj_`vb%0Oj_Ux?@t>t_!`5#Wl`O$X&J^!yq? zsIu`iPCcDhxXz6y)HB9AdnVUlPg~l{ORHhAo$=u_$Az}J9p!Ei`+4qy;JbUF$o(RU zLpM=wZjre`mh=Zj=q@k09TDyh!Ze7&e9jpMSYKG5cRx<^P!w)n_$l`VcL!+zx*w$l zc)D4~^^*Y$;{^8s7x!NK{^tF~MfO?y)5Wz1t18l3V8d6OG?X>yA3@LO0ZLjDMoJBk zmO7wT8i0Cf0va4=;UfX9(gLiM6+oL4_-uWx`z_&HKfGw)>8@U@)xZAUX*VY%U6yo7 z>O~eyyDzdHL&+GziF;0a^#NO4S#57@$jMidg%u%}dXV^Vo<<(V9brL!qJn^FiwOjL zOQMDVZ;5eXd zR_KQYcCdloGmj88L}nG0LmM>fh<=Xx1at>ayyw7*Dvn2R3%%M7xlK;RaMbELSQ;=} zM<0gT$sNJdE+V2k+Qn*)vl_7$+hnI4g7RR z;EMpFF?q4y50A}+467&gz3;v`G#}63;G^g0I@IRfq5XLN-RpDjbwMIPK{Ho zl5R@60TsL}3Ryvti^E6Kz$1{R@Y8N6^*BtW5hZ?CT7HgaCCyHp0VP*4fT?nnRwolk z(^%|M7lYKR14FPa*mH+x57VY4uwca{gbM(kxdMf}C$8cG8YyNN!x?mW8vxz%djLdh z=$Gj^I!mW$gVtzGvnHpg1G1&fYE#-2Jx^z~i&jHB10EXuYA-cS`$N+kziTgT+Xhb? ze1^5ZcmXnO(zT|Ae3JS}$e45(1HKu=DAyR<9r*F_OocI?1&oQakc&#~RJurMLgj3N zgtU?)zu45UoT@-u(~)L6Nc#KY9B8tp5c#Z literal 0 HcmV?d00001 diff --git a/__pycache__/gf_method.cpython-39.pyc b/__pycache__/gf_method.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c1fee309343faae140800e2d4a4c86477d96a78 GIT binary patch literal 1999 zcmb7FOK%)S5bmDWj%OcEOdLBeGK33@kT;Mh5+)*9;YUDzNU;Ob2xyI`XV}|pAwMAq2vxl{n81Zz_19I^)zvlKUElikx?t(Pa5q?la8K^Ar3lTkH{p?{V0$g#r>7d+&o?in9 zRW_c+si*S_*SYb8dd7HX&*U2HX-j)~X*DdiGd_IgxX?DYqudQ*KhIqde0MJtxnD$a z=qAd|EiyOAlK!9w-Q^{>Bf{N5mkI4i?#F2!io(qcKjpsQ?jQ|7_oK7` zPdDqhellQToZvp-;@)fD-@L!L$UbX-y14dWRYh70Z1{?khO!3zBk1`&KuJr&NT~tR zQU}yZ15htbK!f8fd?cV%T7Z?Z0%&srpRKQTza@O@hZpTT-PLQg`q$q(?dF7}%aSfh zy~tu|_eIuYC>cXIanEV5K46P0tL=>qIr&Pmup;DA4-y~F)5ycPBP_^IR1h$2F@b<@ zNz@SFEs^htn1tci4_ez<61MgRap0$|B#dv}ymj+NtM3OpemBfpL6!!Y;C@;p83(=F zVdIOK>+egOu_%oS#u^YRp8_D%dgV7fdve2bC*A=?&*O%vVy5a`e}S2Tl%z*FJ;1Zm z3jNT)4mQwx<`JTX$gHArXoF@Q(a%wzfbQUl_Z(PJ#qkJkp;y}>x5=p(j#^y@O9N)> z=)+K(9BU(bJOisonz~<%H~F_e*eUFNrlcV0U^hzII}4gNGSnNGQdwY3%tGyOl11+| zuuK%^xc(G#o-WQ8GhmrMpa*n;eDTT1Jlh{-SG@chZl;A>ieckV&DwvU3wp$@xS)H4*Ool(mcFUn!GXtv1SOjp-+HC#l-kC z9YOv|Q&w2(sEdwuS`&S>~f>wmOiwbgn& z|K-i=`KZ+zUfs+JKXw<>P;~d*g(wGh+ZrI(xo>SQE;N@QD@TMu!TJK&qxptF)>Q@O z>C0?gYH45UJS$YWdHNEXR@%}Cqwcn60Re`pqBh7S>^!LRyXtJi{x$!@px&?v%VPZy2=0VioKbgdPmsYmbgU6sk X{nx(IzCF(SLwu$=vagMYL~Ht=k=W`S literal 0 HcmV?d00001 diff --git a/__pycache__/int2cart.cpython-35.pyc b/__pycache__/int2cart.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..246fcceee5240a2b22bb402c00c062bf20e94bdf GIT binary patch literal 3929 zcmd5hhF4{dc<;UWNd>BVq2C1Mo>T_29bycOb0Q>Hpau5(Q2sK z*=5gAA(>?mfJTyQ&OYT5Aou*20DbjIm;3;q@>TcjgA^?!x9n~=yQ`|Jzph7DbEVUn z`_&)*9RKAC(YG}7aWH;_R{j!Qf}fzAC=hyV@wjhMV3SB}N*u}^>bn%UBtA-9N*eSv zmNY1B(3wp^lb7%M%@@!`JHAkjJS(ES_d;OK(|%NzX&Ezn{IM{2gjRlrE*)&!AT20wyQqG;70D{Lu@QgxFYmsE zR^CT95;P(TF|hOi0LB==+PCP#Gb5n^u_(|Gv^zU7pO8PS&_UZpEAOD|K^@VT*XdMH zMYInMf}rQG79BKb_aEe2k{1MCFRem0kZ&n#{U^%JqrEhj4e)gL-Oo0j4*KcF^TRxj zij97n-+S-gd+%-xqxf0WOUsRTP{ae7L`BsfB$#J7aEt@550Af_+sw1FiUz-bPUbDWBH5pd1mke zD7pkLW5rP?*lW0m!`2vX%fQ8a7VaEN%)qS!mf>Ecv%y_MpKLX%$Z~ylQrv1sxeTX|%v5`~r4bq|=F!%q~mXPWsx! zg=n^Bzul_GSjfcN^o(dz*F0|rmCbx47eD1hM_KuT3yb8+YPf%V^5_N6{5#4jhRThk zjE<5d6GhJy7GvywIa!@HdLFYueXPtg`6Sv?vEsIce5=s_ba5lnZ?3Wx2=*g;Z|!G_9hb z2@I?vaM%D!WPyA181+ylLGKYvQh0wBEPgvRB2O3H2RuRV<2C z{p~`2cJ?N(!1p%3cZ4t2tu=8|T!*GL^sC~eJ*nH+eDcQPa?SqVLMt zNxY9FCY=(dULh4xxa}FbDM?6HT|_uLObtQBa5$0<2;Q?O%xOhZ)?xEQQtB8 zV!?Zv?;G7=%!tNxJ!a-uh6%n?2SApjMU_>@3MRnSQf38g#u+Mqj4o*D+X64}>Y{mW zg8da*X*|l_yeh7-krpN%)rt{=E!vItM{Td|wmr@9J>?dM{o%1m5)NniLv*T6 e@Wx?16DAu` zdws4ONt_1B;2B4sx}zY^qdX+>{3Fo0jh63#L`Iz_B$wg|^DI(_ zw_Pdn9NCmE`VHBVZM>UuNp|pdWf!V@+TBfyU)~8+5n5Pm_Ru$Jxr3I!3sUlu`K%P6 zywX(iq4=1c5Fa{0ZOO2ry%!St*+YvsX!p?ab&vro+5O&x7wn9ee9HeR4(xmEDeDVG zp7h*7RQP0fUud!Q3+*Jqew3&NWQP3b!|eyzDB6B>n1n&PJ&KZ>H*Vf|e|sE+4}(FJ zZ--eLW=aNWG0G(RG3*Or-`4m@w|9~_FT!jzzSSZ?q_F`*kAF7v!j|vHXn;^WMDPGMm^7HrwQh@3qfTr^QNb^Xdsd;UBY8asQKvV|?jgo)}or-k8(*S_ysM z+0L+YL?C7C-7O*_^gT1>k{7+w`|Vll&*<{*kKDi ztRij0tJkZ?E%25YxHJ;87m)x5kXM)tl2+L=NLmI->l{hDY@H*ia)OY|^T&ER+3qsy%g79|45#l@`F!+W`pv^;C>z2x^=FJD%0*? znK(x7IIyVfe!wiY!%nS(f4w{toHrKM>LD_lWpB#=Bqo<8m93;}nf8Z|vw%j!;;Zzg zS}?r!5UZOC?d}bz&d{UkgT@XX$N4j=)ru;ACI9y8+s~-i|EU(~SUZ7I!I5^Tmgc$< zjK@(btD;8b&Fk%Fsq|3~<6u9Da&0A1s=AP93nkd=2I(M)P+U`H7T2!5@^6VT} z>)rX{ZdISVyJ@6~IQT=9=9$uV6b~L~E7;Ffk8EC1mk1$O+9@7HMc_4oftK)Wa)9Qs z=RE!jCxvGpeF<)p=-mL_W78#yE{=iV&}#ywnd{u~zwqyBzN@WAK>`wm7blxCCxWF8 zQ#vVf1;WIdWpkTfkjokTungbyxXX{%&;78FC<`7TZ_pLOc;p&BU?0aFiIX2n@`UjXPBPRJSjqSL zmNC#+p{@LI)OTKhuinQxo`pNgi&)==;E!lI*}!-QIOn2;#13gw%^uph)C{)Y;e)W5 zI8a?6j6hnS0<)fF&IF5OsLp~;6O1)|^r(6ZSkb6sB~0}&M_K4 zYS*!iWt0|iain1+%0wQg@CxlVMHfx4Wp+NUfW?ar*o64cXn7SZ3KXR*+|WA@mYMwj zb%gpAFu`j4Ibep&zRBvDH;nKmF=|_Xj&HAJs?w`$eGB3TXg_4DnY`C;(Je9!Mv?F9 zw(sNCdx%2o>yGaq90o}xQOj6NZ4sfIS8o#`hbq!E=V`M+s1hm4ZfXXC%iV_isq4Cq x>l#Vl)lPai8Xr{&O{u4@gXnq}HnRO;6c%RetCrX9PKERqok1q2UF38}{10~@=imSU literal 0 HcmV?d00001 diff --git a/__pycache__/int2cart.cpython-39.pyc b/__pycache__/int2cart.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed81adca48c838d05ca9253372e83f71e2cc9b02 GIT binary patch literal 3467 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 V3Jet(Dlk-FsK8Kxp#qZP{{zIB(2xKC literal 0 HcmV?d00001 diff --git a/__pycache__/masses.cpython-38.pyc b/__pycache__/masses.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..deddbb4fe95fd9b83d657f5ae10df7d8fb10d344 GIT binary patch literal 89544 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�VH+eIkM}p8E(Oj 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 literal 0 HcmV?d00001 diff --git a/__pycache__/options.cpython-35.pyc b/__pycache__/options.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c47f4234f2da514e52751288fda3d806f72ee264 GIT binary patch literal 2424 zcmcJRIddB~6vsi4q9|V0Y2EjIk&>mzmSbCTG81Pe6QzhNO=fmh3uw90UIKO%OL1pS z`qZvcrpaeWojwh^B$Xy*x-`yvOFj+q0kWL^5Aee~fCrG^NUc`>VeS{_w=!dYGUF*g z`v_h&4)TgK#&hg8Q^DA~JUhuT-o?IN%R4ZB|8zm?2wpV_0)}V>+J)X=4gpT`jOW3x zpnJZG6E6ytlLK3P&^Zt97x1cIq4hS$&a;%@`mT$;Wz5PEgfInyFx0l}X1qu+Pq2sa z62St&Uc<7RV43klvMds;GJZs`hhWWcFA=OW{(vld3HCAGPq0jI0E^LCQH9_j<3j|i z1cwb+BlytBUMD!h_$awQAUI|u>LWPL_yk$@6P#pxir@gjX#)-toH4Qw5u7#PFu^$^ z`$K~BM$8d{3x?$=!9@d(5nM9d#|bVoUZKfP5L_|bCkd_^mQw`R49jVP>&A*^2yQUG zNr`3&ZW(ZnV1w}{S0>MW{_CpyB85Kr^5tt?ccLrX7hz&an|q$Fa3Q@b%NJL| zzk~1)-yrSyCGJT}3Om*X?y1=QZs_M%zu(**>N0jMrzM;V4MxyTBH!Kmbn>r1_Qwx( zRfIyi*Wl`kH=5~wv)>Ng>x$4qPo?Yk&Gt~)6;aR$UUzY}*{rizr2y6&%jjGW1`!uf zy)^c{(CwJ_1(EM}^0tE&L*++_(xvF^4D#8ou2ai8wL=c+@B6+NK;i4L^ui=cp-{rN zpstV(W)a*BL2zgvJ=)&cZtOJnA8!P)r>mXePQ`F;Sux&k{P_L*+v0QGeVK|>+!SGz zdyPw7m4c^^;MwAJRS5@A37i2TbwLJ->w=2CP}fxII6|pT5eNR$?G!5U+*Z;Kl!pz_ zwIqro%MNY-T6s!WvTk6%vApDN2)DR9g`=fTDxbs2lS1H`yZZo-+=J1zrq0JvEb*R_ zcu~m$N;gUor3a-K1#VL&D=1Zz8cH3d52YVv0A&ybGs|I=5tLDsF%-Od%MJf;pPRnU|BD8tJ%&FWFo)0%gk|ZnWx)(nAKO*Sx=d}qJtCjN#InU2 qa)1nfW$;zFfNC!5A48#v(doHxlB{p|V7(+d>e91zsu!6z5cV$vmNy~* literal 0 HcmV?d00001 diff --git a/__pycache__/options.cpython-38.pyc b/__pycache__/options.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f46c528e93df29d1b7c3373a1cbf176a85b1de0f GIT binary patch literal 2099 zcmcJQNpsvp6vs7-$K%;D-r_xucaN7DZ#Z#CVgpr#DhhKTT&Ae%lGSaEVr}l0Ol)$) zMRDbv3psM(Gw>z2^bI(gPqGJkfx$^%0eL znQR53ilKg@s_`rm)%YFq93ZOmL821Tkm;pNG|WfHRv{WSR3*A=a@L5(_&9mqA(}8* z>O_-#ifn^K(|m?#i0Gc7VWL@+bA;%=p;4kalk+aoyonnlS}?Y8qD4a!L`%kVl4zN) zQ1vOIRpU8L)G)RgqBUc?N3?EwnI+obo0R1~QPa>IQHyVpZJubG?+`5z?V6m6M0XCM3Kyb~v!o-1>O?+wcjqA{aWKKso zXBwPfokYI7`N{O(f9_8n>WT=3bT1*)6)&}=2Yb1jdcYMS!$_rT@0MLt$rVvxlGj}9 zmb#`~#Q^R%meC7697J5e^wQY(Lf5$0gUI(y-EOi%sQf5VH~1RS#pv`DirTKO-LBY) z9dhX59s6DY)33$S3zH~?X$hafaG@r&5?qZy1y~>LY;A8fx10M9)`Qs76=ODI!v<+0 zuh-xF@cO#&ME9MiA{AE!xYfPpxvogTQ%7)`fUYRv;8uZ+Af(RAKyjT{u@~y9N*zZi zWhOcF9-3(-p4&;fiE{81bTx_Mh}og-Un)=OGGSo9WL|QEFKOME!v0e2@@KI9q!76A z8ZDiRqgdh#R_0LfH7om23Ml<311R`8kY$t#N)@GsQb!p?8A2IG!FqBOWejB;Wddaq zWeQ~)Wd`LQ$}Gwp$~?*f$|A}V$}-9d$|_0&WesH=WdmgsrHRr)*+SVy*+JO@X=Gu# z!avo8vu|zbs$VSm5HA07(CS2iXm$TRtw8wud;5F4t=M+XY*(ljJR=7lksT(u^;9eB zexaK2r7kjh7>wZn)i)qkruM)6uIlFF*t{)!3|~y>A+!U*m@Y8}9i~36D~z3|w%@hL xN6;AEY>yn^HT-+vsqhAh8RBCYR3SQfA)JJ`CkE#wF;EvDcS}9R=(liM{{dp1MA`rV literal 0 HcmV?d00001 diff --git a/__pycache__/options.cpython-39.pyc b/__pycache__/options.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d53dac2101e412ab60fbc53a62bde7767fee2c0f GIT binary patch literal 2099 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 b?(vZ0X7ST61iHS2GcDXKO@%nYpV)r@S`C0* literal 0 HcmV?d00001 diff --git a/__pycache__/reap.cpython-38.pyc b/__pycache__/reap.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af3ecbc840397f681406f4a1b63ba4e78aeb0ea1 GIT binary patch literal 5690 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 YmB>k!V&_US-nVHkflKDFDC#l(3)6ss-2eap literal 0 HcmV?d00001 diff --git a/__pycache__/reap.cpython-39.pyc b/__pycache__/reap.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3b77f013f250d654ac7f30c83ce3435a6a9389d3 GIT binary patch literal 5820 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 C<*9@K literal 0 HcmV?d00001 diff --git a/__pycache__/sapelo_template.cpython-38.pyc b/__pycache__/sapelo_template.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c7e843f26b247409fc239b6024ab34aac3582e1d GIT binary patch literal 2149 zcmbVN&2QT_6xWw!RZH7_qU#0>T%7{*23biLq-Ze@%}3FsNYWy92Fw?M7U@KeBq}78 zCZ2a{&-)8{*pB;ucG7jH{Rta(*rQ~(a<T3f?yN7H^+ zOubpaJc2IPU?3XNV{M?r*NBb89GJSAGh;2W1`S<%q7jQUUTLI3?U&}DN%Wr9w*LU6 zcF@)fGfL0lW5-d7s7UxaTuoK!A zbnzVwQ*){X5IHfX7BO!@jIY&=eFF*RQ5Q*8{~ZH?Hkn;>Ze zuaV}d$q$JGe3NJpz_o+P_X&$L&XAX)<%8bdvwjbGUdnPoy_g-BK`7q4NMeuWGRr0M zmCRVy8WC5lpzQPkvSCZe^P;>nG#&S?mn5lyg+SlTuVyRu$bO0;N%BbM`twd(!w zBW$jIR@kYCnG}UR#+>8J;u^Sm9Hcm*00FWvWC$=gP0E|FPxv=e(^{YV!zlH|i94f) zSkb-BjsDgSL^ozbPpRl`u{30y;8ZRI(?U<#5GjcoD8pPv%IoeB%kX3YfKUrPpRc1Y z&T^X5_EiNTONHb(N@aI9l{BvDP8p%1yLv@u#kSBvo(w5RY=la=I!aOZ&1L^xA+aLlt2pQh6FA5_KptsgWl2R{%$|m-aT~b zMaH;9RiSj(=X`(X@bSiWue<8H2_rcae#|g|Qh;;z@2#vp7|tc1Z}fM%%W8b+zhL~- zA4?hIpB|hhDiWts77YStbxo?uy+P+>)b zmFqXFyEc%sySd#cEJ5Q@(S+L<>R1#_xCnwYPfE>v2^9UR@sHv2*M@(>66&Alafnkt zq4E0K`r6lihQm{QOob1%Ji9pHxPiZ7s*_z7P7p+CB!fV?Ek1)m(`^HqZvX8xE#1-` z-GHC1JAXRYU43$E@hR!d@u9A;v!-ac;i`w>T_Du8KGsL-Yy701I{lz+@(*E!zo&)| zU})?7BSovws^KLE#2LmEAxu1;JU4jgCJN`9%EfQhPR;Br=}YE6!ZcA9 literal 0 HcmV?d00001 diff --git a/__pycache__/sapelo_template.cpython-39.pyc b/__pycache__/sapelo_template.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f868f87f9cc5d01e707d9625486e130d3f8f55c9 GIT binary patch literal 2153 zcmbVN&2QT_6c;5~R<*RnzR-082Chzld4sK_3sSV0hvuVbQZ#81y94HnK#O!DM-o+% zN*m8Rwdef>J#4@(`+s)Qb*KFa8+O>EWVdp*(`b`=k9@!PLB200_K!BKI&){y&ay0Tu_p#rC?h4As=BaQ3GW}s7QO=8xa+rECDcX;U|lA z{Q0w-<*a>CLC9071c_4B+fNmXYr0cTne44!&{?r9e3&OACNLl4Qm&3uM4rmt<`S?D zIC!#;1xZikzd)Ug2{=~DDs&6)@#i=p={YWSVxD3~AWSV%1BY2IOQ@Ebdt5gN+XbPqz>D2f^N^f()5B84kZ|(Mb>z zE>8W4QZX6%RUK&AwK91<5AFt?XaS8x&!02?>eK%HBVQ$%Klkn7(@!Vzres*E9dpupj_+NM; zS(@=YuN57qkUSLYT81LUltc0nTbn!)){k=5LH-E zVMT+N>sPD0Hc<1sx!ovi$>MR*gxeSDSQbsV2!b?EO3h*g6#Z(5kKpsymVd$%=AY$p zNK!vx@#e0b8G^xE=M(p}&~q_Oj+Y5g3Q55osQ=xcp~#zv$m^B44^e(um=+Y)+J zysL-zVQ3@qp{8|s)o>lC!V-D94TRJWpMj?DU2p=H58I9oMqh_PP^@7CPT3RfC+JPC-Moxp*aqJ zMIG-QprGDcti8j$;8|?g^Me3$4}N(a2uH>Qz+*;UA%M4lfy+FAqMAOP9FGzeJ0Q9q zW^FLOf?qa)%Teok0+AX5^Bx0a6YuTNuaPF7LMUi-r(#L z=CejhMwiMeMtxM))MeE=y|O@a&{Df=yg5EV-yD>6(5*Atf>XBHLgmJ}$hTOtPi7m| z(`|^}pVdyU&U|Ct`mtmE_|sz6<`6X?{!}(*wOL~ql|H*rZmx2)IrE1br`OoU#km}n zTk8y!O`D%fHa}bc$<8+Tx4qVd2r0WfqbKwYmXBC#y;7Ii6_5kX7Gk?C1Z&8#i3y`O zczgi=BQt~CRhxwmS+tdUt*5Ds3ZCZEOJgXiwkg^)ius6VO76?SGpJcA70V~e&RhuX z$pKH(>F(G0L>$SzVSapcGZG?t3CxWnw%2)QiY=fjk|zlZym1uAYD#VnJ4E+$PUJn-23PjLOSbKWCJ(@_>KIZK>9~CKA zyq$~oizrDsYX?=Ca$Y1^zjNKbU0sP&5a&YIA#;VuV=kq34<8@i*N&KEng|XufCTzM z4Kf%C-sj(IC&^4Qc_iY2cBB$EIPLXCJ}EQ>Z$e00!^|&|Y^79zC5zHjJ1Ng>1JSNZ zMjUR#xMg!HOl#6!A&dc%OHKP+LGrXGqO8v~jS6UpOjE{VXd|5+Q85Z`krd$RDuSSH z?<+KH;4jzUBg7rlj7uYPN18%71=NHG1(A!T;o1s;OO2<18mU3xfQrWBpbGL&O!T4+ zCW8&wevo8#M^gwbkptTam&Eiku?xghiu?fx!ak<$8(7(xtP5zd6Js7ABN*elrB$%t#A{?xyVf06*fH6stsp*b`@7$ uVRkwdan*>l4Ee~Aj}5UGOY`F)kCm1CKS*8uV(H13=2=N&9&qjFJO2XG*yz9j literal 0 HcmV?d00001 diff --git a/__pycache__/submit.cpython-39.pyc b/__pycache__/submit.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1265e1b546eff32a1185d84c9d2b9f28eb1441d0 GIT binary patch literal 1906 zcmZuxy>Ht_6u&!u=);sPE4F1PL7@U2BBQZ}25C?fO@KOIi(uqqDB*&jc^8Q?MN)UC zv=PWjSpx*<+Q9<4Wb2>NvGWaGI%Vxt1ZdrNC#!IQlHj}d?%w;ok9&M!qftljeE!34 zC%*#syB01#HVF6N6Pi#&af1BiihXQk;uEu4z6C2u@Ywckj2y>Qnp~p3+{jwcY(Y^yb8;Q zJH25xX1$lwBns2sm?gJw-M;l%FAt;BaKJ<_%F-y~G)(09N4C#)7ibPva&Lt<$A{?K!?F&xb?Ua^l&-f?xppb@4cZ)#V$DRl z3E6u^?d)pdY40YEmWksJgISwH)`0k9*(hp7V-J-cy;81U)M&l%Mr&u+=+@#=jmnKx zh03O>&$g-0#(%1_3Gr>NY#~FJ?iB7z^cIUpw7ufw4&4Pkuxul`*G9lYjde~KG$)7f zJ<==aT{Ttsw~D4yul1EH!ki`9Yt^#^8H&@G`pzVbA~_>BM_s}_IN=Q-@AXXJ zT9NCY=>zWht~d#0G@N+{J@{dSWH|%?{;lXcddX0$&-R!7Eg1!;#%vkMjk{kgW9i;q zMKg1rKYMWVj_(K^hhI6m-#>iZf9O}9Jn#2`nN=WzPE0$q>z(mb$j%AtMAz%vA!eaLOMD0gaZwc@ulP11p*Ta&j2-)L*D`ug(rR$^q=VL`A6W= zUxV!jacXvy3#r9oXeQy3=vl_wKy;^w1PH<&c8QIv=dR`94)K6*0bj@KxP=M!NFCR) zZRvdvw@A}ydq%?}O;W`+XziZcU}57X>^Jci>=5jp6GHwbmireuw_Oic@vMF^JmC`i zT}O}DG#s-aQ1u{y`8!QC?*+kR8YasVZn{}Vd?^b(V!260k7X^H`CP?So9mr!h3{&W nZB0JbskK*yJhFJ literal 0 HcmV?d00001 diff --git a/__pycache__/ted.cpython-38.pyc b/__pycache__/ted.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..680f6edc6674c35d3367951c70f0de28b0efaa0a GIT binary patch literal 6325 zcmc&&&5s;M74NG4n4aDld;JmbdhH}l970wKYx0dO6a|PCBAGR^7m18ywPvS!cW2$x zJzL#ld&fNp#eow@{u8_s7bFfL;=q9eLI`n)#JvS46eLR!E+`33$ntyDJu_|Z%xXgv z=uua{s`u*EtM_|VQ}w=EuR9u^WAA^w+J05j{z8@VW1#Xf-k1uZ2^MG#hA$6zM{nqi z+Vnu{7!6a=MqqU+jSACV)r2XmH#K4T_AR|p73{LMSh))=+VUdH^mcd+A1i2w&0rnW z+?s5*l6Hiu*J&oQeZ%WU*L~Td9_2?z9_GbnszO@j;8&;=Lzn_9yVH8nD8n4%(V zv{<4l9DFNc1~$|)edYWs{XaS`o|TPu?6!ht9J|-sLEx_XZZGzQn?!C`w!_4YdI>5? zGjRRTm+RZEXvZ*awMVALO2?XvIxb{=3ESOP6iI1CSwYl!cXIoL&!jv(cP9#uIe6iHs&TP+Xhwa4k4navwVWcsO z^=t6`(vY>%QtiaUW8syJHnztC!lFAz_)#Z<%-&T^w z4u=KRJ5Flsut5dwGpUhQHfuXvn8z`SSBD&4?@+4UIZWBUW)q8TcJS?KtRug(3j5_hC-~N71IR|2+s`2)t2ZX`cj&S9N(IVS+21fNa9YyjyGz z62OlML$#yls7-%^36tW8^rgmviV(sZaj`^k0pv_94=Xi}YlsbNP9y4vh$Y~OR^X|k zV@nKmoY3TNNBvBa7DIW|hVp8eRhAX_{a;+h8cH_W;kvugjNSDp^j&Ni*hqqH_qvS2 z^(FW9s3+YOwbz`__Zr%v9(>CCj~j19y#TvF^BUA`_-@?n_-@$itoqW8*02`^y-tX2 zC4NwgsuS`(KWw%A_$e1Vn%hoX5&5wjM#)mY4xEM>&bj@=XWWwfIrr{ipd{-k7A;9z zjC=@1rek-MC#ZUis@1r+>Z#aUtf;7yj}nhURJtUfi}tmQHRTtmg(6@aQSxC_AHy3z zf2$R1H7Q9^bX}8tWgXs44|{i*}OXQv)%BS4G#8pai>vzc8$6!XI&g zwawE?u~*o%L)_6)JJku>IZYUI+75eB8(3Ql;F&~Gq|kTNuQs556(x14Bt;|HdGC?z zf|A9b5=LREeG=N|G}ZI_rJmFEzde#NZ#(kmh1t5@C`R8gkP?qjNe?2AI>QAIQwxrL8Z7|raGN7=^Us|fqxsG@3yk= zM)`DiW%K^C-IZmW?3~+9{62b|#HnWi|IDY<8LmpF)>}-S%T6C;)Z5P1ABN+C{#9z> z2K(@GzjE{3OV7Lz5Bl}t`G4CzgA0Lq^W0a(K-~Z`=JXf7JoV|@Lsoxgq~n}>kGZ7$ z#igg$2KgGXe#D&+E6@l;fhQ#Ycz+xIKpVHG9!TL5*7Veoo27c*T)Vb>}9?Gn>NK(Q^-D>C> zqw*nHZ8Zu7ZoZ<8M2>tM?OC;%L>(_cN{A9#Nmj?r9oOtaCOeEIO^iIzs9`3Gy5kCR zU!zJ5l^gffwuiOF+5t|kQ10?7|A0Gt z+TZ6#`FniVKC!TCaO)GpnEh}1AKRn%@B9>h7kVG%u+`b+-1&s8Fih(s!$#Y%#pHW! zwfTpJQ1}#Pf{{OQffuzSR`!+r7c3GVJN4k@-&p1i>Zc{Z`p=3YadhX zi%w=D)zsaVN5IT#ieAd|`BJ4lX>XD9iW#@s-R&XMpe8F?rQ~*=3K}PVMq_98*Ya7s PM2XXwGM2PC;ivxxo6EK~ literal 0 HcmV?d00001 diff --git a/__pycache__/ted.cpython-39.pyc b/__pycache__/ted.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..22d925d75d8041c8e6a4098e21b1319936d18e1e GIT binary patch literal 6325 zcmc&&&5s;M74NG4n4aDldt*D^_1Yv&93U%&HTiOog{%O!LL{?6_8!PcR%>>ucX!r3 z-Lus_ws+ElP#idczfh(87^u90H>N^pf(2TG;mZTw(HlCW zHa*ZfM#EIJ5m=o{qr$XTHDLT zwQ%zR!dGOMiji}?Fx!wy} z&G1ae56-@L_Qe;@bepYf&2>LM(~80tri|%yB7u71i>2;%W_w;cY$u*~2uflKBaKXYJ9ddZRL#cM>Fu4~seMc<|IN4ghODIT&;w}}4 zbEA2)9p4pHna%XT4>KNiGc(?3c75gi%#_V=-OsFMx9f)@GgTmFwadLQX?OgKQbsb< zMU-Ux($@hY7E)$+dO_0e2HP21ktTFE>VUypm45S@h;D@0OwwEpd{3!bv?aMZGZ3F~ zW~@nnD{~|QEoV2X6crvZ3v#u$wwAGWqdsB)+UqJh@`ARIOqadz2#9zAg~ko`40G6V zc8b}|!0!-h$3XWh6akQZ2zv@RiZ+G)??C`V;EfVX`vg$DrprqS6I|g0WD`E--C}c) z0DepusvSK?ZTeeGm=s5(FEtiagb?0{izSK+AZKEESgCPLLu^=c8c{z$ECEln0#6kk zTVkl=xF&x)>SvO)7|NqIlvm5FvaG=G|NIKpP_oeu*WHa~?5;WDac#2lMJ64h#9;px}E_g*d6?ZVNDbMhzqQ3 zo>q#z!loVKj+WY~PT0DBPsK?BY%dNXDL<&*?+rw_1!^LwV+UU?V-%Ff*{GLlq@_UK1uh(+9Nq#SJ4xnL@-*XLRzaK07 zZiN3V`|TipFJxv43@Y+efdNqm!eETzR6J&;;!)!4gGVkk36BzIUvK7elkg~U4xnKY z9=V1x9*-Az=%Fb4@RQO39WQWV;jhd7{4_Wfed`5gj{JUs8Bw1KvvD*`#jidUzY=F3{Bo&D z_?0;OdOw$&gkOns01cDy%Qckoo6GUT8D$=4KTap86t~M%r*kHq1Jx<;Z^QH5RuGhI8$iaK{=%21K7D)0>d%aHoO2&Amz2M} z^xWDYza?33o_p>q7zwIh#HZq3S-E^MAL^xeAn6#7#&29)zJU9Op4V1hzkCHE71w?J z_3z}wrPr1ff$w*R#2ZAwVj3);(sLNW`ZiJ)?&&@TKK}yh+;tZZW!73GDPf~-HFS+p z`H-x(8ifKkU(rS)N1jG|R&6Fx#|w}WqJ&nG)p2vjHM@|>4kJkuBTqDHn2Dn9xPsi* zs8U1a=0mmZVQsPY$jzxy!B`$HPVx(69NnWDwfydbbXB*PWGu{Bpzc%|+sxRtM{ib7 zqsvQp<9Eo5xS89yOVLf8zEnGe?|i9lu_O4M!hMTw^BkF+>tn;1{crjo-J|#K{3L%5dY|O5)!F6T`IxLQOzT6#M%%E(ZH45w$!|QZht-o(jsbNZJlcTZBr(P)<+fX(%-pQw=NMvJGd}KC0Rm zoy3XySqJP8YFK;tCZZ%Q$gdz&uHw-{#rhZ Q^OQJ^DPu{S6Mp)C0L0X_H2?qr literal 0 HcmV?d00001 diff --git a/__pycache__/transf_disp.cpython-38.pyc b/__pycache__/transf_disp.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e9bc72cf2fc28957415610c0b57df958ac323fda GIT binary patch literal 9613 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 literal 0 HcmV?d00001 diff --git a/__pycache__/transf_disp.cpython-39.pyc b/__pycache__/transf_disp.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2d92728230e594e98ffffdef86e161415a5c4938 GIT binary patch literal 9601 zcmb_iO>7)TcJAuG>G|c5q9jt1rM6|*8i%5+AA7xutXPsG+kh<_D`jm=Vvm~BJ>(2$ zx`)+06v^#D7E2?iT|kFq5#&T39RwR7=Nyb6ha49{kOYk!HpwB;EeQeyNH$i!S2fe~ zL(&qknL$@~RlWNA`qg`{-fO2=%qjSN@$)~d`?nS4pD8o`(~)@xS4fGgxU8*I8SZLZ z?PyhvQJL0OI(pR*&wAVJWU3ZZ-cww|HNR9`)64E^)tt-jE0xR>^rGCWutaP6o4A?n zrth>@@nqfqzE_U|9@dFu{HG!F4z6$qi6@4ysxGT)?parNjW1bMcTG3*rBXFq%gy3$ zx;ZzGd&VueMcgg7j`9W?A{tr^;3oj1FYji)HE zyB==@ykk4Q-Hbf$M9odljzmu=MmF$8M=M_R$n!wtg9@nF^&sFb@QFOz#gJ{M?sYsr z3el5m*Bu^tVH2HB)GdjwdSTOFwH>?B+@4Ug}P}?YZ`=w_aVcAFX-ZTaq2!vfs9Qx4(FB z;Wnj}FD_mljL^f>eLHM+y6tUy1xNtD4{BHM*-aOVYew5PFyYOuB|8l4c0lV0?FRQY zdY)h37U=k4GirLFn6Se=+Ych!1sL3Ohszke2zmqPzwU(I58%{l1vTvgnt9;MC;0ON2juVC#A9>Bywa9ZTvY&gLfoJOl zB*Py)8@TS^3V(_uHe;ox#0F9pGo)&)BGqEGrSBR03ZBgQ92*z_>bcpo{q