费米表面图

时间:2014-08-15 03:49:31

标签: python numpy 3d interpolation surface

基本上我正在尝试用2D做一个Fermi Surface图。即,对于K空间中的某个平面,具有插值的f(n,vec_k)= e_f的2D切割。具体来说,我有一个numpy数组:Eigen,有形状,

Eigen.shape =(100,100,100,10),其中前三个索引在矢量vec_k上,第三个是波段索引'n'。如何在任意表面上进行切割Eigen == e_f,其中e_f是标量数?

1 个答案:

答案 0 :(得分:2)

这通常使用行进立方体算法来解决。您应该在此contour3d()查看MLab的{​​{1}}函数:http://docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html#mayavi.mlab.contour3d。这完全符合你的要求。

contour3d(Eigen[:,:,:, bandNo], contours=e_f)

应该为你做。您还可以为所有波段指定多个曲面,如下所示:

for bandNo in range(totalBands):
    contour3d(Eigen[:,:,:, bandNo], contours=[eF1, eF2, eF3], opacity=0.4)

你应该得到这样的情节:http://docs.enthought.com/mayavi/mayavi/_images/enthought_mayavi_mlab_contour3d1.jpg