日本語 English
株式会社ヒューリンクス
TEL:03-5642-8384
営業時間:9:00-17:30

1. QTCAD API の構造

QTCAD Python API は3つの基本的なシミュレーターパッケージで構成されます:

  • 任意の 1D, 2D, 3D 構造におけるさまざまな古典および量子力学モデルを解くためのデバイスシミュレーター (qtcad.device)
  • デバイスシミュレーターによって定義されたリードと量子系のジャンクションに発生する電流を検知する輸送シミュレーター (qtcad.transport)
  • デバイスシミュレーターの結果で定義される量子系の動的発展を解くための量子ビットシミュレーター (qtcad.qubit)

言い換えれば、デバイスシミュレーターは現実の構造を基にハミルトニアンと波動関数を他の2つのシミュレーターに提供します。ゆえに、デバイスシミュレーターはQTCADの中心的なコンポーネントで、始めに慣れ親しむ必要があります。

Python API には、それぞれのシミュレーターに対応したPython パッケージが存在します。これらのパッケージはそれぞれdevice, transport, qubit パッケージと呼ばれます。

1.1. デバイスシミュレーター

デバイスシミュレーターは5つのカテゴリーに分類されるいくつかのモジュールがあります。

1.1.1. メッシュモジュール

  • qtcad.device.mesh1d
  • qtcad.device.mesh2d
  • qtcad.device.mesh3d

これらのモジュールはそれぞれ 1D, 2D, 3D メッシュを定義するのに使用します。メッシュは Gmsh ファイル .msh2 を読み込んで作成します。

1.1.2. デバイスモジュール

  • qtcad.device.device

デバイスクラスはQTCADシミュレーションの中心的なデータ構造です。デバイスオブジェクトはメッシュ全体で定義された関連するすべての物理パラメータ(例:有効質量、誘電率)にアクセスでき、物理モデルを解くことによって得られる変数(例:静電ポテンシャル、キャリア密度、波動関数)を持ちます。

1.1.3. ソルバーモジュール

  • qtcad.device.poisson_linear: 線形ポアソン方程式ソルバー
  • qtcad.device.poisson: 古典キャリアリザーバーを考慮して電荷密度と静電ポテンシャルを自己無撞着に計算する非線形ポアソン方程式ソルバー
  • qtcad.device.schrodinger: 一電子もしくは一正孔有効シュレーディンガー方程式ソルバー
  • qtcad.device.strain: 電子構造の緩和によってひずみ誘起を考慮したシュレーディンガー方程式ソルバーの亜種
  • qtcad.device.multivalley_EMT: 急激な閉じ込めポテンシャルの変化から生じるバレーカップリングを計算するマルチバレー有効質量理論のためのソルバー
  • qtcad.device.leverarm: ポアソンおよびシュレーディンガーソルバーに基づく単一量子ドットゲートのレバーアーム計算ツール
  • qtcad.device.leverarm_matrix: ポアソンおよびシュレーディンガーソルバーに基づき複数の量子ドットを持つ系に作用するゲートのレバーアーム行列を計算するより一般的なツール
  • qtcad.device.schrodinger_poisson: 電子もしくは正孔ガスを量子力学で扱うための自己無撞着シュレーディンガー–ポアソンソルバー
  • qtcad.device.quantum_well: 電子もしくは正孔ガスが一次元の量子閉じ込めを示す場合の3D自己無撞着シュレーディンガー–ポアソンソルバーの亜種
  • qtcad.device.many_body: 量子閉じ込め構造における電子または正孔間のクーロン相互作用を考慮した多体シュレーディンガー方程式のためのソルバー

これらのモジュールには Device オブジェクトで定義された Solver クラスが存在します。これらのソルバーでは求めたい変数を解く数学的な問題を定義するためのデバイス属性を使用します。例えば、poisson_linear モジュールの Solver オブジェクトは誘電率 \(\varepsilon\)、電荷密度 \(\rho\)、境界条件を与えることで線形ポアソン方程式 \(\nabla(\varepsilon\nabla\varphi)=-\rho\) を解くことができます。このような解法は一般に関連する Solver オブジェクトの solve メソッド呼ぶことで見つけることができます。その方程式を解いた後は、結果は Solver オブジェクトがインスタンス化されたデバイスに保存されます。

加えて、上記のソルバーモジュールは SolverParams クラスを持っており、そのインスタンスには反復の公差や最大回数などのさまざまなソルバーパラメータが存在します。これらのパラメータはユーザーによってデフォルト値から変更できます。

1.1.4. 補助モジュール

  • qtcad.device.constants: 真空の誘電率やプランク定数などの物理定数
  • qtcad.device.materials: 材料とその属性
  • qtcad.device.quantum: 多体物理で便利な基礎量子理論のオブジェクトおよび演算子が利用できます
  • qtcad.device.kp: 正孔の有効シュレーディンガー方程式を解くのに使用されるさまざまな \(\mathbf k \cdot \mathbf p\) モデルが利用できます
  • qtcad.device.operators: デバイスの一粒子固有基底の演算子の行列形式を計算するクラスが利用できます

これらの補助モジュールはデバイスもしくはデバイスで定義されたソルバーのパラメータで指定されます。

1.1.5. 後処理モジュール

  • qtcad.device.analysis: 数値をプロットしたり、スライスやラインカットなどを作成できます
  • qtcad.device.io: 数値を .hdf5.vtu 形式で保存したり、読み込みすることができます

1.2. 輸送シミュレーター

輸送シミュレーターはデバイスシミュレーターを基にして、デバイスと外部リードを接続し、系で発生する電流を計算できます。

輸送シミュレーターは5つのモジュールで構成されます。

  • qtcad.transport.lead: 量子ドットデバイスと接続する電子リザーバーを表現する Lead クラスと WKBLead クラスを定義します
  • qtcad.transport.junction: 量子ドットデバイスと結合するリードで構成される系を定義し、ドット領域内部の多体問題を解きます
  • qtcad.transport.mastereq: ジャンクションの電流を計算する支配方程式ソルバーが利用できます
  • qtcad.transport.wkb: 1D ポテンシャル障壁の WKB 透過係数を計算する機能があります
  • qtcad.transport.negf_poisson: デバイスの弾道輸送領域で発生する電流を計算する自己無撞着ポアソンおよび非平衡グリーン関数 (NEGF) ソルバーが利用できます

1.3. 量子ビットシミュレーター

量子ビットシミュレーターはデバイスシミュレーターに基づき、時間依存支配方程式ソルバー QuTiP へのインターフェースを提供します。

量子ビットシミュレーターは4つのモジュールで構成されます。

  • qtcad.qubit.EDSR: 系を計算し、スピン軌道相互作用(Rashbaスピン軌道相互作用またはマイクロ磁石に由来する)とゲートに印加された変調電圧によって発生する電場を考慮した電子のハミルトニアンを駆動するクラスとモジュールが利用できます
  • qtcad.qubit.dynamics: 量子ビットダイナミクスおよびゲート忠実度を計算するメソッドが利用できます
  • qtcad.qubit.noise: ノイズ影響下での二準位系のダイナミクスを計算するメソッドが利用できます
  • qtcad.qubit.spectra: いくつかの一般的なノイズスペクトルが定義されています