FLOOXS » TclLib » Device

Device — TclLib Procs

145 documented proc(s) in TclLib/Device/.

2Bound · 2BoundSide · 2Defect · 311Eqn · 3DTensorListToFlooxsTensor · 3DTensorListToFlooxsTensorAdd · 3DTensorTo2D · __alpha · __alphaInv · __approxFirstToSecondOrderRotation · __BuildHFromGeneric · __CompareBands · __Det2x2 · __DetNxN · __DirectStatistics · __DOS1D · __DOS2D · __EllipsoidalMassTensor · __EnsureParams · __FirstKandaHallTensor · __IndirectStatistics · __interpolate_linear_vec · __Inv2x2 · __Inv3x3 · __InvNxN · __Make2x2 · __MapExpr · __MillerToRotation · __mult_sweep · __MultAx · __MultNxN · __ParseMillerDigits · __postdd · __RotateTensor · __RotateTensorDiag · __RotateVector3 · __rotTen_F_Mat · __SolutionExpandRecursive · __Stats1D · __Stats2D · __Transpose · __ubnew_get · __xyzalpha · AddSolution · AddStressVector6 · AlGaN::BandGap · AlGaN::PolarizationCharge · BandGap · BandGapGamma · BandGapL · BandGapX · BandOverlapLoop · BuildH · BuildH110 · BuildHRot · C311Init · ClusterEqn · ComputeModes · ComputeModesFull · ConductionTensorHook · CplxMult · Cubic::CubicSpline · Cubic::SolveTridiag · DefectBound · DefectBoundSide · DefectBulk · DefectInit · DGEquation · DimMap · DirectTunnelEnergy · dopant_has · dopant_has2 · DopantBulk · DopantConstant · DopantDefectPair · DopantDefectReact · DopantFermi · DopantPair · DopantReact · ElecMobility · EllipsoidalMassTensor · Eqns · EqnsSimple · EqnsVerySimple · GaN::EqnsSimple · GaN::ThermalConductivity · Germanium::ElecMobility · Get3DHoleDPTensor · Get3DHoleDPTensor · GetAnisoCarrierTensor · GetConductivityTensor · GetdU · getHmobs · getHmobs0 · GetMobilityTensor · Init · InitDopant · InterpBowing · InterpLinear · IntNumIntegral · KandaEqns · KKDiscretize · Klaassen · KlaassenNAs · LatticeStrain · logN · LoopBulkDall · LoopBulkNall · LoopEng · Ltun · MapTerm · Masetti · Masetti · Nc · NcGamma · NcL · NcX · PoissonSchrodinger · Schenk · Schrodinger100Solve · SchrodingerDirectCurrent · SchrodingerDirectCurrentKPMeff · SchrodingerIndirectUnscaledTransmission · SchrodingerSolveEllipsoidal · SchrodingerSolveLVal · SchrodingerSolveXVal · Segregation · SetSiliconStrainParams · SetSiliconStrainParams100 · SetStrainParamsList · SGEqns · SiGe::__declare · SiGe::ElecMobility · SmicEqn · Solve · SoRBulk · SortLowHigh · SRH · Transpose · Trapezoidal · UniformStress · VacNumIntegral · ValenceStrainHook · VanDeWalle · VoxelVolumeTest

2Bound

file: TclLib/Device/Silicon/Defects/DefClust.tcl

Interface dispatcher for dimers.

2BoundSide

file: TclLib/Device/Silicon/Defects/DefClust.tcl

Per-side interface equation for dimers (I2 / V2 at Oxide/Silicon).

2Defect

file: TclLib/Device/Silicon/Defects/DefClust.tcl

Di-defect (I2 / V2) self-equation + cross-coupling into Base, RecombDefect,
BiMolecular partners.

311Eqn

file: TclLib/Device/Silicon/Defects/311.tcl

311Eqn manages D311 AND C311 self equations, plus cross-coupling into Int
and I2.  Registered on C311 (per master Params/Silicon/C311); $Sol = C311.

3DTensorListToFlooxsTensor

file: TclLib/Device/Utilities/Tensor/tensor.tcl

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

3DTensorListToFlooxsTensorAdd

file: TclLib/Device/Utilities/Tensor/tensor.tcl

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

3DTensorTo2D

file: TclLib/Device/Utilities/Tensor/tensor.tcl

Convert a 3D tensor to 2D by chopping off the z component

__alpha

file: TclLib/Device/Utilities/Tensor/rotations.tcl

Build rotation matrix from XYZ Euler angles (degrees)

__alphaInv

file: TclLib/Device/Utilities/Tensor/rotations.tcl

Inverse of XYZ rotation (negate angles, reverse order)

__approxFirstToSecondOrderRotation

file: TclLib/Device/Utilities/Tensor/rotations.tcl

Build 6x6 Bond matrix from a 3x3 rotation matrix.
Converts first-order (vector) rotation to second-order (Voigt tensor) rotation.

__BuildHFromGeneric

file: TclLib/Device/Generic/Quantum/LK.tcl

Build discretized Hamiltonian equations from the generic symbolic matrix.
R: rotation matrix (empty string for unrotated).

__CompareBands

file: TclLib/Device/Generic/Quantum/ellipsoidal.tcl

Deduplicate equivalent bands

__Det2x2

file: TclLib/Device/Utilities/Tensor/tensor.tcl

returns the determinate of a 2x2 matrix

__DetNxN

file: TclLib/Device/Utilities/Tensor/tensor.tcl

puts [__Inv2x2 {{1 1} {1 -1}}]
laplace formula for determinate
returns the determinate of an NxN matrix
A is a matrix and N is the length of the sides

__DirectStatistics

file: TclLib/Device/Generic/Quantum/statistics.tcl

Statistics used in direct band to band tunneling
quantum calculations
Takes an energy, quasi fermis, and temperature

__DOS1D

file: TclLib/Device/Generic/Quantum/statistics.tcl

Returns the 1D Density of states value for a given
temperature and effective mass

__DOS2D

file: TclLib/Device/Generic/Quantum/statistics.tcl

Returns the 2D Density of states value for a given
temperature and effective mass

__EllipsoidalMassTensor

file: TclLib/Device/Generic/Quantum/ellipsoidal.tcl

Legacy alias — older decks (and the auto-loaded tclIndex) reference the
underscored name.

__EnsureParams

file: TclLib/Device/Generic/Quantum/LK.tcl

Initialize from Silicon if SetParams hasn't been called

__FirstKandaHallTensor

file: TclLib/Device/Utilities/Strain/scalartensor.tcl

pi_mat is the calculated pi coefficeint matrix X_Vect is the stress vector(xx,yy,zz,yz,xz,xy), and uB is mobility times magnetic field vector (x,y,z)

__IndirectStatistics

file: TclLib/Device/Generic/Quantum/statistics.tcl

Statistics used in indirect band to band tunneling
quantum calculations
Takes an energy, quasi fermis, temperature, and phonon energy

__interpolate_linear_vec

file: TclLib/Device/Utilities/Interpolate/interpolate.tcl

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.

__Inv2x2

file: TclLib/Device/Utilities/Tensor/tensor.tcl

returns the inverse of a 2x2 matrix

__Inv3x3

file: TclLib/Device/Utilities/Tensor/tensor.tcl

puts [MultNxN {{1 2} {3 4}} {{1 2} {4 3}} 2]
Returns the inverse of a 3x3 matrix

__InvNxN

file: TclLib/Device/Utilities/Tensor/tensor.tcl

Generic NxN inverse via Gauss-Jordan elimination with partial pivoting.

__Make2x2

file: TclLib/Device/Utilities/Tensor/tensor.tcl

Takes 4 scalars and returns a 2x2 matrix
[a b]
[c d]

__MapExpr

file: TclLib/Device/Generic/Quantum/LK.tcl

Discretize a full expression (sum of terms) using MapTerm.

__MillerToRotation

file: TclLib/Device/Utilities/Tensor/miller.tcl

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.

__mult_sweep

file: TclLib/Device/Utilities/Bias/linear.tcl

Multiplicative (geometric) sweep — same interface as __linear_sweep but
steps by multiplication instead of addition.  step is a factor (e.g. 1.2).

__MultAx

file: TclLib/Device/Utilities/Tensor/tensor.tcl

Matrix A times vector x multiplication
Returns a vector

__MultNxN

file: TclLib/Device/Utilities/Tensor/tensor.tcl

multiplies two NxN matricies

__ParseMillerDigits

file: TclLib/Device/Utilities/Tensor/miller.tcl

Parse a signed Miller index string (e.g., "001", "-110", "1-10") into a list of 3 integers.

__postdd

file: TclLib/Device/Silicon/Equations.tcl

Silicon::__postdd — post-DD overrides invoked by device_init (and
inline by Silicon::Eqns) after DriftDiffusionPackage emits its
per-valley / per-band populations and the default Ava.

  1. Per-band Nv pinned to (Silicon::Nv * strain-dependent RelNv).
     Per-valley Nc is handled in-dispatcher via NcDistribute=even
     (declared at Silicon's namespace level).
  2. Multi-valley effective bandgap (EgEff) and Schenk B2B.  These
     reference DD-emitted DeltaE100/010/001 and DeltaELH/HH/SO, so
     must be stamped post-DD.  G overrides to add Schenk on top of
     the dispatcher-emitted Ava.

__RotateTensor

file: TclLib/Device/Utilities/Tensor/tensor.tcl

Takes a 3x3 Tensor list and crystal rotation vector
returns a rotated tensor

__RotateTensorDiag

file: TclLib/Device/Utilities/Tensor/tensor.tcl

Same procedure but only outputs Diag

__RotateVector3

file: TclLib/Device/Utilities/Tensor/tensor.tcl

Takes a 3 length list and crystal rotation vector

__rotTen_F_Mat

file: TclLib/Device/Utilities/Tensor/rotations.tcl

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/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

__Stats1D

file: TclLib/Device/Generic/Quantum/statistics.tcl

Returns the 1D Density of states with integral function for a given
temperature, effective mass and potential

__Stats2D

file: TclLib/Device/Generic/Quantum/statistics.tcl

Returns the 2D Density of states with integral function for a given
temperature, effective mass and potential

__Transpose

file: TclLib/Device/Utilities/Tensor/tensor.tcl

Returns the transpose of matrix A

__ubnew_get

file: TclLib/Device/Silicon/Avalanche/UniBoNew.tcl

__ubnew_get { carrier coeff } — short helper to keep proc bodies tidy.

__xyzalpha

file: TclLib/Device/Utilities/Tensor/rotations.tcl

Build 3x3 rotation matrix: Rz(Z) * Ry(Y) * Rx(X)
Input: {X Y Z} angles in degrees
Returns 6x6 Bond matrix for Voigt tensor rotation

AddSolution

file: TclLib/Device/Utilities/Bias/pod.tcl

to do pod we need a set of solutions
this procedure adds a solution as a function of bias

AddStressVector6

file: TclLib/Device/Utilities/Tensor/tensor.tcl

Add vectors

AlGaN::BandGap

file: TclLib/Device/AlGaN/Equations.tcl

Composition-dependent BandGap / Nc / Nv shims.  All call AlGaN::__resync
so the per-x state is current before MatBandGap / MatNcTotal / MatNvTotal
walks the namespace.

AlGaN::PolarizationCharge

file: TclLib/Device/AlGaN/Equations.tcl

Polarization sheet charge at a III-N heterointerface (e.g. AlGaN/GaN
2DEG).  Unchanged from the pre-port implementation.

BandGap

file: TclLib/Device/SiGe/Bandstructure/bandgap.tcl

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.

BandGapGamma

file: TclLib/Device/SiGe/Bandstructure/bandgap.tcl

Gamma-valley (direct gap) — matters for optical transitions and direct tunneling

BandGapL

file: TclLib/Device/SiGe/Bandstructure/bandgap.tcl

L-valley — dominant conduction band for Ge-rich alloys

BandGapX

file: TclLib/Device/SiGe/Bandstructure/bandgap.tcl

X-valley (Delta minimum) — dominant conduction band for Si-rich alloys

BandOverlapLoop

file: TclLib/Device/Generic/Quantum/util.tcl

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/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/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/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.

C311Init

file: TclLib/Device/Silicon/Defects/311.tcl

Clear C311 and D311 accumulator slots — InitProc-style entry point.  Same
caveat as DefectInit: rarely fires on master because Solver::InitProcedures
runs before CreateSolutions, but kept as a safety net.

ClusterEqn

file: TclLib/Device/Silicon/Defects/311.tcl

ClusterEqn manages Smic's bulk equation AND back-propagates to 6 partner
species (Int, I2, Vac, V2, D311, C311).  Pre-resolves DiffLimit via subst
(Alagator does not evaluate `[Tcl]` substitutions in eqn= values).

ComputeModes

file: TclLib/Device/Utilities/Bias/pod.tcl

only take a subset of modes with this proc for ramping purposes

ComputeModesFull

file: TclLib/Device/Utilities/Bias/pod.tcl

Next we need to compute the POD modes, fit the data
and build the alagator equations for each solution pde

ConductionTensorHook

file: TclLib/Device/Silicon/Equations.tcl

Silicon::ConductionTensorHook — lifts the Hall/piezo current tensor
block from the pre-refactor Silicon::EqnsLegacy (lines 250-331).
Combines per-valley ± pairs (DD emits ElecX100/ElecXm100 from the 6
declared X-valleys) into the legacy-named Elec100/Elec010/Elec001
combined populations that Silicon::Get3DElecDPTensor /
Silicon::Get3DElecDPTensorPiezoHall expect.  Emits Jnx, Jny, Jnz, and
the six Lorentz cross terms; emits the Qfn PDE in either the
strain-tensor form (default) or the BgDOSOnly bypass form.  Honors
`$::__Hall` and `$::BgDOSOnly` exactly as the legacy code did.

CplxMult

file: TclLib/Device/Generic/Quantum/util.tcl

Multiply complex numbers that are stored as two separate values

Cubic::CubicSpline

file: TclLib/Device/Utilities/Interpolate/cubicspline.tcl

#+##########################################################################

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

Cubic::SolveTridiag

file: TclLib/Device/Utilities/Interpolate/cubicspline.tcl

#+##########################################################################
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]

DefectBound

file: TclLib/Device/Silicon/Defects/Defect.tcl

Interface bulk-side dispatcher.  Walks both sides and calls
DefectBoundSide for each side where DiffModel is "Numeric" (matched via
matparam_sub).  If the side has no DiffModel set, that side is skipped
(which is the typical case — only the bulk side with the diffusing
species gets a boundary condition).

DefectBoundSide

file: TclLib/Device/Silicon/Defects/Defect.tcl

Per-side interface equation.  Writes to the C++ EqnComplex via a separate
code path than the bulk Equation accumulator — uses the existing
`solution Mat /Other name=Sol side=Side value="…"` shape directly rather
than going through pde_*.

The trapping term that touches Vac's BULK equation does go through
pde_append, because that IS a cross-coupling into the bulk accumulator.

DefectBulk

file: TclLib/Device/Silicon/Defects/Defect.tcl

Build the bulk rate equation for $Sol (Int or Vac) in $Mat (Silicon):
  ddt(Sol) - D0 · grad(ScaleSol) + IVRecomb
plus the scratch terms EqSol, ScaleSol, IVRecomb, PressureSol used by it.

DefectInit

file: TclLib/Device/Silicon/Defects/Defect.tcl

Clear the (Mat, Sol) Equation accumulator slot.  Used as the "Init" hook —
fires once at solver construction on master (and never again, due to the
Solver framework calling InitProcedures before CreateSolutions); the
multi-pass idempotency in pde_set_self handles the re-construction case
so this proc is effectively a no-op safety net.

DGEquation

file: TclLib/Device/Generic/DensityGradient/DG.tcl

# Full Density Gradient Correction:

DimMap

file: TclLib/Device/Generic/Quantum/LK.tcl

Legacy DimMap — compatibility wrapper for ellipsoidal.tcl

DirectTunnelEnergy

file: TclLib/Device/Generic/Quantum/b2btunnel.tcl

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

dopant_has

file: TclLib/Device/Silicon/Dopants/Dopant.tcl

Helper: check if a per-(Mat, Sol, Key) parameter is set (returns "" if not).

dopant_has2

file: TclLib/Device/Silicon/Dopants/Dopant.tcl

Same but for the nested Mat/Sol/Def/Key form.  Delegates to matparam_sub3
so the inherit chain is honored: a child material picks up its parent's
per-(dopant, defect) params without redeclaring them.

DopantBulk

file: TclLib/Device/Silicon/Dopants/Dopant.tcl

DopantBulk: top-level dispatcher.  Reads DiffModel / ActiveModel / Charge
switches and routes to the right sub-builder; finally folds the active
species into the global Charge term.

DopantConstant

file: TclLib/Device/Silicon/Dopants/Dopant.tcl

Simple constant-diffusivity model: ddt(Sol) - D * grad(SolActive).

DopantDefectPair

file: TclLib/Device/Silicon/Dopants/Dopant.tcl

Per-(dopant, defect) flux contribution for the Pair model.  Builds the
DiffDef diffusivity and the FluxSolDef term; subtracts the flux from
the dopant's residual, adds a dopant-defect binding term to the defect's
residual.

DopantDefectReact

file: TclLib/Device/Silicon/Dopants/Dopant.tcl

Per-(dopant, defect) reaction for the React model.

DopantFermi

file: TclLib/Device/Silicon/Dopants/Dopant.tcl

Fermi-level dependent diffusivity.  Reads D0, optional Dn/Dnn/Dp/Dpp
coefficients for the Fermi-expansion in Noni and Poni.  For charged
species the diffusivity gets a 1/(Poni) or 1/(Noni) factor and the grad
argument picks up a (Poni) or (Noni) factor — same shape as master.

DopantPair

file: TclLib/Device/Silicon/Dopants/Dopant.tcl

Pair model — substitutional via 1/(1 + Σ Bind*Defect), then per-(Sol,Def)
flux contribution.

DopantReact

file: TclLib/Device/Silicon/Dopants/Dopant.tcl

React model — substitutional is dopant total minus sum of (dopant, defect)
species; per-(Sol, Def) reactions wire flux + binding.

ElecMobility

file: TclLib/Device/Silicon/Equations.tcl

Silicon::ElecMobility / HoleMobility — composite Klaassen NP/PB +
Canali velocity saturation.  Called by DD step 3 (per-material proc
override path).  Equivalent to the inline __SiliconMobility block in
the pre-refactor Silicon::EqnsLegacy.

EllipsoidalMassTensor

file: TclLib/Device/Generic/Quantum/ellipsoidal.tcl

Build the 3x3 inverse mass tensor for an ellipsoidal valley
with longitudinal mass ml along direction {dx dy dz} and
transverse mass mt perpendicular.

Eqns

file: TclLib/Device/Silicon/Equations.tcl

Silicon::Eqns — main entry point.  Stamps the SiGe-style x-independent
setup (strain k.p constants, strain/magnetic field defaults, mobility
composition via the per-material proc DD calls in step 3, recombination
defaults via pre-stamp before DD step 11), then routes through
DriftDiffusionPackage.  ValenceStrainHook + ConductionTensorHook take
over for the Si-specific Hall/piezo and strain k.p layering.

EqnsSimple

file: TclLib/Device/Silicon/Equations.tcl

Silicon::EqnsSimple — single-valley DD with explicit Hall mobility
tensor inside the Qfn PDE.  Used by the PiezoHall factor.tcl test as
the "simple" reference against Silicon::Eqns's full multi-valley path.

EqnsVerySimple

file: TclLib/Device/Silicon/Equations.tcl

Silicon::EqnsVerySimple — minimal DD with zero R/G and no Hall.  Used
by the interface-traps regression tests as the reference solver setup
stripped of generation / recombination so trap occupancy dominates.

GaN::EqnsSimple

file: TclLib/Device/GaN/Equations.tcl

Single-Γ-valley convenience deck.  Drops the satellite by re-declaring
ConductionValleys to just Gamma before calling the dispatcher.  Useful
for low-field DC analysis where NDR isn't relevant.

GaN::ThermalConductivity

file: TclLib/Device/GaN/Equations.tcl

Temperature-dependent thermal properties (used by self-heating
extensions, not by the DD dispatcher itself).

Germanium::ElecMobility

file: TclLib/Device/Germanium/Equations.tcl

Mobility shims: the existing Germanium::Masetti returns {Emob Hmob}
as a list; the dispatcher expects scalar ElecMobility / HoleMobility
procs.

Get3DHoleDPTensor

file: TclLib/Device/Germanium/Strain/HoleModels.tcl

set kp    [GetKP $StressVector6 $StressRotation $CrystalRotation ]

Get3DHoleDPTensor

file: TclLib/Device/Silicon/Strain/HoleModels.tcl

set kp    [GetKP $StressVector6 $StressRotation $CrystalRotation ]

GetAnisoCarrierTensor

file: TclLib/Device/Utilities/Tensor/tensor.tcl

takes a carrier vector
returns a tensor 3x3 list

GetConductivityTensor

file: TclLib/Device/Utilities/Tensor/tensor.tcl

takes a mobility vector, carrier type
returns a tensor 3x3 list

GetdU

file: TclLib/Device/Generic/Quantum/util.tcl

Get dU from the number of integration points that you want

getHmobs

file: TclLib/Device/Germanium/Strain/HoleModels.tcl

This really doesn't work...

getHmobs0

file: TclLib/Device/Silicon/Strain/HoleModels.tcl

This really doesn't work...

GetMobilityTensor

file: TclLib/Device/Utilities/Tensor/tensor.tcl

takes a mobility vector
returns a tensor 3x3 list

Init

file: TclLib/Device/Utilities/Bias/pod.tcl

lastly we can make guesses using the POD equations for each solution

InitDopant

file: TclLib/Device/Silicon/Dopants/Dopant.tcl

Initialize dopant-defect product solutions.  For React model, these are
real solve variables (XInt, XVac for dopant X).  For other models they are
const placeholders.

InterpBowing

file: TclLib/Device/Utilities/Strain/lattice.tcl

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.

InterpLinear

file: TclLib/Device/Utilities/Strain/lattice.tcl

Linear interpolation returning an Alagator expression.
x can be a numeric constant or an Alagator field name.

IntNumIntegral

file: TclLib/Device/Silicon/Defects/Loop.tcl

Trapezoidal integration over loop sizes for interstitial-flavored loops.

KandaEqns

file: TclLib/Device/Silicon/Equations.tcl

Silicon::KandaEqns — drift-diffusion with Kanda piezo-conductivity
tensor transport.  Distinct physics from Silicon::Eqns (which uses the
multi-valley DP tensor via ConductionTensorHook): KandaEqns drives the
first-order Kanda E/H tensors directly with the user-supplied stress.
Used by the piezo-resistance test suite to validate against the Kanda
pi-coefficients.

KKDiscretize

file: TclLib/Device/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.

Klaassen

file: TclLib/Device/Silicon/Mobility/Klaassen/klaassen.tcl

Silicon::Klaassen dopant=As|P|B carrier=elec|hole T=... [Accept=] [Donor=]
[Elec=] [Hole=] [expand]

Returns the Klaassen mobility alagator expression for the named (dopant,
carrier) combination.  Klaassen 1992 model (the "Philips Unified" mobility).
Carrier-dependent swaps:
  - lattice θ:                  theta_e (elec) / theta_h (hole)
  - carrier mass:               me      (elec) / mh      (hole)
  - PBH scattering:             1/Elec  (elec) / 1/Hole  (hole)
  - Nsc (total scattering):     + Hole  (elec) / + Elec  (hole)
  - Z compensation factor:      cA      (elec) / cD      (hole)
  - Nsceff sceening structure:
      elec: Donor + G·Accept + Hole/F   (majority=Donor, minority=Accept)
      hole: Accept + G·Donor + Elec/F   (majority=Accept, minority=Donor)
  - G mass:                     me      (elec) / mh      (hole)
  - F mass ratio:               me/mh   (elec) / mh/me   (hole)

KlaassenNAs

file: TclLib/Device/Silicon/Mobility/Klaassen/klaassen.tcl

Backward-compatible shims — one-liners delegating to the generic.

LatticeStrain

file: TclLib/Device/Utilities/Strain/lattice.tcl

linear interpolation of strain using the starting lattice constant
and linearly interpolaring the change from the mole fraction

logN

file: TclLib/Device/Silicon/Defects/Loop.tcl

Log-normal size distribution kernel.  Alagator doesn't parse `^` so the
squaring is expanded to `(diff)*(diff)`.

LoopBulkDall

file: TclLib/Device/Silicon/Defects/Loop.tcl

Loop average size Dall.  Alagator-`^` is expanded to `*`.

LoopBulkNall

file: TclLib/Device/Silicon/Defects/Loop.tcl

Loop density Nall — accumulates the local self equation incrementally
(because of nested foreach control flow) and flushes via pde_set_self at
the end.  Cross-coupling is appended inline through pde_append.

LoopEng

file: TclLib/Device/Silicon/Defects/Loop.tcl

Loop elastic energy factor at radius $AvgRad.  Read the elastic moduli
(mu, b, ohm, kerg, nu) preferentially from the per-defect namespace
(::Mat::Sol::Key) but fall back to material-level (::Mat::Key) — this
mirrors master's pdb chain walk that auto-falls-back when the per-(mat,
sol) slot is missing.

In practice LoopEng is called with $Sol = Nall (the loop density species)
inside IntNumIntegral; Nall doesn't carry its own elastic moduli, so the
fall-back to material-level is load-bearing.

Ltun

file: TclLib/Device/Generic/Quantum/util.tcl

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/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

file: TclLib/Device/Germanium/Mobility/Masetti/model.tcl

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

Masetti

file: TclLib/Device/Silicon/Mobility/Masetti/model.tcl

Silicon::Masetti — back-compat shim.  Existing decks expect a
`{Emob_expr Hmob_expr}` two-element list; build it by calling the
generic MasettiMobility dispatcher for each carrier.  T is forwarded
to the dispatcher so legacy callers passing a numeric temperature
(e.g. T=300) get the same fully-substituted Alagator string as before.

Nc

file: TclLib/Device/SiGe/Bandstructure/Nc.tcl

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.

NcGamma

file: TclLib/Device/SiGe/Bandstructure/Nc.tcl

Gamma-valley electron DOS (1-fold degeneracy)
Si: mGamma ≈ 0.036 (very light, high in the band structure)
Ge: mGamma ≈ 0.041

NcL

file: TclLib/Device/SiGe/Bandstructure/Nc.tcl

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.

NcX

file: TclLib/Device/SiGe/Bandstructure/Nc.tcl

X-valley electron DOS (6-fold degeneracy)
Si: ml=0.9161, mt=0.1905 → md = 6^(2/3)*(ml*mt^2)^(1/3) ≈ 1.084
Ge: X-valley masses ml=1.35, mt=0.29 → md = 6^(2/3)*(ml*mt^2)^(1/3) ≈ 1.42

PoissonSchrodinger

file: TclLib/Device/Generic/Quantum/poissonschrodinger.tcl

Silicon Electron and Hole Poisson-Schrodinger loop with predictor corrector
T is temperature, er is the oxide relative permittivity

Schenk

file: TclLib/Device/Generic/B2BTunnel/schenk.tcl

The driving force, SRH, band gap, and thermal voltage are arguments
This expression modifies an SRH like expression

Schrodinger100Solve

file: TclLib/Device/Silicon/Quantum/silicon.tcl

Solve the sub bands along the [100] direction

SchrodingerDirectCurrent

file: TclLib/Device/Generic/Quantum/b2btunnel.tcl

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

SchrodingerDirectCurrentKPMeff

file: TclLib/Device/Generic/Quantum/b2btunnel.tcl

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

SchrodingerIndirectUnscaledTransmission

file: TclLib/Device/Generic/Quantum/b2btunnel.tcl

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

SchrodingerSolveEllipsoidal

file: TclLib/Device/Generic/Quantum/ellipsoidal.tcl

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

SchrodingerSolveLVal

file: TclLib/Device/Generic/Quantum/ellipsoidal.tcl

L-valley solver: 4 valleys along <111> directions

SchrodingerSolveXVal

file: TclLib/Device/Generic/Quantum/ellipsoidal.tcl

X-valley solver: 6 valleys along <100> directions

Segregation

file: TclLib/Device/Silicon/Dopants/Dopant.tcl

Interface segregation — uses the slash form for side-qualified Sol
references (see src/BasePDE/lexical.cc for the lexer patch).

SetSiliconStrainParams

file: TclLib/Device/Silicon/Strain/params.tcl

SetSiliconStrainParams — empty back-compat shim.  The k.p +
piezoresistance + PiezoHall constants it used to stamp are now
top-level data declarations at the bottom of this file, so the data is
in place by the time any consumer (Silicon::Eqns, SGEqns, the
orientation variants below, test decks) reads it.  Decks that call
this proc explicitly still work — the call is a no-op since the data
is already stamped, and re-stamping would just be redundant.

SetSiliconStrainParams100

file: TclLib/Device/Silicon/Strain/params.tcl

Orientation-specific variants — call SetSiliconStrainParams then override
the k.p values for (100) / (110) wafer surfaces.

SetStrainParamsList

file: TclLib/Device/Silicon/Strain/params.tcl

SetStrainParamsList — explicit positional list override.  Kept verbatim
for decks that use it; the list maps to specific keys in order.

SGEqns

file: TclLib/Device/Silicon/Equations.tcl

Silicon::SGEqns — Scharfetter-Gummel device equations: direct Elec/Hole
continuity PDEs (not quasi-Fermi).  Consumed by SGDevicePackage in
src/FLOOXS.models; used by the SG-Resistor / PN-Diode-SG / Block-Precond
/ MOSFET-Process Coverage tests.  Distinct physics from Silicon::Eqns
(which solves Qfn / Qfp drift-diffusion).

SiGe::__declare

file: TclLib/Device/SiGe/Equations.tcl

SiGe::__declare { x } — stamp every per-x value into the SiGe namespace
and re-declare each valley / hole_band with x-substituted parameters.
Called by SiGe::Eqns so the schema state always reflects the current x.
Idempotent — re-calling overwrites.

SiGe::ElecMobility

file: TclLib/Device/SiGe/Equations.tcl

SiGe::ElecMobility / HoleMobility — composite Masetti bulk + surface
phonon + roughness via Mathiessen, wrapped with Canali velocity
saturation.  Matches the legacy SiGe::Eqns mobility composition.

SmicEqn

file: TclLib/Device/Silicon/Defects/DefClust.tcl

Small interstitial cluster (Smic) — formation from Int + I2; recombination
with V2 → base.

Solve

file: TclLib/Device/Utilities/Bias/pod.tcl

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.

SoRBulk

file: TclLib/Device/Silicon/Defects/Loop.tcl

Super-saturation ratio bulk equation.  Sets SoR's self equation directly.

SortLowHigh

file: TclLib/Device/Generic/Quantum/util.tcl

Sort a tcl list of numbers low to high

SRH

file: TclLib/Device/Generic/Recombination/SRH.tcl

SRH recombination

Transpose

file: TclLib/Device/Generic/Quantum/util.tcl

Transpose a tcl list that is holding numeric matrix data

Trapezoidal

file: TclLib/Device/Generic/Quantum/util.tcl

Simple trapezoidal integration formula
U is a list of evenly spaced values
dU is the separation of the values

UniformStress

file: TclLib/Device/Silicon/Equations.tcl

Goal is to use this function

VacNumIntegral

file: TclLib/Device/Silicon/Defects/Loop.tcl

Trapezoidal integration over loop sizes for vacancy-flavored loops.

ValenceStrainHook

file: TclLib/Device/Silicon/Equations.tcl

Silicon::ValenceStrainHook — lifts the strain-dependent hole k.p
polynomial block from the pre-refactor Silicon::EqnsLegacy (lines
333-388).  Emits the strain-dependent EvalShiftLH/HH/SO,
LH/HH/SOMx/y/z, RelNvLH/HH/SO solutions with the polynomial strings
byte-identical to the legacy code; the Phase 6 backfill tests
(cov_silicon_strain_polynomials.tcl, cov_silicon_hall_currents.tcl)
gate against drift here.  Replaces DD's default unstrained
LightHole/HeavyHole/SOHole emissions with the strain-coupled forms.

VanDeWalle

file: TclLib/Device/Silicon/Strain/params.tcl

Backward-compatible shims — one-liners delegating to SetStrainParams.

VoxelVolumeTest

file: TclLib/Device/Utilities/Testing/voxel_test.tcl

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).