def test_nc_density_matrix(sisl_tmp, sisl_system): f = sisl_tmp('grDM.nc', _dir) dm = DensityMatrix(sisl_system.gtb) for _, ix in dm.iter_orbitals(): dm[ix, ix] = ix / 2. dm.write(ncSileSiesta(f, 'w')) ndm = ncSileSiesta(f).read_density_matrix() # Assert they are the same assert np.allclose(dm.cell, ndm.cell) assert np.allclose(dm.xyz, ndm.xyz) dm.finalize() assert np.allclose(dm._csr._D[:, 0], ndm._csr._D[:, 0]) assert sisl_system.g.atoms.equal(ndm.atoms, R=False)
def test_nc_DM_non_colinear(sisl_tmp): DM1 = DensityMatrix(sisl.geom.graphene(), spin=sisl.Spin('NC')) DM1.construct(([0.1, 1.44], [[0.1, 0.2, 0.3, 0.4], [0.2, 0.3, 0.4, 0.5]])) f1 = sisl_tmp('DM1.nc', _dir) f2 = sisl_tmp('DM2.nc', _dir) DM1.write(f1) DM1.finalize() DM2 = sisl.get_sile(f1).read_density_matrix() DM2.write(f2) DM3 = sisl.get_sile(f2).read_density_matrix() assert DM1._csr.spsame(DM2._csr) assert np.allclose(DM1._csr._D, DM2._csr._D) assert DM1._csr.spsame(DM3._csr) assert np.allclose(DM1._csr._D, DM3._csr._D)
def test_nc_DM_spin_orbit_nc2dm2nc(sisl_tmp): DM1 = DensityMatrix(sisl.geom.graphene(), orthogonal=False, spin=sisl.Spin('SO')) DM1.construct(([0.1, 1.44], [[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.], [0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.]])) f1 = sisl_tmp('DM1.nc', _dir) f2 = sisl_tmp('DM2.DM', _dir) DM1.finalize() DM1.write(f1) DM2 = sisl.get_sile(f1).read_density_matrix() DM2.write(f2) DM3 = sisl.get_sile(f2).read_density_matrix() assert DM1._csr.spsame(DM2._csr) assert np.allclose(DM1._csr._D, DM2._csr._D) assert DM1._csr.spsame(DM3._csr) assert np.allclose(DM1._csr._D, DM3._csr._D)