学术源码, 态密度和输运

Kwant库中常用的模块和方法

刚开始使用这个库的时候,需要记很多函数,而且要按照文档中的规则来组建系统。之前多次想放弃使用,感觉自己去写原始代码心里会更踏实点。之后在文献中又多次看到别人在使用这个Kwant库,觉得还是可以入手试试,毕竟如果学会了,调用函数计算一些物理量或画一些图还是比较方便的。

入门例子可参考博文:

这里整理了一些常用的Kwant库方法,内容不全,主要是参照官方的API文档: https://kwant-project.org/doc/

Kwant里有六个核心模块:

  1. kwant.builder
  2. kwant.lattice
  3. kwant.plotter
  4. kwant.solvers
  5. kwant.operator
  6. kwant.physics

这六个模块中有一些方法比较常用,被定义为高级的方法 (Top level package),可以用kwant直接调用。这里列出来:

  1. kwant.builder.Builder可以直接写成kwant.Builder。
  2. kwant.lattice.TranslationalSymmetry可以直接写成 kwant.TranslationalSymmetry 。
  3. kwant.plotter.plot可以直接写成kwant.plot。
  4. kwant.solvers.default中的有:
    • kwant.solvers.default.greens_function可以直接写成kwant.greens_function;
    • kwant.solvers.default.ldos可以直接写成kwant.ldos;
    • kwant.solvers.default.smatrix可以直接写成kwant.smatrix;
    • kwant.solvers.default.wave_function可以直接写成kwant.wave_function。

每个模块中都有很多内容,这边只做个简单笔记,不定期更新和补充。

1. kwant.builder

该模块是整个体系的最高级别(High-level construction of systems)。

(1)kwant.builder.Builder(或kwant.Builder)

  • syst = kwant.Builder() # 定义一个Builder对象
  • syst.attach_lead() # Builder对象的attach_lead方法,加电极
  • syst = syst.finalized() # Builder对象的finalized方法,返回可解的样本
  • syst.hamiltonian_submatrix() # 获取哈密顿量

(2)kwant.builder.Site

(3)kwant.builder.HoppingKind

(4)kwant.builder.SimpleSiteFamily

(5)kwant.builder.BuilderLead

(6)kwant.builder.SelfEnergyLead

(7)kwant.builder.ModesLead

2. kwant.lattice

该模块用来制作布拉菲格子 (Bravais lattices)。

(1)kwant.lattice.TranslationalSymmetry ( 或kwant.TranslationalSymmetry )

(2)kwant.lattice.general

(3)kwant.lattice.Monatomic

(4)kwant.lattice.Polyatomic

此外,Kwant库提供了几个现成的布拉菲格子 (library of lattices):

  • kwant.lattice.chain 一维链
  • kwant.lattice.square 方格子
  • kwant.lattice.cubic 立方格子
  • kwant.lattice.triangular 三角格子
  • kwant.lattice.honeycomb 蜂窝格子
  • kwant.lattice.kagome 笼目格子

3. kwant.plotter

该模块用来画图(Plotting of systems)。

(1)kwant.plotter.plot(或kwant.plot)

(2)kwant.plotter.map

(3)kwant.plotter.current

(4)kwant.plotter.bands

(5)kwant.plotter.spectrum

(6)kwant.plotter.streamplot

4. kwant.solvers

该模块是计算一些物理量的库(Library of solvers)

(1)kwant.solvers.default.smatrix(或kwant.smatrix)

(2)kwant.solvers.default.greens_function(或kwant. greens_function)

(3)kwant.solvers.default.wave_function(或kwant. wave_function)

(4)kwant.solvers.default.ldos(或kwant.ldos)

(5)kwant.solvers.common.SMatrix

(6)kwant.solvers.common.GreensFunction

5. kwant.operator

该模块计算一些算符和可观测量(Operators and Observables)。

(1)kwant.operator.Density

(2)kwant.operator.Current

(3)kwant.operator.Source

6. kwant.physics

该模块包括了一些和物理有关的算法(Physics-related algorithms)。

(1)kwant.physics.Bands

(2)kwant.physics.modes

(3)kwant.physics.selfenergy

(4)kwant.physics.two_terminal_shotnoise

(5)kwant.physics.PropagatingModes

(6)kwant.physics.StabilizedModes

【未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

4,001 次浏览

2 thoughts on “Kwant库中常用的模块和方法”

  1. 您好我想请教一下怎么用kwant构造具有一定夹角的双层晶格结构。比如具有一定夹角两层正方晶格形成的新的晶格。

    1. 我觉得关键是要确定两层之间的跃迁形式。不同角度的双层晶格构造是需要费点时间和精力,比如用kwant.lattice.general构造超胞,参考这个例子:https://kwant-project.org/doc/1/tutorial/graphene

      第二层的坐标可以通过第一层坐标的旋转(旋转矩阵的作用)得到,坐标的旋转可以参考这篇:画转角石墨烯示意图(附python代码)

      我没怎么用软件,不是很熟悉,以上是个人见解,不一定合理或正确,仅作参考。

发表评论

您的电子邮箱地址不会被公开。