[关闭]
@sculxb 2017-12-27T12:00:56.000000Z 字数 3230 阅读 1099

日记

日记


2017/12/26

Neumann's Principle in polarizability tensor

今天的主要工作是看Neumann's Principle in polarizability tensor,这篇文章主要讲Neumann principle在计算不同角度光吸收的时候通过寻找对称性来减少计算的次数。中心思想是先计算对于三个线性相关却不正交的轴,得到 ,然后通过旋转矩阵


得到正常的张量,在计算的时候引入线性无关但却不正交但是跟随对称性的轴

能带对不上的问题大致找到原因

在计算的能带的时候一直碰到问题就是在使用paw贋势和bylp贋势的时候能带能跟文献中的对上,但是使用模守恒贋势怎么都对不上,今天发现应该是晶格长度的原因,在计算模守恒的时候对晶格长度进行了优化,得到最稳定的晶格长度,但是文献里边使用的都是网上的没有优化的晶格长度,所以优化过后的结构虽然声子谱比较稳定但是能带结构里边始终没有electron pocket和hole pocket

Na-18 吸收谱趋势相同但是有一个能量的shift

今天计算的结果里边发现使用

分别计算TDDirection = 1 & TDDierection = 2 然后合在一起和使用

效果是一样的,考虑能量的shift可能是由于吸收边的问题,于是把AbsorbingBoundarymask 改成了 noAbsorbing
2017/12/27 发现不是吸收变的问题,改了以后依然是相同的结果,询问师姐,师姐认为可能是数据手动shift了一下,因为对于吸收谱大家更关心相对值而不关心绝对值

2017/12/27

python中离散数据点曲线求极值问题

今天碰到一个问题,就是吸收谱曲线需要提取极值的问题,如果曲线里边只有一个最大值的话,可以用max()直接得出然后把极值点画出来

  1. #!/usr/bin/env python2
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Tue Dec 19 14:55:41 2017
  5. @author: cris
  6. """
  7. import numpy as np
  8. import matplotlib.pyplot as plt
  9. from scipy.optimize import curve_fit
  10. np.set_printoptions(threshold=np.NaN)
  11. plt.rcParams['font.sans-serif']=['Abyssinica SIL']
  12. longititude_mode = []
  13. longititude_mode_index = np.array([])
  14. #plt.subplot(211)
  15. for i in range(1,18):
  16. tot_e = np.array([])
  17. tot_e_dat = open('../../file/tmp/cross_section_vector.'+str(i))
  18. # 叠加模块
  19. plasmon = open('../../file/tmp/cross_section_tensor-2.'+str(i))
  20. for line in plasmon.readlines():
  21. if '#' in line:
  22. continue
  23. else:
  24. line = line.split()
  25. tot_e = np.concatenate((tot_e,line))
  26. size=len(tot_e)
  27. a = 4
  28. raw = 5
  29. col = size/raw
  30. tot_e = tot_e.astype(float)
  31. tot_e = tot_e.reshape(col,raw)
  32. shift = np.ones(2001)*i*4
  33. tot_e = np.transpose(tot_e)
  34. tot_e[a] = tot_e[a]+shift
  35. plt.plot(tot_e[0],tot_e[a],'-',color='k')
  36. # maximum = curve_fit(gaussian,tot_e[0],tot_e[a])
  37. # p1 = np.poly1d(maximum)
  38. # yvals=p1(tot_e[0])
  39. # plt.plot(tot_e[0],yvals,'-')
  40. tot_e = np.array([])
  41. #叠加模块
  42. for line in tot_e_dat.readlines():
  43. if '#' in line:
  44. continue
  45. else:
  46. line = line.split()
  47. tot_e = np.concatenate((tot_e,line))
  48. size=len(tot_e)
  49. a = 4
  50. raw = 5
  51. col = size/raw
  52. tot_e = tot_e.astype(float)
  53. tot_e = tot_e.reshape(col,raw)
  54. shift = np.ones(2001)*i*4
  55. tot_e = np.transpose(tot_e)
  56. tot_e[a] = tot_e[a]+shift
  57. plt.plot(tot_e[0],tot_e[a],'-',color='k')
  58. longititude_mode.append(max(tot_e[a]))
  59. # tot_e[a].tolist()
  60. # print index()
  61. longititude_mode_index=np.append(longititude_mode_index,(np.argmax(tot_e[a])))
  62. plt.xticks(fontsize=15,rotation=40)
  63. plt.yticks(fontsize=15)
  64. plt.axis([0,4,0,150])
  65. ax=plt.gca()
  66. ax.get_yaxis().set_tick_params(direction='in', width=1)
  67. ax.get_xaxis().set_tick_params(direction='in', width=1)
  68. plt.savefig('../../graph/sodium-18-absorb.jpeg',dpi=150)
  69. plt.show()
  70. plt.plot(longititude_mode,'o-',mfc='none')
  71. plt.savefig('../../graph/sodium-18-strength.jpeg',dpi=150)
  72. longititude_mode_index=longititude_mode_index*0.01
  73. plt.show()
  74. plt.plot(longititude_mode_index,'o-',mfc='none')
  75. plt.axis([0,17,0,4])
  76. plt.savefig('../../graph/sodium-18-energy.jpeg',dpi=150)

这里碰到的问题,使用多项式拟合效果很差,试图使用高斯波包来拟合,高斯比较容易拟合一个峰,但是对于多峰曲线却无能为力。

关于能带问题

今天计算能带,发现对于模守恒贋势,使用 Å得到的结果是这样的
此处输入图片的描述

可以看出来虽然M点对上了,但是点明显有问题,于是考虑应该是贋势的问题,于是换用

Te Se

于是能带变成了这样,这里使用的方法,得到的能带图形状上基本对上了,但是费米能级有些问题
此处输入图片的描述

考虑可能是的问题于是换成结果就跟文献上差不多了
此处输入图片的描述

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注