Explore the physics.
Explore precomputed Semisolve outputs: band structures, electron density, and current characteristics. These are saved results, not live simulations.
Al₀.₂₅Ga₀.₇₅N/GaN HEMT — Band Diagram & 2DEG
Self-consistent Schrödinger-Poisson solution showing quantum confinement effects on the 2DEG at the AlGaN/GaN interface.
SC: semiclassical. The squared wavefunctions are scaled and offset by their eigenenergies for display.
Reference code (before refactor)
The code structure and APIs are expected to change during the refactor. This example is provided for reference.
from semisolve.core.structure import Structure1D, Layer
from semisolve.core.mesh import Mesh1D
from semisolve.core.terminals import Terminal1D, LayerBoundary
from semisolve.materials import GaN, AlGaN
from semisolve.solvers import EquilibriumSolver1D
from semisolve.solvers.settings import (
SemiclassicalSettings, QuantumSettings, ModelType,
)
T = 300.0
structure = Structure1D(
layers=[
Layer(material=GaN(Nd=1e15, temperature=T), thickness=200.0, label="buffer"),
Layer(material=AlGaN(x=0.25, temperature=T), thickness=25.0, label="barrier"),
],
orientation="0001", # Ga-face — standard HEMT polarity
temperature=T,
substrate="buffer",
)
structure.terminals = [
Terminal1D(name="Bottom", voltage=0.0,
selector=LayerBoundary(label="buffer", side="bottom")),
Terminal1D(name="Top", voltage=0.0,
selector=LayerBoundary(label="barrier", side="top")),
]
mesh = Mesh1D(structure=structure, min_step=0.1, max_step=2.0, grading_rate=1.15)
mesh.generate()
# Self-consistent Schrödinger-Poisson solution
solver = EquilibriumSolver1D(mesh)
result = solver.solve(
model=ModelType.QUANTUM,
semiclassical=SemiclassicalSettings(tol=1e-6, max_iter=200),
quantum=QuantumSettings(band="conduction", num_eigenvalues=10,
max_iter=300, tolerance=5e-3),
)
print(f"Converged: {result.converged}")
print(f"Eigenvalues (eV): {result.eigenvalues[:5]}")GaN PN Diode — I-V Characteristics
Forward bias sweep using the drift-diffusion solver. Select a voltage to see the band diagram under that bias condition.
Reference code (before refactor)
The code structure and APIs are expected to change during the refactor. This example is provided for reference.
import numpy as np
from semisolve.core.structure import Structure1D, Layer
from semisolve.core.mesh import Mesh1D
from semisolve.core.terminals import Terminal1D, LayerBoundary
from semisolve.materials import GaN
from semisolve.solvers.drift_diffusion import DriftDiffusionSolver1D
from semisolve.solvers.settings import SemiclassicalSettings
T = 300.0
n_gan = GaN(Nd=5e17, temperature=T); n_gan.Ed = 0.03 # Si donor: 30 meV
p_gan = GaN(Na=5e17, temperature=T); p_gan.Ea = 0.20 # Mg acceptor: 200 meV
structure = Structure1D(
layers=[
Layer(material=n_gan, thickness=500.0, label="n_layer"),
Layer(material=p_gan, thickness=500.0, label="p_layer"),
],
temperature=T,
)
structure.terminals = [
Terminal1D(name="Cathode", voltage=0.0,
selector=LayerBoundary(label="n_layer", side="bottom")),
Terminal1D(name="Anode", voltage=0.0,
selector=LayerBoundary(label="p_layer", side="top")),
]
mesh = Mesh1D(structure=structure, min_step=0.5, max_step=10.0, grading_rate=1.15)
mesh.generate()
solver = DriftDiffusionSolver1D(mesh, temp=T)
solver.initialize()
settings = SemiclassicalSettings(max_iter=200, tol=1e-8)
# Forward bias sweep
for v in np.arange(0.0, 4.0, 0.1):
result = solver.solve(applied_voltage=v, settings=settings)
if result.converged:
J = solver.compute_current_density() * 1e-4 # A/m2 -> A/cm2
print(f"V = {v:.1f} V J = {J:.4e} A/cm2")