Flux Trapping and Kinetic Inductance
Problem description
This example demonstrates Palace's flux boundary conditions for the magnetostatic analysis of thin-film superconducting structures with holes. Fixed amounts of magnetic flux are prescribed through the holes, and the solver extracts the resulting field distribution together with the loop inductance matrix — including the kinetic contribution of a finite-penetration-depth London film.
Flux is imposed as an integral (fluxoid) constraint on each hole perimeter,
\[\oint_h \mathbf{A} \cdot d\boldsymbol{\ell} = \Phi,\]
where $\mathbf{A}$ is the magnetic vector potential and $\Phi$ the prescribed flux through hole $h$. For each hole a curl-free cohomology generator $\mathbf{a}_h$ with loop circulation $\Phi$ is constructed on the 3D mesh (a discrete gradient with a $\Phi$-jump across a cut surface spanning the hole). The magnetostatic system is then solved with $\mathbf{a}_h$ as the drive, pinning the fluxoid $\oint_h (\mathbf{A} + L_{\mathrm{ksq}}\mathbf{K}_s)\cdot d\boldsymbol{\ell} = \Phi$ (with sheet current $\mathbf{K}_s = -(\mathbf{A}_t - \mathbf{a}_h)/L_{\mathrm{ksq}}$) exactly, gauge-invariantly, and independently of the mesh partition. At finite $\lambda$ the magnetic flux $\oint_h \mathbf{A}\cdot d\boldsymbol{\ell}$ is screened below $\Phi$; only the fluxoid is pinned, so the shielding currents remain free to redistribute near the hole.
Whether a film screens perfectly or penetrates is set by how its attribute is declared:
Perfect conductor ($\lambda \to 0$). A film attribute listed under
"FilmAttributes"only is treated as a perfect screen: the flux-expulsion condition $\mathbf{B}\cdot\mathbf{n} = 0$ holds together with the fluxoid, and the extracted inductance is purely geometric.London film (finite $\lambda$). A film attribute listed also under
"Superconductor"carries the shifted London sheet penalty\[\tfrac{1}{2}\int_\Sigma \frac{1}{L_{\mathrm{ksq}}}\,\lvert \mathbf{A}_t - \mathbf{a}_h\rvert^2\,dS, \qquad L_{\mathrm{ksq}} = \mu_0 \lambda \coth\!\left(\frac{d}{\lambda}\right),\]
where $\lambda$ (
"PenetrationDepth") is the penetration depth and $d$ ("Thickness") the film thickness. This finite-thickness London sheet inductance reduces to the thin-film limit $\mu_0\lambda^2/d$ for $d \ll \lambda$ and saturates at $\mu_0\lambda$ for $d \gg \lambda$ (matching the measured thickness dependence of Tolpygo et al. [2]). The film interior $\mathbf{A}_t$ is then a free unknown: the field penetrates over $\sim\lambda$ and stores additional kinetic energy, so the extracted inductance is the total $L = L_\text{geom} + L_\text{kin}$. As $\lambda \to 0$ the penalty forces $\mathbf{A}_t \to \mathbf{a}_h$ and the perfect-screening (geometric) limit is recovered.Setting
"TwoSided": truemodels the film instead as two coupled coincident faces, so the tangential field can jump across it: the magnetostatic solution is discontinuous across the film (the degrees of freedom of the film have one version per side), and the mesh is not cracked. Each face carries the self-term $\coth(d/\lambda)/(\mu_0\lambda)$ and the faces are coupled by $-1/[\mu_0\lambda\sinh(d/\lambda)]$, capturing two-sided screening when $d \gtrsim \lambda$; with equal fields on both faces this reduces to a single sheet of $\tfrac{1}{2}\mu_0\lambda\coth(d/2\lambda)$. The single-sheet form above suffices when the film screens on one side (e.g. a film over a ground plane); the two-sided form matters for a film with different fields on its two faces, such as a shared ground plane in a multilayer stack. A two-sided film must be interior to a 3D mesh.
Because a flux loop is enforced through a single scalar fluxoid constraint, each hole must be its own flux loop (one entry in "HoleAttributes"); several holes are modeled as several "FluxLoop" excitations, from which the full self/mutual inductance matrix — and any signed combination of hole fluxes — follows.
Four configurations are provided in the examples/circular_hole/ directory:
- Square washer (
square_hole.json): a perfect-conductor washer, validated against the analytic Ketchen–Jaycox formula. - Single hole (
circular_hole.json): a circular London film with a concentric hole, swept over the penetration depth $\lambda$. - Two holes, shared plate (
double_circular_hole_multi_flux.json): two holes on one London film, each an independent flux loop. - Two holes, separate plates (
double_circular_hole_multi_planes.json): two spatially separated London films, each with one hole.
All configurations use a mesh length unit of $\mu\text{m}$.
Configuration
Each configuration uses "Problem": {"Type": "Magnetostatic"} and specifies flux loop boundaries via the "FluxLoop" keyword. The shared solver settings are:
"Solver":
{
"Order": 2,
"Device": "CPU",
"Magnetostatic":
{
"Save": 2
},
"Linear":
{
"Type": "AMS",
"KSPType": "CG",
"Tol": 1.0e-8,
"MaxIts": 200
}
}The AMS (Auxiliary-space Maxwell Solver) preconditioner with CG iteration is well-suited for the symmetric positive-definite curl-curl system arising in magnetostatics.
Mesh
The meshes are generated using Julia scripts with the Gmsh package, located in the mesh/ subdirectory. For example, the two-hole rectangular plate mesh can be generated with:
julia -e 'include("mesh/sheet_w_two_holes.jl"); generate_sheet_with_two_holes_mesh()'The figures below show the geometries. From left to right: the single circular hole on a circular plate, the rectangular plate with two holes, and the two spatially separated square plates each containing a hole:
Square washer
The square_hole.json configuration provides a check against a known closed-form result. It models a square washer with a central square hole of side $d = 2\,\mu\text{m}$ and border width $W = 6\,\mu\text{m}$ (mesh/square_hole.msh, generated by mesh/square_hole_mesh.jl). The film attribute is listed under "FilmAttributes" but not under "Superconductor", so it is solved in the perfect-screening ($\lambda\to0$) limit:
"FluxLoop":
[
{
"Index": 1,
"FilmAttributes": [8],
"HoleAttributes": [9],
"FluxAmounts": [1.0],
"Direction": "+Z"
}
]For a square washer in the large-border limit, the Ketchen–Jaycox thin-film formula [1] gives the loop inductance
\[L \approx 1.25\,\mu_0 d \,,\]
which evaluates to $L \approx 3.14\,\text{pH}$ for $d = 2\,\mu\text{m}$. Palace extracts $L \approx 3.01\,\text{pH}$ (coefficient $L/(\mu_0 d) \approx 1.20$), converging upward under mesh refinement toward $\approx 3.04\,\text{pH}$. The residual difference from $1.25$ is within the literature spread of the Ketchen coefficient.
Single hole — penetration-depth sweep
The circular_hole.json configuration models a circular film of radius $R = 3\,\mu\text{m}$ with a concentric hole of radius $r = 1\,\mu\text{m}$, now declared a London film. A unit nondimensional flux-loop amplitude is prescribed through the hole:
"Superconductor":
[
{
"Attributes": [8],
"PenetrationDepth": 0.4,
"Thickness": 0.1
}
],
"FluxLoop":
[
{
"Index": 1,
"FilmAttributes": [8],
"HoleAttributes": [9],
"FluxAmounts": [1.0],
"Direction": "+Z"
}
]The fields have the following meaning:
"FilmAttributes": boundary attributes of the metal film carrying the flux loop."HoleAttributes": boundary attribute of the hole perimeter where the integral constraint is applied (exactly one per flux loop)."FluxAmounts": prescribed nondimensional flux-loop amplitude through the hole."Direction": surface normal direction for flux orientation."Superconductor": the same film attribute, with penetration depth $\lambda$ and thickness $d$ (both in $\mu\text{m}$) setting the finite-thickness sheet inductance $L_{\mathrm{ksq}} = \mu_0\lambda\coth(d/\lambda)$.
Sweeping $\lambda$ at fixed $d = 0.1\,\mu\text{m}$ shows the kinetic inductance adding to the geometric baseline as the film penetration grows, and the $\lambda\to0$ value reproducing the perfect-conductor limit:
| $\lambda$ (μm) | $L_{\mathrm{ksq}} = \lambda\coth(d/\lambda)$ (μm) | $L$ (pH) |
|---|---|---|
| $0$ (PEC) | $0$ | $2.853$ |
| $0.1$ | $0.131$ | $4.140$ |
| $0.2$ | $0.433$ | $6.445$ |
| $0.4$ | $1.633$ | $15.164$ |
At $\lambda = 0.4\,\mu\text{m}$ the self-inductance is $L = 15.164\,\text{pH}$, of which $\approx 3.38\,\text{pH}$ is geometric (the volume magnetic energy of the penetrating solution) and $\approx 11.78\,\text{pH}$ kinetic: the field penetrates over $\sim\lambda$, raising the geometric part above the $2.853\,\text{pH}$ perfect-screening ($\lambda\to0$) value.
The finite-$\lambda$ kinetic extraction is validated against Khapaev 1997 [3], whose Table 1 gives $L = 10.03\,\text{pH}$ for a rectangular hole ($2\times5\,\mu\text{m}$, $3\,\mu\text{m}$ border, $\lambda_\perp = \lambda^2/d = 0.4\,\mu\text{m}$; meshed by mesh/rect_hole_mesh.jl). Palace extracts $9.86\,\text{pH}$ ($-1.7\%$) on a coarse mesh, converging upward under refinement as expected for the energy-based (Ritz lower-bound) inductance.
The figures below show the magnetic vector potential amplitude $|\mathbf{A}|$, its in-plane components $A_x$ and $A_y$, the out-of-plane magnetic field $B_z$, and the surface current components $J_x$ and $J_y$ on the film:
As a verification step, we compute the magnetic flux threading the hole by evaluating the surface integral $\int_h \mathbf{B} \cdot d\mathbf{S}$ over the hole area. At finite $\lambda$ this flux is screened below the prescribed fluxoid $\Phi$ — the balance is carried by the London kinetic term — as the solver's fluxoid = ..., magnetic flux = ... line reports:
Two holes on a shared plate
The double_circular_hole_multi_flux.json configuration places two holes on a single London film, each treated as an independent flux loop:
"Superconductor":
[
{
"Attributes": [8],
"PenetrationDepth": 0.4,
"Thickness": 0.1
}
],
"FluxLoop":
[
{
"Index": 1,
"FilmAttributes": [8],
"HoleAttributes": [9],
"FluxAmounts": [1.0],
"Direction": [0.0, 0.0, 1.0]
},
{
"Index": 2,
"FilmAttributes": [8],
"HoleAttributes": [10],
"FluxAmounts": [1.0],
"Direction": [0.0, 0.0, 1.0]
}
]Note that "Direction" accepts either a string shorthand ("+Z") or an explicit numeric array ([0.0, 0.0, 1.0]). With two independent excitations the solver computes the full inductance matrix from the stored magnetic energy,
\[R_{ij} = \frac{2E_{ij}}{\Phi_i \Phi_j}, \qquad M = R^{-1},\]
where $2E_{ij}$ is the cross magnetic energy of flux states $i$ and $j$ (the curl energy together with the kinetic sheet contribution for the London film), $R$ is the reluctance matrix, and $M$ is the inductance matrix written to terminal-M.csv. The diagonal entries $M_{ii}$ are the self-inductances; the off-diagonal $M_{ij}$ ($i \neq j$) is the mutual inductance. For $\lambda = 0.4\,\mu\text{m}$, $d = 0.1\,\mu\text{m}$ the computed matrix is
\[M = \begin{pmatrix} 13.591 & -1.241 \\ -1.241 & 13.591 \end{pmatrix} \text{pH}\]
The near-equal self-inductances reflect the geometric symmetry of the two holes, each raised above its $\approx 2.85\,\text{pH}$ PEC value by the kinetic contribution of the penetrating film. The mutual inductance is small and negative — about 9% of the self-inductance — so the two holes on the shared film are weakly coupled: flux forced through one hole only modestly influences the shielding currents around the other at this separation. The energy of the antisymmetric ($+1/-1$ vortex–antivortex) state follows from this matrix as $M_{11}+M_{22}-2M_{12} \approx 29.66\,\text{pH}$.
The figures below show the same field quantities for the two-hole geometry with unit flux through each hole:
Again, at finite $\lambda$ the magnetic flux through each hole is screened below the prescribed fluxoid:
Two holes on separate plates
The double_circular_hole_multi_planes.json configuration places each hole on its own spatially separated London film, each with a distinct "FilmAttributes" attribute (both films appear in the shared "Superconductor" block):
"Superconductor":
[
{
"Attributes": [8, 10],
"PenetrationDepth": 0.4,
"Thickness": 0.1
}
],
"FluxLoop":
[
{
"Index": 1,
"FilmAttributes": [8],
"HoleAttributes": [9],
"FluxAmounts": [1.0],
"Direction": [0.0, 0.0, 1.0]
},
{
"Index": 2,
"FilmAttributes": [10],
"HoleAttributes": [11],
"FluxAmounts": [1.0],
"Direction": [0.0, 0.0, 1.0]
}
]For $\lambda = 0.4\,\mu\text{m}$, $d = 0.1\,\mu\text{m}$ the inductance matrix is
\[M = \begin{pmatrix} 20.248 & -0.068 \\ -0.068 & 20.248 \end{pmatrix} \text{pH}\]
The self-inductances are equal by the mirror symmetry of the two plates. The mutual inductance is small ($|M_{12}| \approx 0.068\,\text{pH}$, $\approx 0.3\%$ of the self-inductance): with the holes on physically separated films the shielding currents around each hole are confined to their own metal and cannot circulate across to the other, and the residual far-field coupling is itself screened, so the two loops are effectively decoupled — in contrast to the shared-plate case above.
References
[1] J. M. Jaycox and M. B. Ketchen, Planar coupling scheme for ultra low noise DC SQUIDs, IEEE Transactions on Magnetics 17 (1981) 400-403.
[2] S. K. Tolpygo, E. B. Golden, T. J. Weir and V. Bolkhovsky, Inductance of superconductor integrated circuit features with sizes down to 120 nm, Superconductor Science and Technology 34 (2021) 085005.
[3] M. M. Khapaev, Extraction of inductances of plane thin-film superconducting circuits, Superconductor Science and Technology 10 (1997) 389-394.