Skip to content

Theory

This page summarizes the physical model used by the current Tempura Poisson workflow and the assumptions behind the gate-basis solve.

Continuum Model

Tempura models the electrostatic potential \(\phi(\mathbf{r})\) with

\[ -\nabla \cdot \bigl(\varepsilon(\mathbf{r}) \nabla \phi(\mathbf{r})\bigr) = \rho(\mathbf{r}), \]

where \(\varepsilon(\mathbf{r})\) is the spatially varying permittivity and \(\rho(\mathbf{r})\) is the charge density.

In Tempura, the layer stack defines the geometry and the material map \(\varepsilon(\mathbf{r})\). pescado then turns that finalized geometry into a mesh and assembles the sparse linear system solved by the electrostatics code.

For a fixed device and a fixed linear response law, the discrete problem has the form

\[ A x = b, \]

with one sparse matrix \(A\) and many possible right-hand sides \(b\) coming from different gate voltages.

Boundary Conditions In Practice

Tempura uses four boundary-condition classes during problem assembly.

Dirichlet

Dirichlet regions have prescribed potential:

\[ \phi = \phi_0. \]

In the current workflow, Dirichlet conditions are used for:

  • the outer vacuum shell, which is grounded;
  • metal gates, which are set to prescribed voltages during basis solves.

Neumann

Neumann regions have prescribed normal flux:

\[ \hat{\mathbf{n}} \cdot \bigl(\varepsilon \nabla \phi\bigr) = g. \]

In Tempura, dielectric layers are assigned Neumann conditions by default.

Helmholtz

The Helmholtz condition adds a linear response term:

\[ \hat{\mathbf{n}} \cdot \bigl(\varepsilon \nabla \phi\bigr) + \alpha \phi = \beta. \]

This is the default model for TwoDEG. Physically, it lets the TwoDEG respond linearly to the local potential while keeping the overall Poisson solve linear.

Flexible

Flexible regions are placeholders whose boundary model can be reassigned later. This is useful for workflows that start from the same TwoDEG geometry but switch to a self-consistent solve rather than using the default linear Helmholtz response.

How to read TwoDEG.boundary_condition

  • helmholtz is the default for the linear gate-basis workflow.
  • flexible keeps the same geometric region but leaves the response model open for later code to control.
  • neumann treats the TwoDEG as a passive region with no linear response term.

Gate-Basis Solve

solve_gate_potentials(...) computes one unit-voltage basis solution per gate. For a chosen gate \(i\), the solve sets:

  • gate \(i\) to \(1\,\mathrm{V}\);
  • all other gates to \(0\,\mathrm{V}\);
  • the outer boundary to \(0\,\mathrm{V}\).

Because the problem is linear, later gate configurations can be assembled by linear superposition of those basis fields. That is why the workflow is fast: the geometry assembly and matrix factorization are done once, and extra gate configurations only change the right-hand side.

When superposition stops being valid

The basis workflow assumes fixed geometry, fixed material properties, and a linear response law. If the TwoDEG response becomes self-consistent, voltage-dependent, or otherwise nonlinear, the basis fields are no longer a complete description of the device response.

Implementation Note

The finalized Pescado system matrix is exposed as problem.capacitance_matrix. Gate and boundary nodes are Dirichlet-constrained, so Tempura rewrites the system into an equivalent symmetry-preserving form before factorization:

  • Dirichlet rows are zeroed;
  • Dirichlet columns are zeroed;
  • Dirichlet diagonal entries are set to 1;
  • the removed coupling term is shifted to the right-hand side.

That rewritten matrix is then factored once with MUMPS and reused for multiple right-hand sides. solve_gate_potentials(...) solves those right-hand sides in blocks so large gate sets do not require all RHS columns to be materialized at once.

For worked layout-backed workflows, see Triple Quantum Dot and Minimal Kitaev Chain.