Input: 3x3 Tensor/ Matrix list (3 dimensional list where the first two dimensions
are the 2D matrix and the 3rd dimension are other matricies)
All matricies are multiplied together by component
Returns: Flooxs tensor alagator expression
Input: 3x3 Tensor/ Matrix list (3 dimensional list where the first two dimensions
are the 2D matrix and the 3rd dimension are other matricies)
All matricies are added together by component
Returns: Flooxs tensor alagator expression
Vectorized linear interpolation for a sorted list of query points.
Single pass O(n+m) where n = len(x), m = len(xv).
Values outside the data range are clamped to the nearest endpoint.
Build a 3x3 rotation matrix from Miller indices.
Syntax:
(hkl)<uvw> — default: () → column 2 (z), <> → column 0 (x)
(axis:hkl)<axis:uvw> — explicit axis assignment
Examples:
(001)<100> — (001) surface, [100] channel. Normal→z, channel→x
(x:001)<y:100> — (001) surface normal along x, [100] along y
(x:110)<z:1-10> — (110) normal along x (1D quantum), [-110] along z
The third direction is always the cross product of the other two,
placed in whichever column remains.
The rotation matrix rows are crystal [100],[010],[001] directions.
The columns are device x,y,z directions.
Rotate a 4th order tensor (stored as 6x6 Voigt matrix) by angle psi around Z.
Full contraction: T'_ijkl = a_im a_jn a_ko a_lp T_mnop
__SolutionExpandRecursive
file: TclLib/Device/floods/Utilities/parse.tcl
Recursively expand solution variable references in an expression string.
Replaces solution names with their stored expressions until no more remain.
mater: material name for material-specific solution lookup
name: the solution variable to expand
Effective (minimum) bandgap — for ni calculations
At x<~0.85 the X-valley is lowest; above that, L takes over.
We return a smooth minimum via Alagator ternary.
Loop over energies from the bottom of the conduction band to the
top of the valance band. Only produces values if the bands overlap
fxn is a function that is called at every point in the loop with that energy
dU is the energy step size
mat is the material used
BuildH
file: TclLib/Device/floods/Generic/Quantum/LK.tcl
Build the LK 6-band k.p Hamiltonian, returning a list of 6 expression
strings for aschro / kaschro.
k_units: "m" (default) — broadcast k-parameters expected in 1/m.
"cm" — broadcast k-parameters in 1/cm (matches the
BEATS-3 KGrid convention; lifts free-k factors
by ×1e2 per free k inside KKDiscretize).
BuildH110
file: TclLib/Device/floods/Generic/Quantum/LK.tcl
Legacy (110) rotation — calls generic BuildHRot
Rotates yz plane: ky→(ky-kz)/√2, kz→(ky+kz)/√2, kx unchanged
Surface normal (0-11) along z, channel [100] along x
BuildHRot
file: TclLib/Device/floods/Generic/Quantum/LK.tcl
Build rotated LK Hamiltonian for arbitrary crystal orientation.
miller: Miller index string, e.g., (001)<100>, (001)<1-10>, (x:001)<z:100>
The Hamiltonian is built in the crystal frame then rotated to the device frame.
k_units: see BuildH for unit-convention details.
ComputeModes
file: TclLib/Device/floods/Utilities/Bias/pod.tcl
only take a subset of modes with this proc for ramping purposes
ComputeModesFull
file: TclLib/Device/floods/Utilities/Bias/pod.tcl
Next we need to compute the POD modes, fit the data
and build the alagator equations for each solution pde
#+##########################################################################
CubicSpline - returns the x,y coordinates of the cubic spline using
xy control points.
xy => {{x0 y0} {x1 y1} .... {xn yn}}
XY points MUST BE SORTED by increasing x
#+##########################################################################
SolveTriDiag -- solves the linear system for tridiagoal NxN matrix A
using Gaussian elimination (no pivoting). Since A is sparse, we pass
in three diagonals:
sub(i) => a(i,i-1) diag(i) => a(i,i) sup(i) => a(i,i+1)
Result is returned in b[1:n]
Computes the direct tunneling energy using the effective mass approximation
Takes an conduction band sub band energy Eci
Conduction band effective mass
Takes an valance band sub band energy Evi
Valance band effective mass
set low field electron mobility via analytical expression from Farahmand for low field mobility
paramters for AlN for low field mobility from Farahmand
set low field electron mobility via analytical expression from Farahmand for low field mobility
paramters for GaN for low field mobility from Farahmand
Legacy single-valley Germanium equations with Hall tensor.
EqnsLegacy
file: TclLib/Device/floods/Silicon/Equations.tcl
Legacy multi-valley equations with Si-specific strain polynomial coefficients.
Call Silicon::EqnsLegacy T=Temp after FEQFDevicePackage in decks that need
the fitted piezoresistance tensor and strain-dependent hole k.p model.
EqnsSimple
file: TclLib/Device/floods/GaN/Equations.tcl
Single-valley GaN equations with Farahmand mobility and Caughey-Thomas
velocity saturation. No satellite valley transfer. Simpler to converge,
suitable for low-field or DC characterization.
Quadratic interpolation with bowing parameter for alloy properties.
Returns an Alagator expression: (1-x)*valA + x*valB - bow*x*(1-x)
x can be a numeric constant or an Alagator field name.
Linear interpolation returning an Alagator expression.
x can be a numeric constant or an Alagator field name.
KKDiscretize
file: TclLib/Device/floods/Generic/Quantum/LK.tcl
Discretize ka*kb*s directly by index.
a,b: 0=x, 1=y, 2=z. dim: number of discretized spatial dimensions.
hasI: 1 if the original term had an i* prefix on the k-product.
k_units: "m" (default, legacy) or "cm".
"m": free (broadcast) k-parameters are expected in 1/m, matching the
eV·m² C constants in Peqn/Qeqn/Reqn/Seqn directly. Confined
directions get the existing 1e4 / 1e2 factors that lift the
cm-meshed Grad/Vel back into m-units.
"cm": broadcast k-parameters are in 1/cm (matches KGrid). Each free
k contributes one extra ×1e2 so the C·k product still lands in eV.
Compute the tunneling length in 1D
all parameters are optional
units are nm or um
Econd_o is an offset value for the conduction band
Eval is the name of the valance band
Econd is the name of the conduction band
MapTerm
file: TclLib/Device/floods/Generic/Quantum/LK.tcl
Discretize a single Hamiltonian term, optionally applying rotation R.
Parses coeff*[i*]ki*kj*s patterns; strain/constant terms pass through.
Returns a list of discretized terms (one for unrotated, up to 9 for rotated).
Masetti Mobility Model from Sentaurus, P at end of parameter is Phospherous, B at end of parameter is Boron
See paper titled Electrical TCAD Simulations of a Germanium pMOSFET Technology
Aggregate electron DOS for ohmic contact calculations.
Returns X-valley Nc, which is the dominant valley in Si-rich compositions
and provides the correct contact boundary condition.
L-valley electron DOS (4-fold degeneracy)
Ge: ml=1.59, mt=0.0815
Si: L-valley masses ml=1.42, mt=0.13
Computed inline (same method as Germanium::Nc) to match endpoint exactly.
Silicon Electron and Hole Poisson-Schrodinger loop with predictor corrector
T is temperature, er is the oxide relative permittivity
PolarizationCharge
file: TclLib/Device/floods/AlGaN/Equations.tcl
Set polarization charge at a III-N heterointerface.
Creates the 2DEG at AlGaN/GaN interfaces via fixed sheet charge.
interface: the interface name (e.g., "AlGaN_GaN")
charge: sheet charge density in cm^-2 (positive = donor-like)
Computes direct tunnel current using the Bigelow method
Ec is the gamma electron sub band energies
EVc is the gamma electron eigen vector base names
mc is the gamma electron effective mass
Evlh is the light hole sub band energies
EVvlh is the light hole eigen vector base names
mvlh is the light hole effective mass
Evhh is the heavy hole sub band energies
EVvhh is the heavy hole eigen vector base names
mvhh is the heavy hole effective mass
Eg is the direct band gap
T is the temperature
Computes direct tunnel current using the Bigelow method assuming kp
Ec is the gamma electron sub band energies
EVc is the gamma electron eigen vector base names
mc is the gamma electron effective mass
Ev is the hole sub band energies
EV is the hole eigen vector base names
mv is the hole effective mass
Eg is the direct band gap
T is the temperature
Computes indirect tunneling transmission for a given conduction and valance band
Ev is list of eigenvalues for the valance band
EVv is the valance band eigenvector base name
Ec is list of eigenvalues for the conduction band
EVc is the conduction band eigenvector base name
hw is the phonon energy
Mat is the material name
T is the temperature value or field
N is the Number of integration points
Returns units of inverse cm
Solve the Schrodinger equation for a set of ellipsoidal valleys.
Arguments:
Econd - band edge potential name (Alagator field)
ml - longitudinal effective mass (m0 units)
mt - transverse effective mass (m0 units)
directions - list of valley direction vectors, e.g., {{1 0 0} {0 1 0} {0 0 1}}
dotransport - compute transport mass if true
nev - number of eigenvalues
prefix - solution variable prefix (e.g., "EVX" or "EVL")
alpha - 3x3 crystal-to-device rotation matrix
Run a Galerkin POD-projected Newton solve using the per-variable
bases stored in this namespace. Returns the iteration count. The
caller is expected to have already set up an initial guess (e.g. via
POD::Init) so the warm start lives in the column space of V.
VoxelVolumeTest — volume-integration regression check for voxel decks.
Loops over the FieldServer's currently-meshed bulk materials, integrates
each material's volume (`integrate eqn=Material($mat)`), and compares
against a stored gold-value dict. Drift > `bound` percent on any single
material fails the test. Platform-independent metric — replaces the
old structure-to-structure CompareStruct gating in voxel test decks.
Requires the deck to have called `meshvoxel` first (integrate operates
on the tet mesh, not the voxel brick).