# gnuscript for the AFM spin splitting project.
# conduction-band.dat
# fit the energy data for up spin, the 5th column

set size square
set key left
set pointsize 1.5

unset grid

set style line 1\
	linecolor rgb 'black' \
	linetype 1 linewidth 2 \
	pointtype 8 pointsize 0

FIT_LIMIT = 1e-50

f(kx, ky, kz) = a000 + a100*cos(2*pi*kx) + a010*cos(2*pi*ky) \
+ a001*cos(2*pi*kz) + a110*cos(2*pi*kx)*cos(2*pi*ky) \
+ a101*cos(2*pi*kx)*cos(2*pi*kz) + a011*cos(2*pi*ky)*cos(2*pi*kz)\
+ a200*cos(4*pi*kx) + a020*cos(4*pi*ky) + a002*cos(4*pi*kz)\
+ d110*sin(2*pi*kx)*sin(2*pi*ky) + f101*sin(2*pi*kx)*sin(2*pi*kz)\
+ g011*sin(2*pi*ky)*sin(2*pi*kz) + a111*cos(2*pi*kx)*cos(2*pi*ky)*cos(2*pi*kz)\
+ a210*cos(4*pi*kx)*cos(2*pi*ky) + a201*cos(4*pi*kx)*cos(2*pi*kz)\
+ a021*cos(4*pi*ky)*cos(2*pi*kz) + a120*cos(2*pi*kx)*cos(4*pi*ky)\
+ a102*cos(2*pi*kx)*cos(4*pi*kz) + a012*cos(2*pi*ky)*cos(4*pi*kz)\
+ a300*cos(6*pi*kx) + a030*cos(6*pi*ky) + a003*cos(6*pi*kz)\
+ d111*sin(2*pi*kx)*sin(2*pi*ky)*cos(2*pi*kz)\
+ d120*sin(2*pi*kx)*sin(4*pi*ky) + d210*sin(4*pi*kx)*sin(2*pi*ky)\
+ f111*sin(2*pi*kx)*cos(2*pi*ky)*sin(2*pi*kz)\
+ f201*sin(4*pi*kx)*sin(2*pi*kz) + f102*sin(2*pi*kx)*sin(4*pi*kz)\
+ g111*cos(2*pi*kx)*sin(2*pi*ky)*sin(2*pi*kz)\
+ g021*sin(4*pi*ky)*sin(2*pi*kz) + g012*sin(2*pi*ky)*sin(4*pi*kz)\
+ a211*cos(4*pi*kx)*cos(2*pi*ky)*cos(2*pi*kz)\
+ a121*cos(2*pi*kx)*cos(4*pi*ky)*cos(2*pi*kz)\
+ a112*cos(2*pi*kx)*cos(2*pi*ky)*cos(4*pi*kz)\
+ a202*cos(4*pi*kx)*cos(4*pi*kz) + a220*cos(4*pi*kx)*cos(4*pi*ky)\
+ a022*cos(4*pi*ky)*cos(4*pi*kz) + a310*cos(6*pi*kx)*cos(2*pi*ky)\
+ a301*cos(6*pi*kx)*cos(2*pi*kz) + a031*cos(6*pi*ky)*cos(2*pi*kz)\
+ a130*cos(2*pi*kx)*cos(6*pi*ky) + a103*cos(2*pi*kx)*cos(6*pi*kz)\
+ a013*cos(2*pi*ky)*cos(6*pi*kz) + a400*cos(8*pi*kx)\
+ a040*cos(8*pi*ky) + a004*cos(8*pi*kz) + d112*sin(2*pi*kx)*sin(2*pi*ky)*cos(4*pi*kz)\
+ d130*sin(2*pi*kx)*sin(6*pi*ky) + d310*sin(6*pi*kx)*sin(2*pi*ky)\
+ d220*sin(4*pi*kx)*sin(4*pi*ky) + d211*sin(4*pi*kx)*sin(2*pi*ky)*cos(2*pi*kz)\
+ d121*sin(2*pi*kx)*sin(4*pi*ky)*cos(2*pi*kz) + f211*sin(4*pi*kx)*cos(2*pi*ky)*sin(2*pi*kz)\
+ f121*sin(2*pi*kx)*cos(4*pi*ky)*sin(2*pi*kz) + f112*sin(2*pi*kx)*cos(2*pi*ky)*sin(4*pi*kz)\
+ f103*sin(2*pi*kx)*sin(6*pi*kz) + f301*sin(6*pi*kx)*sin(2*pi*kz) + f202*sin(4*pi*kx)*sin(4*pi*kz)\
+ g211*cos(4*pi*kx)*sin(2*pi*ky)*sin(2*pi*kz) + g121*cos(2*pi*kx)*sin(4*pi*ky)*sin(2*pi*kz)\
+ g112*cos(2*pi*kx)*sin(2*pi*ky)*sin(4*pi*kz) + g013*sin(2*pi*ky)*sin(6*pi*kz) + g031*sin(6*pi*ky)*sin(2*pi*kz)\
+ g022*sin(4*pi*ky)*sin(4*pi*kz)


fit [kx = -0.5:0.5] [ky = -0.5:0.5] [kz = -0.5:0.5] f(kx, ky, kz) 'conduction-band.dat' using 1:2:3:5 \
via a000, a100, a010, a001, a110, a101, a011, a200, a020, a002, d110, \
f101, g011, a111, a210, a201, a021, a120, a102, a012, a300, a030, a003, d111, d120, d210, \
f111, f201, f102, g111, g021, g012, a211, a121, a112, a202, a220, a022, a310, a301, a031, \
a130, a103, a013, a400, a040, a004, d112, d130, d310, d220, d211, d121, f211, f121, f112, f103, f301, f202, \
g211, g121, g112, g013, g031, g022

plot 'conduction-band.dat' using ($1 == 0 && $3==$2 && $2>=0 ? $2:1/0):($5),\
'' using ($2 == 0 && $1==-$3 && $3<=0 ? $3:1/0):($5),\
'' using ($1 == 0 && $3==$2 && $2>=0 ? $2:1/0):(f($1, $2, $3)),\
'' using ($2 == 0 && $1==-$3 && $3<=0 ? $3:1/0):(f($1, $2, $3))

set print "conduction_band_selected_data_up.txt"
do for [x=0:50:5] {print 0, 0.01*x, 0.01*x, f(0, 0.01*x, 0.01*x)}
do for [x=0:50:5] {print 0.01*x, 0, -0.01*x, f(0.01*x, 0, -0.01*x)}

set xlabel 'L-GAMMA-Z'
set ylabel 'Energy'
