QTCAD Python API は3つの基本的なシミュレーターパッケージで構成されます:
qtcad.device)qtcad.transport)qtcad.qubit)言い換えれば、デバイスシミュレーターは現実の構造を基にハミルトニアンと波動関数を他の2つのシミュレーターに提供します。ゆえに、デバイスシミュレーターはQTCADの中心的なコンポーネントで、始めに慣れ親しむ必要があります。
Python API には、それぞれのシミュレーターに対応したPython パッケージが存在します。これらのパッケージはそれぞれdevice, transport, qubit パッケージと呼ばれます。
デバイスシミュレーターは5つのカテゴリーに分類されるいくつかのモジュールがあります。
qtcad.device.mesh1dqtcad.device.mesh2dqtcad.device.mesh3dこれらのモジュールはそれぞれ 1D, 2D, 3D メッシュを定義するのに使用します。メッシュは Gmsh ファイル .msh2 を読み込んで作成します。
qtcad.device.deviceデバイスクラスはQTCADシミュレーションの中心的なデータ構造です。デバイスオブジェクトはメッシュ全体で定義された関連するすべての物理パラメータ(例:有効質量、誘電率)にアクセスでき、物理モデルを解くことによって得られる変数(例:静電ポテンシャル、キャリア密度、波動関数)を持ちます。
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 クラスを持っており、そのインスタンスには反復の公差や最大回数などのさまざまなソルバーパラメータが存在します。これらのパラメータはユーザーによってデフォルト値から変更できます。
qtcad.device.constants: 真空の誘電率やプランク定数などの物理定数qtcad.device.materials: 材料とその属性qtcad.device.quantum: 多体物理で便利な基礎量子理論のオブジェクトおよび演算子が利用できますqtcad.device.kp: 正孔の有効シュレーディンガー方程式を解くのに使用されるさまざまな \(\mathbf k \cdot \mathbf p\) モデルが利用できますqtcad.device.operators: デバイスの一粒子固有基底の演算子の行列形式を計算するクラスが利用できますこれらの補助モジュールはデバイスもしくはデバイスで定義されたソルバーのパラメータで指定されます。
qtcad.device.analysis: 数値をプロットしたり、スライスやラインカットなどを作成できますqtcad.device.io: 数値を .hdf5 や .vtu 形式で保存したり、読み込みすることができます輸送シミュレーターはデバイスシミュレーターを基にして、デバイスと外部リードを接続し、系で発生する電流を計算できます。
輸送シミュレーターは5つのモジュールで構成されます。
qtcad.transport.lead: 量子ドットデバイスと接続する電子リザーバーを表現する Lead クラスと WKBLead クラスを定義しますqtcad.transport.junction: 量子ドットデバイスと結合するリードで構成される系を定義し、ドット領域内部の多体問題を解きますqtcad.transport.mastereq: ジャンクションの電流を計算する支配方程式ソルバーが利用できますqtcad.transport.wkb: 1D ポテンシャル障壁の WKB 透過係数を計算する機能がありますqtcad.transport.negf_poisson: デバイスの弾道輸送領域で発生する電流を計算する自己無撞着ポアソンおよび非平衡グリーン関数 (NEGF) ソルバーが利用できます量子ビットシミュレーターはデバイスシミュレーターに基づき、時間依存支配方程式ソルバー QuTiP へのインターフェースを提供します。
量子ビットシミュレーターは4つのモジュールで構成されます。
qtcad.qubit.EDSR: 系を計算し、スピン軌道相互作用(Rashbaスピン軌道相互作用またはマイクロ磁石に由来する)とゲートに印加された変調電圧によって発生する電場を考慮した電子のハミルトニアンを駆動するクラスとモジュールが利用できますqtcad.qubit.dynamics: 量子ビットダイナミクスおよびゲート忠実度を計算するメソッドが利用できますqtcad.qubit.noise: ノイズ影響下での二準位系のダイナミクスを計算するメソッドが利用できますqtcad.qubit.spectra: いくつかの一般的なノイズスペクトルが定義されています