예제 #1
0
 def test_berry_phase_loop(self, setup):
     g = setup.g.tile(2, 0).tile(2, 1).tile(2, 2)
     H = Hamiltonian(g)
     bz1 = BandStructure.param_circle(H, 20, 0.01, [0, 0, 1], [1 / 3] * 3)
     bz2 = BandStructure.param_circle(H,
                                      20,
                                      0.01, [0, 0, 1], [1 / 3] * 3,
                                      loop=True)
     assert np.allclose(berry_phase(bz1), berry_phase(bz2))
예제 #2
0
 def test_berry_phase_method_fail(self):
     g = Geometry([[-.6, 0, 0], [0.6, 0, 0]], Atom(1, 1.001), sc=[2, 10, 10])
     g.set_nsc([3, 1, 1])
     H = Hamiltonian(g)
     H.construct([(0.1, 1.0, 1.5), (0, 1., 0.5)])
     # Contour
     k = np.linspace(0.0, 1.0, 101)
     K = np.zeros([k.size, 3])
     K[:, 0] = k
     bz = BrillouinZone(H, K)
     berry_phase(bz, method='unknown')
예제 #3
0
 def test_berry_phase_zak(self):
     # SSH model, topological cell
     g = Geometry([[-.6, 0, 0], [0.6, 0, 0]], Atom(1, 1.001), sc=[2, 10, 10])
     g.set_nsc([3, 1, 1])
     H = Hamiltonian(g)
     H.construct([(0.1, 1.0, 1.5), (0, 1., 0.5)])
     # Contour
     k = np.linspace(0.0, 1.0, 101)
     K = np.zeros([k.size, 3])
     K[:, 0] = k
     bz = BrillouinZone(H, K)
     assert np.allclose(np.abs(berry_phase(bz, sub=0, method='zak')), np.pi)
     # Just to do the other branch
     berry_phase(bz, method='zak')
예제 #4
0
 def test_berry_phase(self, setup):
     R, param = [0.1, 1.5], [1., 0.1]
     g = setup.g.tile(2, 0).tile(2, 1).tile(2, 2)
     H = Hamiltonian(g)
     H.construct((R, param))
     bz = BandStructure.param_circle(H, 20, 0.01, [0, 0, 1], [1 / 3] * 3)
     berry_phase(bz)
     berry_phase(bz, sub=0)
     berry_phase(bz, eigvals=True, sub=0)
예제 #5
0
 def test_berry_phase_fail_sc(self, setup):
     g = setup.g.tile(2, 0).tile(2, 1).tile(2, 2)
     H = Hamiltonian(g)
     bz = BandStructure.param_circle(H.geometry.sc, 20, 0.01, [0, 0, 1],
                                     [1 / 3] * 3)
     berry_phase(bz)