@sculxb
2017-12-27T12:00:56.000000Z
字数 3230
阅读 1418
日记
今天的主要工作是看Neumann's Principle in polarizability tensor,这篇文章主要讲Neumann principle在计算不同角度光吸收的时候通过寻找对称性来减少计算的次数。中心思想是先计算对于三个线性相关却不正交的轴,得到 ,然后通过旋转矩阵
在计算的能带的时候一直碰到问题就是在使用paw贋势和bylp贋势的时候能带能跟文献中的对上,但是使用模守恒贋势怎么都对不上,今天发现应该是晶格长度的原因,在计算模守恒的时候对晶格长度进行了优化,得到最稳定的晶格长度,但是文献里边使用的都是网上的没有优化的晶格长度,所以优化过后的结构虽然声子谱比较稳定但是能带结构里边始终没有electron pocket和hole pocket
今天计算的结果里边发现使用
分别计算TDDirection = 1 & TDDierection = 2 然后合在一起和使用
效果是一样的,考虑能量的shift可能是由于吸收边的问题,于是把AbsorbingBoundary从mask 改成了 noAbsorbing
2017/12/27 发现不是吸收变的问题,改了以后依然是相同的结果,询问师姐,师姐认为可能是数据手动shift了一下,因为对于吸收谱大家更关心相对值而不关心绝对值
今天碰到一个问题,就是吸收谱曲线需要提取极值的问题,如果曲线里边只有一个最大值的话,可以用max()直接得出然后把极值点画出来
#!/usr/bin/env python2# -*- coding: utf-8 -*-"""Created on Tue Dec 19 14:55:41 2017@author: cris"""import numpy as npimport matplotlib.pyplot as pltfrom scipy.optimize import curve_fitnp.set_printoptions(threshold=np.NaN)plt.rcParams['font.sans-serif']=['Abyssinica SIL']longititude_mode = []longititude_mode_index = np.array([])#plt.subplot(211)for i in range(1,18):tot_e = np.array([])tot_e_dat = open('../../file/tmp/cross_section_vector.'+str(i))# 叠加模块plasmon = open('../../file/tmp/cross_section_tensor-2.'+str(i))for line in plasmon.readlines():if '#' in line:continueelse:line = line.split()tot_e = np.concatenate((tot_e,line))size=len(tot_e)a = 4raw = 5col = size/rawtot_e = tot_e.astype(float)tot_e = tot_e.reshape(col,raw)shift = np.ones(2001)*i*4tot_e = np.transpose(tot_e)tot_e[a] = tot_e[a]+shiftplt.plot(tot_e[0],tot_e[a],'-',color='k')# maximum = curve_fit(gaussian,tot_e[0],tot_e[a])# p1 = np.poly1d(maximum)# yvals=p1(tot_e[0])# plt.plot(tot_e[0],yvals,'-')tot_e = np.array([])#叠加模块for line in tot_e_dat.readlines():if '#' in line:continueelse:line = line.split()tot_e = np.concatenate((tot_e,line))size=len(tot_e)a = 4raw = 5col = size/rawtot_e = tot_e.astype(float)tot_e = tot_e.reshape(col,raw)shift = np.ones(2001)*i*4tot_e = np.transpose(tot_e)tot_e[a] = tot_e[a]+shiftplt.plot(tot_e[0],tot_e[a],'-',color='k')longititude_mode.append(max(tot_e[a]))# tot_e[a].tolist()# print index()longititude_mode_index=np.append(longititude_mode_index,(np.argmax(tot_e[a])))plt.xticks(fontsize=15,rotation=40)plt.yticks(fontsize=15)plt.axis([0,4,0,150])ax=plt.gca()ax.get_yaxis().set_tick_params(direction='in', width=1)ax.get_xaxis().set_tick_params(direction='in', width=1)plt.savefig('../../graph/sodium-18-absorb.jpeg',dpi=150)plt.show()plt.plot(longititude_mode,'o-',mfc='none')plt.savefig('../../graph/sodium-18-strength.jpeg',dpi=150)longititude_mode_index=longititude_mode_index*0.01plt.show()plt.plot(longititude_mode_index,'o-',mfc='none')plt.axis([0,17,0,4])plt.savefig('../../graph/sodium-18-energy.jpeg',dpi=150)
这里碰到的问题,使用多项式拟合效果很差,试图使用高斯波包来拟合,高斯比较容易拟合一个峰,但是对于多峰曲线却无能为力。
今天计算能带,发现对于模守恒贋势,使用 得到的结果是这样的

可以看出来虽然M点对上了,但是点明显有问题,于是考虑应该是贋势的问题,于是换用
| Te | Se |
|---|---|
于是能带变成了这样,这里使用的方法,得到的能带图形状上基本对上了,但是费米能级有些问题

考虑可能是的问题于是换成结果就跟文献上差不多了
