Struct GummelPoonModel
pub struct GummelPoonModel {Show 26 fields
pub is: f64,
pub bf: f64,
pub br: f64,
pub nf: f64,
pub nr: f64,
pub vt: f64,
pub vaf: f64,
pub var: f64,
pub ikf: f64,
pub ikr: f64,
pub ise: f64,
pub ne: f64,
pub isc: f64,
pub nc: f64,
pub cje: f64,
pub vje: f64,
pub mje: f64,
pub cjc: f64,
pub vjc: f64,
pub mjc: f64,
pub rb: f64,
pub re: f64,
pub rc: f64,
pub tf: f64,
pub tr: f64,
pub is_pnp: bool,
}Expand description
Gummel-Poon BJT model parameters.
The Gummel-Poon model extends Ebers-Moll with:
- Base charge modulation (Early effect, high injection)
- Separate forward/reverse ideality factors
- Base-emitter and base-collector leakage currents
- Junction capacitances for transient analysis
Key equations:
Qb = (1 + Vbc/Vaf + Vbe/Var) / sqrt(1 - 4*q1/Ikf - 4*q2/Ikr)
Icc = Is * (exp(Vbe/Nf/Vt) - 1) / Qb
Iec = Is * (exp(Vbc/Nr/Vt) - 1) / Qb
Ic = Icc - Iec/Br
Ib = Icc/Bf + Iec/Br + Ise*(exp(Vbe/Ne/Vt)-1) + Isc*(exp(Vbc/Nc/Vt)-1)Reference: H.K. Gummel and H.C. Poon, “An Integral Charge Control Model of Bipolar Transistors”, Bell Syst. Tech. J., 1970.
Fields§
§is: f64Saturation current (A). Typically 1e-15 to 1e-12.
bf: f64Forward current gain (beta_F, hFE). Typically 100-500.
br: f64Reverse current gain (beta_R). Typically 1-20.
nf: f64Forward ideality factor (typically 1.0).
nr: f64Reverse ideality factor (typically 1.0).
vt: f64Thermal voltage (V). kT/q ≈ 25.85mV at 25°C.
vaf: f64Forward Early voltage (V). Models base-width modulation in forward-active. Typically 50-200V. Set to crate::Wave::INFINITY to disable.
var: f64Reverse Early voltage (V). Models base-width modulation in reverse-active. Typically 5-50V. Set to crate::Wave::INFINITY to disable.
ikf: f64Forward knee current (A). High-injection corner for forward gain. Typically 0.01-1A. Set to crate::Wave::INFINITY to disable.
ikr: f64Reverse knee current (A). High-injection corner for reverse gain. Typically 0.001-0.1A. Set to crate::Wave::INFINITY to disable.
ise: f64B-E leakage saturation current (A). Typically 0 or 1e-14.
ne: f64B-E leakage ideality factor. Typically 1.5-2.0.
isc: f64B-C leakage saturation current (A). Typically 0 or 1e-13.
nc: f64B-C leakage ideality factor. Typically 1.5-2.0.
cje: f64Zero-bias B-E junction capacitance (F).
vje: f64B-E built-in potential (V). Typically 0.7-0.9V.
mje: f64B-E grading coefficient. Typically 0.33-0.5.
cjc: f64Zero-bias B-C junction capacitance (F).
vjc: f64B-C built-in potential (V). Typically 0.5-0.75V.
mjc: f64B-C grading coefficient. Typically 0.33-0.5.
rb: f64Base spreading resistance (Ω). Models ohmic loss in base region. Typical range: 1–40 Ω. Causes negative feedback and limits gain.
re: f64Emitter ohmic resistance (Ω). Typical range: 0.1–2 Ω. Contributes degeneration / gain reduction.
rc: f64Collector ohmic resistance (Ω). Typical range: 0.1–4 Ω.
tf: f64Forward transit time (s). Affects high-frequency response via diffusion capacitance. C_diff_be = TF * gm = TF * Ic / Vt.
tr: f64Reverse transit time (s). Contributes to B-C diffusion capacitance. C_diff_bc = TR * gm_r = TR * Ie / Vt.
is_pnp: boolWhether this is a PNP (vs NPN) transistor.
Implementations§
§impl GummelPoonModel
impl GummelPoonModel
pub fn base_charge(&self, vbe: f64, vbc: f64) -> f64
pub fn base_charge(&self, vbe: f64, vbc: f64) -> f64
Compute the base charge factor Qb.
Qb models base-width modulation (Early effect) and high-injection effects. When Qb > 1, the effective β drops (beta droop at high currents).
q1 = 1 + Vbc/Vaf + Vbe/Var
q2 = Is * (exp(Vbe/Nf/Vt) - 1) / Ikf + Is * (exp(Vbc/Nr/Vt) - 1) / Ikr
Qb = q1/2 * (1 + sqrt(1 + 4*q2))pub fn currents(&self, vbe: f64, vbc: f64) -> (f64, f64)
pub fn currents(&self, vbe: f64, vbc: f64) -> (f64, f64)
Compute collector current using Gummel-Poon transport equations.
Returns (Ic, Ib) tuple.
pub fn currents_and_jacobian(&self, vbe: f64, vbc: f64) -> (f64, f64, [f64; 4])
pub fn currents_and_jacobian(&self, vbe: f64, vbc: f64) -> (f64, f64, [f64; 4])
Compute currents AND analytical 2×2 Jacobian in one pass.
Returns (ic, ib, [∂ib/∂vbe, ∂ib/∂vbc, ∂ic/∂vbe, ∂ic/∂vbc]).
Note: derivatives are w.r.t. (vbe, vbc), not (vbe, vce). Caller must chain-rule for (vbe, vce): ∂f/∂vce = -∂f/∂vbc since vbc = vbe - vce.
pub fn capacitance_be(&self, vbe: f64, ic: f64) -> f64
pub fn capacitance_be(&self, vbe: f64, ic: f64) -> f64
Compute B-E junction capacitance including both depletion and diffusion components.
Depletion capacitance: Standard junction formula with forward-bias linearization to avoid singularity at Vbe = Vje.
Diffusion capacitance: C_diff = TF × gm = TF × Ic / Vt. Dominant at high current densities; models minority carrier storage.
ic is the collector current at the current operating point (A).
§Note
These capacitances are currently computed by BjtGummelPoonRoot for
reactive transient simulation. BjtTwoPort does not yet integrate them
into its Newton-Raphson solver; a future task should add sample-rate
and state tracking analogous to BjtGummelPoonRoot::cap_be_state.
pub fn capacitance_bc(&self, vbc: f64, ie: f64) -> f64
pub fn capacitance_bc(&self, vbc: f64, ie: f64) -> f64
Compute B-C junction capacitance including both depletion and diffusion components.
Diffusion capacitance: C_diff = TR × gm_r = TR × |Ie| / Vt.
ie is the emitter current at the current operating point (A).
§Note
See note on capacitance_be regarding integration into BjtTwoPort.
Trait Implementations§
§impl Clone for GummelPoonModel
impl Clone for GummelPoonModel
§fn clone(&self) -> GummelPoonModel
fn clone(&self) -> GummelPoonModel
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more