日记
标签(空格分隔): 日记
2017/12/26
Neumann's Principle in polarizability tensor
今天的主要工作是看Neumann's Principle in polarizability tensor,这篇文章主要讲Neumann principle在计算不同角度光吸收的时候通过寻找对称性来减少计算的次数。中心思想是先计算对于三个线性相关却不正交的轴,得到 ,然后通过旋转矩阵
[图片上传失败...(image-e7613c-1539153640933)]
得到正常的张量,在计算的时候引入线性无关但却不正交但是跟随对称性的轴
能带对不上的问题大致找到原因
在计算的能带的时候一直碰到问题就是在使用paw贋势和bylp贋势的时候能带能跟文献中的对上,但是使用模守恒贋势怎么都对不上,今天发现应该是晶格长度的原因,在计算模守恒的时候对晶格长度进行了优化,得到最稳定的晶格长度,但是文献里边使用的都是网上的没有优化的晶格长度,所以优化过后的结构虽然声子谱比较稳定但是能带结构里边始终没有electron pocket和hole pocket
Na-18 吸收谱趋势相同但是有一个能量的shift
今天计算的结果里边发现使用
分别计算TDDirection = 1 & TDDierection = 2
然后合在一起和使用
效果是一样的,考虑能量的shift可能是由于吸收边的问题,于是把AbsorbingBoundary从mask 改成了 noAbsorbing
2017/12/27 发现不是吸收变的问题,改了以后依然是相同的结果,询问师姐,师姐认为可能是数据手动shift了一下,因为对于吸收谱大家更关心相对值而不关心绝对值
2017/12/27
python中离散数据点曲线求极值问题
今天碰到一个问题,就是吸收谱曲线需要提取极值的问题,如果曲线里边只有一个最大值的话,可以用max()直接得出然后把极值点画出来
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Tue Dec 19 14:55:41 2017
@author: cris
"""
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
np.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:
continue
else:
line = line.split()
tot_e = np.concatenate((tot_e,line))
size=len(tot_e)
a = 4
raw = 5
col = size/raw
tot_e = tot_e.astype(float)
tot_e = tot_e.reshape(col,raw)
shift = np.ones(2001)*i*4
tot_e = np.transpose(tot_e)
tot_e[a] = tot_e[a]+shift
plt.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:
continue
else:
line = line.split()
tot_e = np.concatenate((tot_e,line))
size=len(tot_e)
a = 4
raw = 5
col = size/raw
tot_e = tot_e.astype(float)
tot_e = tot_e.reshape(col,raw)
shift = np.ones(2001)*i*4
tot_e = np.transpose(tot_e)
tot_e[a] = tot_e[a]+shift
plt.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.01
plt.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 |
---|---|
于是能带变成了这样,这里使用的方法,得到的能带图形状上基本对上了,但是费米能级有些问题
考虑可能是的问题于是换成结果就跟文献上差不多了
网友评论