-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathAFM_cdw.py
89 lines (57 loc) · 2.25 KB
/
AFM_cdw.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 30 17:30:14 2024
@author: 26526
"""
import numpy as np
import matplotlib.pyplot as plt
from math import pi
from band_ini import config as cf
class square_afm():
def __init__(self):
self.t1 = 1
self.l = 0.3
self.H = np.zeros((4,4), dtype=complex)
#spin term
self.Sz = -2
self.Sy = 0
self.Sx = 0
#cdw potential
self.M = 0.4
def model(self, k):
kx, ky = k
fk = -self.t1 *(np.cos(kx) + np.cos(ky))
S = self.Sx * cf.sx + self.Sy * cf.sy + self.Sz *cf.sz
M = self.M * cf.s0
H_right = fk * cf.s0 + self.l * (np.sin(kx) * cf.sy + np.sin(ky) * cf.sx)
H_left = fk * cf.s0 + self.l * (np.sin(kx) * cf.sy + np.sin(ky) * cf.sx)
H1 = np.concatenate(((S+M), H_right), axis=1)
H2 = np.concatenate((H_left, (-S-M)), axis=1)
H = np.concatenate((H1, H2), axis=0)
return np.array(H)
class Honey_Neel():
def __init__(self):
self.t1 = 1
self.l = 0.3
self.H = np.zeros((4,4), dtype=complex)
self.M = 0.2
#spin moments
#spin term
self.Sz = 1
self.Sy = 0
self.Sx = 0
def model(self, k):
kx, ky = k
S = self.Sx * cf.sx + self.Sy * cf.sy + self.Sz *cf.sz
M = self.M * cf.s0
r_a3 = -cf.sy*(cf.a3[0])*np.exp(1.j*k.dot(cf.a3))
r_a1 = (cf.sx*cf.a1[0] - cf.a1[1]*cf.sy)*np.exp(1.j*k.dot(cf.a1))
r_a2 = (cf.sx*cf.a2[0] - cf.a2[1]*cf.sy)*np.exp(1.j*k.dot(cf.a2))
H_rashba = self.l * (r_a1 + r_a2 + r_a3)
H_t0 = -cf.s0*(self.t1*(np.exp(1.j*k.dot(cf.a1)) + np.exp(1.j*k.dot(cf.a2)) + np.exp(1.j*k.dot(cf.a3))))
H_right = H_t0 + H_rashba
H_left = H_t0.conj() + H_rashba
H1 = np.concatenate(((S+M), H_right), axis=1)
H2 = np.concatenate((H_left, (-S-M)), axis=1)
H = np.concatenate((H1, H2), axis=0)
return np.array(H)