コード例 #1
0
    def test_apply_transformation(self):
        trans = MagOrderingTransformation({"Fe": 5})
        p = Poscar.from_file(os.path.join(test_dir, 'POSCAR.LiFePO4'),
                             check_for_POTCAR=False)
        s = p.structure
        alls = trans.apply_transformation(s, 10)
        self.assertEqual(len(alls), 3)
        f = SpacegroupAnalyzer(alls[0]["structure"], 0.1)
        self.assertEqual(f.get_spacegroup_number(), 31)

        model = IsingModel(5, 5)
        trans = MagOrderingTransformation({"Fe": 5}, energy_model=model)
        alls2 = trans.apply_transformation(s, 10)
        #Ising model with +J penalizes similar neighbor magmom.
        self.assertNotEqual(alls[0]["structure"], alls2[0]["structure"])
        self.assertEqual(alls[0]["structure"], alls2[2]["structure"])

        s = self.get_structure('Li2O')
        #Li2O doesn't have magnetism of course, but this is to test the
        # enumeration.
        trans = MagOrderingTransformation({"Li+": 1}, max_cell_size=3)
        alls = trans.apply_transformation(s, 100)
        self.assertEqual(len(alls), 10)
コード例 #2
0
 def test_to_from_dict(self):
     m = IsingModel(5, 4)
     d = m.as_dict()
     o = IsingModel.from_dict(d)
     self.assertIsInstance(o, IsingModel)
     self.assertAlmostEqual(o.j, 5)
コード例 #3
0
ファイル: MultiIsingModel.py プロジェクト: myrusia/Science
                idx = int(np.where(np.isclose(self.distances, dist))[0])
                energy -= self.j[idx] * s1 * getattr(site.specie, "spin", 0)
        return energy


#atoms = read_vasp('POSCAR2')
#write_vasp('POSCAR', sort(atoms), vasp5=True, direct=True, label=atoms.get_chemical_formula())

if __name__ == '__main__':
    """
    J = [0.00240319, 0.00224361, 0.00146472, 0.00125072, 0.00122649]
    model_uuu = MultiIsingModel(J, 5.0, Structure.from_file('2FEPOSCAR'), [3, 3])
    model_uuu.recommended_j()
    model_uud = MultiIsingModel(J, 5.0, Structure.from_file('2FEPOSCAR'), [3, -3])
    uuu = model_uuu.get_energy()
    uud = model_uud.get_energy()
    print(uuu - uud)
    """
    J = -0.03489
    uu = Structure.from_file('2FEPOSCAR')
    ud = uu.copy()
    uu.add_spin_by_site([3.291, 3.291])
    ud.add_spin_by_site([3.285, -3.285])
    model = IsingModel(J, 5.0)
    print(model.get_energy(uu) - model.get_energy(ud))
    uuu = Structure.from_file('POSCAR3')
    uud = uu.copy()
    uuu.add_spin_by_site([3, 3, 3])
    uud.add_spin_by_site([3, 3, -3])
    model = IsingModel(J, 5.0)
    print(model.get_energy(uuu) - model.get_energy(uud))