示例#1
0
    def setUp(self):
        self.pbe_db = df_database(XcFunc.from_name("PBE"))
        assert self.pbe_db.xc == "PBE"
        # Cached?
        assert df_database(XcFunc.from_abinit_ixc(11)) is self.pbe_db
        assert "WIEN2k" in self.pbe_db.codes
        assert "VASP" in self.pbe_db.codes

        spinat, spin_mode = self.pbe_db.spinat_spinmode_for_symbol("Si")
        assert spinat is None and spin_mode == "unpolarized"
        spinat, spin_mode = self.pbe_db.spinat_spinmode_for_symbol("Fe")
        assert spinat == 2 * [(0, 0, 2.3)] and spin_mode == "polarized"

        self.pw_db = df_database("PW")
        assert self.pw_db.xc == "PW"
        assert self.pw_db is not self.pbe_db
        assert "WIEN2k" in self.pw_db.codes

        # Accept PW_MOD as well.
        self.pwmod_db = df_database("PW_MOD")
        assert self.pwmod_db.xc == "PW_MOD"
        assert self.pwmod_db is not self.pw_db
示例#2
0
    def setUp(self):
        self.pbe_db = df_database(XcFunc.from_name("PBE"))
        assert self.pbe_db.xc == "PBE"
        # Cached?
        assert df_database(XcFunc.from_abinit_ixc(11)) is self.pbe_db
        assert "WIEN2k" in self.pbe_db.codes
        assert "VASP" in self.pbe_db.codes

        spinat, spin_mode = self.pbe_db.spinat_spinmode_for_symbol("Si")
        assert spinat is None and spin_mode == "unpolarized"
        spinat, spin_mode = self.pbe_db.spinat_spinmode_for_symbol("Fe")
        assert spinat == 2 * [(0, 0, 2.3)] and spin_mode == "polarized"

        self.pw_db = df_database("PW")
        assert self.pw_db.xc == "PW"
        assert self.pw_db is not self.pbe_db
        assert "WIEN2k" in self.pw_db.codes

        # Accept PW_MOD as well.
        self.pwmod_db = df_database("PW_MOD")
        assert self.pwmod_db.xc == "PW_MOD"
        assert self.pwmod_db is not self.pw_db
示例#3
0
 def __init__(self, *args, **kwargs):
     super(DojoInfo, self).__init__(*args, **kwargs)
     self["xc"] = XcFunc.from_name(self["xc_name"])
示例#4
0
 def __init__(self, *args, **kwargs):
     super(DojoInfo, self).__init__(*args, **kwargs)
     self["xc"] = XcFunc.from_name(self["xc_name"])
示例#5
0
    def test_xcfunc_api(self):
        """Testing XcFunc API."""
        # Aliases should be unique
        assert len(XcFunc.aliases()) == len(set(XcFunc.aliases()))

        # LDA-Teter
        ixc_1 = XcFunc.from_abinit_ixc(1)
        print(ixc_1)
        assert ixc_1.type == "LDA"
        assert ixc_1.name == "LDA_XC_TETER93"
        assert ixc_1 == ixc_1
        assert ixc_1 == "LDA_XC_TETER93"
        assert ixc_1 != "PBE"
        assert ixc_1.name not in XcFunc.aliases()
        assert ixc_1 == XcFunc.from_name(ixc_1.name)

        # LDA-PW (in aliases)
        ixc_7 = XcFunc.from_abinit_ixc(7)
        assert ixc_7.type == "LDA"
        assert ixc_7.name == "PW"
        assert ixc_7.name in XcFunc.aliases()
        assert ixc_7.name == XcFunc.from_name(ixc_7.name)
        assert ixc_7 != ixc_1

        # GGA-PBE from ixc == 11 (in aliases)
        ixc_11 = XcFunc.from_abinit_ixc(11)
        assert ixc_11.type == "GGA" and ixc_11.name == "PBE"
        assert ixc_11.name in XcFunc.aliases()
        assert ixc_1 != ixc_11
        # Test asxc
        assert XcFunc.asxc(ixc_11) is ixc_11
        assert XcFunc.asxc("PBE") == ixc_11

        d = {ixc_11: ixc_11.name}
        print(d)
        assert "PBE" in d
        assert ixc_11 in d

        # Test if object can be serialized with Pickle.
        self.serialize_with_pickle(ixc_11, test_eq=True)

        # Test if object supports MSONable
        # TODO
        # print("in test", type(ixc_11.x), type(ixc_11.c), type(ixc_11.xc))
        # ixc_11.x.as_dict()
        # self.assertMSONable(ixc_11)

        # GGA-PBE from ixc given in abinit-libxc mode
        ixc_101130 = XcFunc.from_abinit_ixc(-101130)
        assert ixc_101130.type == "GGA" and ixc_101130.name == "PBE"
        assert ixc_101130 == ixc_11

        # GGA-PBE built from name
        gga_pbe = XcFunc.from_name("PBE")
        assert gga_pbe.type == "GGA" and gga_pbe.name == "PBE"
        assert ixc_11 == gga_pbe

        # Use X from GGA and C from LDA!
        unknown_xc = XcFunc.from_name("GGA_X_PBE+ LDA_C_PW")
        assert unknown_xc not in XcFunc.aliases()
        assert unknown_xc.type == "GGA+LDA"
        assert unknown_xc.name == "GGA_X_PBE+LDA_C_PW"

        gga_pbe = XcFunc.from_type_name("GGA", "GGA_X_PBE+GGA_C_PBE")
        assert gga_pbe.type == "GGA" and gga_pbe.name == "PBE"
        assert str(gga_pbe) == "PBE"
示例#6
0
    def test_xcfunc_api(self):
        """Testing XcFunc API."""
        # Aliases should be unique
        assert len(XcFunc.aliases()) == len(set(XcFunc.aliases()))

        # LDA-Teter
        ixc_1 = XcFunc.from_abinit_ixc(1)
        print(ixc_1)
        assert ixc_1.type == "LDA"
        assert ixc_1.name == "LDA_XC_TETER93"
        assert ixc_1 == ixc_1
        assert ixc_1 == "LDA_XC_TETER93"
        assert ixc_1 != "PBE"
        assert ixc_1.name not in XcFunc.aliases()
        assert ixc_1 == XcFunc.from_name(ixc_1.name)

        # LDA-PW (in aliases)
        ixc_7 = XcFunc.from_abinit_ixc(7)
        assert ixc_7.type == "LDA"
        assert ixc_7.name == "PW"
        assert ixc_7.name in XcFunc.aliases()
        assert ixc_7.name == XcFunc.from_name(ixc_7.name)
        assert ixc_7 != ixc_1

        # GGA-PBE from ixc == 11 (in aliases)
        ixc_11 = XcFunc.from_abinit_ixc(11)
        assert ixc_11.type == "GGA" and ixc_11.name == "PBE"
        assert ixc_11.name in XcFunc.aliases()
        assert ixc_1 != ixc_11
        # Test asxc
        assert XcFunc.asxc(ixc_11) is ixc_11
        assert XcFunc.asxc("PBE") == ixc_11

        d = {ixc_11: ixc_11.name}
        print(d)
        assert "PBE" in d
        assert ixc_11 in d

        # Test if object can be serialized with Pickle.
        self.serialize_with_pickle(ixc_11, test_eq=True)

        # Test if object supports MSONable
        # TODO
        #print("in test", type(ixc_11.x), type(ixc_11.c), type(ixc_11.xc))
        #ixc_11.x.as_dict()
        #self.assertMSONable(ixc_11)

        # GGA-PBE from ixc given in abinit-libxc mode
        ixc_101130 = XcFunc.from_abinit_ixc(-101130)
        assert ixc_101130.type == "GGA" and ixc_101130.name == "PBE"
        assert ixc_101130 == ixc_11

        # GGA-PBE built from name
        gga_pbe = XcFunc.from_name("PBE")
        assert gga_pbe.type == "GGA" and gga_pbe.name == "PBE"
        assert ixc_11 == gga_pbe

        # Use X from GGA and C from LDA!
        unknown_xc = XcFunc.from_name("GGA_X_PBE+ LDA_C_PW")
        assert unknown_xc not in XcFunc.aliases()
        assert unknown_xc.type == "GGA+LDA"
        assert unknown_xc.name == "GGA_X_PBE+LDA_C_PW"