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
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
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:
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:
In Tempura, dielectric layers are assigned Neumann conditions by default.
Helmholtz
The Helmholtz condition adds a linear response term:
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
helmholtzis the default for the linear gate-basis workflow.flexiblekeeps the same geometric region but leaves the response model open for later code to control.neumanntreats theTwoDEGas 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.