From fce89301415f6f97862488c220bca63e02c363e2 Mon Sep 17 00:00:00 2001 From: Tom Purcell Date: Mon, 5 Aug 2024 08:27:36 -0700 Subject: [PATCH] Add test for aims density conversions --- src/pymatgen/util/testing/aims.py | 13 +++++++++++-- .../static-no-kgrid-si/control.in.gz | Bin 1244 -> 1162 bytes .../static-no-kgrid-si/geometry.in.gz | Bin 216 -> 188 bytes .../static-no-kgrid-si/parameters.json | 4 ++-- .../aims/test_sets/test_static_generator.py | 5 ++++- 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/pymatgen/util/testing/aims.py b/src/pymatgen/util/testing/aims.py index 057df663083..ab31b9d667f 100644 --- a/src/pymatgen/util/testing/aims.py +++ b/src/pymatgen/util/testing/aims.py @@ -84,6 +84,7 @@ def comp_system( generator_cls: type, properties: list[str] | None = None, prev_dir: str | None | Path = None, + user_kpt_settings: dict[str, Any] | None = None, ) -> None: """Compare files generated by tests with ones in reference directories. @@ -96,16 +97,24 @@ def comp_system( generator_cls (type): The class of the generator properties (list[str] | None): The list of properties to calculate prev_dir (str | Path | None): The previous directory to pull outputs from + user_kpt_settings (dict[str, Any] | None): settings for k-point density in FHI-aims Raises: AssertionError: If the input files are not the same """ + if user_kpt_settings is None: + user_kpt_settings = {} + k_point_density = user_params.pop("k_point_density", 20) try: - generator = generator_cls(user_params=user_params, k_point_density=k_point_density) + generator = generator_cls( + user_params=user_params, + k_point_density=k_point_density, + user_kpoints_settings=user_kpt_settings, + ) except TypeError: - generator = generator_cls(user_params=user_params) + generator = generator_cls(user_params=user_params, user_kpoints_settings=user_kpt_settings) input_set = generator.get_input_set(structure, prev_dir, properties) input_set.write_input(work_dir / test_name) diff --git a/tests/io/aims/aims_input_generator_ref/static-no-kgrid-si/control.in.gz b/tests/io/aims/aims_input_generator_ref/static-no-kgrid-si/control.in.gz index 9b912b2ffe2d5259c08c4cdf514696c335e18134..f151b8f5b882ff195c5b19737603d0209fbe2daa 100644 GIT binary patch literal 1162 zcmV;51asJh%O9R-fzGWA?hqOh| zUKR^v(W^mABbyB+3M7@*{q;K}ZO32Py|~K3;XKapz2R`kyFYLHML%o!zi(J!q)~D! zUWBpYEeCE@C+g)dr8$_IORl5m58(03*BKX`fm$^P zgI3?Mwhs9AaSD%G*k7|Re1#gm_LM3++9{-Qya>)u<9dz8VgnN?)*Cy423tN#YoJvc zo`laKyt4{c6rB61qNic4daIRWqK8&Uym!$)BA8Jl5ZtJ7C2>}7uzm*KZ$YE+Vb#iV z(NmNk!fwEB(2x^aEBbX4tj4SUOpxs@Q$`v=lxQK=Y ziD{h1@8iY$cn%LuLkqXij(u%~>K)O&Zr)n*)+l;2U_ez1pHW&4mQn<2w6*Hcg*_>k ze>Sw<4{k_uk6rE$cAg-%hL@#lcO5ieoYkV=%;VQ(*3{)I27X^Nz*P7hkVbIyhDyrSm(xkB7C{d$N`mO66!0m}3zPs;9?8vO8T5)-R zsUSoze6}J7_hT(_G$*{1+(R8Vr*`_%Ig95-5#9M2a=GE!YQ&=%`3|c`yBw4~@y=Lr zw2B)fEcUZ~O)eW8mgJ|})=$9MKA7f>;BrZ`UYE*KD0bdExT8uJgA`PygkzWI|YC&qVINg`X z37XH7m;`0{RkSEl3S2DWt7w_dbAYP4j#hD10W7L(kyDn(<(!)ND=Vsc)cgMLye`aM z!mX>x=#m1_4N6;1Q_q$GuF=Jk!t-f`HuipZ9epC)YFgd_ zM5YlPYV*NWa{&)@H?uhWq`P4-Xa4s$70Tq%F$7D!Wdbv&ORJY~k9>exQ6+u(7yY;JvwHG2iWUbup4fnMfWBet!sYn{HVc-PWY_OczuGb}(a|yWT_yBn?-7aC1%exbv|PicqFSqlx-A?a zgZkU1r?2XTXhF&1KAqoZDW!3m4eoB2%&j8r1O6)M|GsX;2bxP}#fvajyyf6ZC(7k- zr5Tx$Nu~$S%e5BOe+Ey|@c;Ii4eoCI4e*a%$yBO}Q>WDrURtO4{$WIqTG-#?&uqmt zeQ8lF+uIR15HEuBQ@>twPq!1$;ah}m(Rr7Eop9iShccDw21Ok*bUhYH*n(Cigq3L?3A%% zq)~EXARM{CJX%Mig9i=m8CKR-g!5e^%M~-ixQHeSDT46vBwkG7IXzUByCqcjZE1yS z9ngK=thVshT(qX+L91%|#HD3qQ6f^kEphi;*b~Bh+hD(+%pm2K`wW`Md?@QWzH<$(5XhrG`Coa~5=u3bZYI$8^;iYB)oA*-CDyQ7AM2)$!Jdm#}Ln zC6~P6t-V0`mA`Ne6N##h4!L;8e@65)B0zoTu%aXeDg?KP1C@ABtm`;#&uK&${^-G| zdW)@*VYyMFytfg8pc~FB8q7}Yc1E+5LQu5xM;7)R{YM42d z<4fmJJTHpDowtz74bxV0eq@pFbY*Xsow6t1SyUYD;uc91duz|hWyQNC{8U|g13umd z)2tFqE@Ab$Ri09@^WLc&FkN&~fTi&E8rH5s4(*%TJ{ez%TJUNR)|G3Lj&DS9RLrMS z{87Z$l#6KsWs+P`CQ+K^3;ZtfYszf4K(<+&?kRGj&F4vsgtGjqwkT2rE*9}s?KGX| zM6=m-?JSBBxOvPv>aluc*L!uJ;qbd0mKo3b$sj??Rsr%yg|`*kI8xISkbJ z6L%)${K6!6ZD!XMEuIPCX6zM#xuA_N*;Q2+R3V^Gpe*~2wdHoOlPn=QiIhZFRb5cs zKG)Mx#;VF!8jT_3z3=xXqDMDjw5s~h;*a~QpER&kjq9MUpEl%LdYBBXRgh?mLJXh= zGm1phDQy`{&vqfExr-%*hf@n}?EBp``Ut(%*xf0Br4kL-=H8LHpa+cRC=NgAZW+Xx z|NTQe89q9MWYJoNG@vvEC+*g_jP-8$PVwX*Slah%u>zW zlc=|@_qqF{Ix8CS+uu9n(JEoWjlnBLMo~n6xdiZHJ5L}7gz2>erWc3osPHeQl%W8% G4FCY{Gku!? diff --git a/tests/io/aims/aims_input_generator_ref/static-no-kgrid-si/geometry.in.gz b/tests/io/aims/aims_input_generator_ref/static-no-kgrid-si/geometry.in.gz index c2e720a036642f8b6363fb1f551ee7ed40bb9911..413cb3eb22ac036ee72ce497d1484cbb709f79f0 100644 GIT binary patch literal 188 zcmV;t07L&DiwFqC?yzP617~G#ZDn+Fc`j*g0F{wJ3WP8WMfaYf`+<;ZW1Vx%0Ysz= zK@p_P`DYeG8PgDBmY>hd&(AvLyv%8Qr#bJ3a|rl1>4E563(?c1)~pOg5IT;M@U^c( z4d4S$AZazenex8LdyU#_`7vxY=nSb7V^3-h>`LYHKv~lM6V_jc@G$7c&CvA>QX=mnQ-Q z7fBGVc8n^BWQq3?OEMOKNBpC3!#RM6vN-*#{h*d&et0jGA3m5Lu)Nn(yUG_Mj*>J> Szx|$?V>|&0*)$P=0ssK=4qhk# diff --git a/tests/io/aims/aims_input_generator_ref/static-no-kgrid-si/parameters.json b/tests/io/aims/aims_input_generator_ref/static-no-kgrid-si/parameters.json index 28242f36fa7..a6c81a5f1e6 100644 --- a/tests/io/aims/aims_input_generator_ref/static-no-kgrid-si/parameters.json +++ b/tests/io/aims/aims_input_generator_ref/static-no-kgrid-si/parameters.json @@ -4,7 +4,7 @@ "species_dir": "/home/tpurcell/git/atomate2/tests/aims/species_dir/light", "k_grid": [ 12, - 12, - 12 + 6, + 4 ] } diff --git a/tests/io/aims/test_sets/test_static_generator.py b/tests/io/aims/test_sets/test_static_generator.py index 39415758b1e..62a82964bb3 100644 --- a/tests/io/aims/test_sets/test_static_generator.py +++ b/tests/io/aims/test_sets/test_static_generator.py @@ -2,6 +2,8 @@ from pathlib import Path +import numpy as np + from pymatgen.io.aims.sets.core import StaticSetGenerator from pymatgen.util.testing.aims import O2, Si, comp_system @@ -19,7 +21,8 @@ def test_static_si(tmp_path): def test_static_si_no_kgrid(tmp_path): parameters = {"species_dir": "light"} - comp_system(Si, parameters, "static-no-kgrid-si", tmp_path, ref_path, StaticSetGenerator) + Si_supercell = Si.make_supercell(np.array([[1, 0, 0], [0, 2, 0], [0, 0, 3]]), in_place=False) + comp_system(Si_supercell, parameters, "static-no-kgrid-si", tmp_path, ref_path, StaticSetGenerator) def test_static_o2(tmp_path):