introduce rcxxx limiting as long as adms can't node collapsing
This commit is contained in:
parent
4bfc00ddd4
commit
6ac699f08e
|
|
@ -28,6 +28,11 @@ begin // Currents and charges
|
|||
in case of vanishing resistance corresponding node
|
||||
is not addressed: */
|
||||
|
||||
`ifdef insideADMS
|
||||
//dw we have limited all the RCXXX to MIN_R
|
||||
Vc4c1 = TYPE * V(c4, c1);
|
||||
Vc3c4 = TYPE * V(c3, c4);
|
||||
`else
|
||||
if (RCBLX > 0.0)
|
||||
begin
|
||||
if (RCBLI > 0.0)
|
||||
|
|
@ -54,6 +59,7 @@ else
|
|||
Vc3c4 = 0 ;
|
||||
end
|
||||
end
|
||||
`endif
|
||||
|
||||
Vb1c4 = Vb1b2 + Vb2c2 - Vc1c2 - Vc4c1 ;
|
||||
Vcc3 = - Vbc + Vbb1 + Vb1c4 - Vc3c4 ;
|
||||
|
|
@ -257,9 +263,9 @@ Vsc3 = Vsc4 - Vc3c4 ;
|
|||
// nBex since MXT 504.10.1: Ackn. Jos Peters, Geoffrey Coram
|
||||
nBex = (g1 - If0) / (1.0 + sqrt(1.0 + g1));
|
||||
pWex = g2 / (1.0 + sqrt(1.0 + g2));
|
||||
/* Iex until and including MXT 504.9:
|
||||
Iex = (1.0 / BRI_T) * (0.5 * IK_TM * nBex - IS_TM);
|
||||
*/
|
||||
// Iex until and including MXT 504.9:
|
||||
// Iex = (1.0 / BRI_T) * (0.5 * IK_TM * nBex - IS_TM);
|
||||
//
|
||||
// Iex since MXT 504.10: RvdT@TUDelft Q1, 2011:
|
||||
Iex = IK_TM * nBex / (2.0 * BRI_T) ;
|
||||
|
||||
|
|
@ -295,7 +301,7 @@ if (ICSS < 0.0)
|
|||
XIsub = 0.0;
|
||||
`endif
|
||||
|
||||
/* begin: RvdT, Q4 2012, Mextram 504.11: added EXMOD=2 option: */
|
||||
// begin: RvdT, Q4 2012, Mextram 504.11: added EXMOD=2 option:
|
||||
if (EXMOD == 1 || EXMOD == 2)
|
||||
begin
|
||||
|
||||
|
|
@ -310,9 +316,9 @@ if (ICSS < 0.0)
|
|||
// XnBex = Xg1 / (1.0 + sqrt(1.0 + Xg1));
|
||||
// XnBex in MXT 504.10.1: Ackn. Jos Peters, Geoffrey Coram:
|
||||
XnBex = (Xg1 - If0) / (1.0 + sqrt(1.0 + Xg1));
|
||||
/* XIMex until and including MXT 504.9:
|
||||
XIMex = XEXT * (0.5 * IK_TM * XnBex - IS_TM) / BRI_T;
|
||||
*/
|
||||
// XIMex until and including MXT 504.9:
|
||||
// XIMex = XEXT * (0.5 * IK_TM * XnBex - IS_TM) / BRI_T;
|
||||
//
|
||||
// XIMex in MXT 504.10: RvdT@TUDelft Q1, 2011:
|
||||
XIMex = XEXT * 0.5 * IK_TM * XnBex / BRI_T;
|
||||
|
||||
|
|
@ -592,11 +598,21 @@ This construct supports the case
|
|||
RCBLI = 0.0 and or RCBLX = 0.0 .
|
||||
It is up to the compiler to adjust the circuit topology
|
||||
and perform a node-collapse in such cases. */
|
||||
if (RCBLX > 0.0)
|
||||
begin
|
||||
`ifdef insideADMS
|
||||
//dw we have limited all the RCXXX to MIN_R
|
||||
I(b, c3) <+ TYPE * XIex;
|
||||
I(c, c3) <+ TYPE * Vcc3 * GCCxx_TM ;
|
||||
I(b, c3) <+ ddt(TYPE * (XQtex + XQex));
|
||||
I(c4, c1) <+ TYPE * Vc4c1 * GCCin_TM;
|
||||
I(b1, c4) <+ TYPE * (Ib3 + Iex);
|
||||
I(c3, c4) <+ TYPE * Vc3c4 * GCCex_TM ;
|
||||
I(b1, c4) <+ ddt(TYPE * (Qtex + Qex));
|
||||
`else
|
||||
if (RCBLX > 0.0)
|
||||
begin
|
||||
I(b, c3) <+ TYPE * XIex;
|
||||
I(c, c3) <+ TYPE * Vcc3 * GCCxx_TM ;
|
||||
I(b, c3) <+ ddt(TYPE * (XQtex + XQex));
|
||||
if (RCBLI > 0.0)
|
||||
begin
|
||||
I(c4, c1) <+ TYPE * Vc4c1 * GCCin_TM;
|
||||
|
|
@ -635,4 +651,5 @@ else
|
|||
I(c3, c1) <+ TYPE * Vc3c4 * GCCex_TM ;
|
||||
end
|
||||
end
|
||||
`endif
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,10 @@
|
|||
`define AJS 2.0
|
||||
`define VEXLIM 400.0
|
||||
`define PI 3.1415926
|
||||
`ifdef insideADMS
|
||||
//dw needed for RCXXX limiting
|
||||
`define MIN_R 0.001
|
||||
`endif
|
||||
|
||||
// Desriptions and units
|
||||
`ifdef __VAMS_COMPACT_MODELING__
|
||||
|
|
@ -34,9 +38,16 @@
|
|||
`define PAI(des,uni) parameter integer
|
||||
`endif
|
||||
|
||||
// ADMS specific definitions
|
||||
`ifdef insideADMS
|
||||
`define MODEL @(initial_model)
|
||||
`define INSTANCE @(initial_instance)
|
||||
`define NOISE @(noise)
|
||||
`else
|
||||
`define MODEL
|
||||
`define INSTANCE
|
||||
`define NOISE
|
||||
`endif
|
||||
|
||||
// Smooth limitting functions
|
||||
`define max_hyp0(result, x, epsilon)\
|
||||
|
|
|
|||
|
|
@ -77,9 +77,25 @@
|
|||
RBC_T = RBC * exp(lntN * AEX);
|
||||
|
||||
// RvdT, 30-11-2007: new collector resistances RCCxx_T, RCCex_T, RCCin_T
|
||||
`ifdef insideADMS
|
||||
//dw limiting all the RCXXX to MIN_R
|
||||
if (RCC > 0.0)
|
||||
RCCxx_T = RCC * exp(lntN * AC);
|
||||
else
|
||||
RCCxx_T = `MIN_R * exp(lntN * AC);
|
||||
if (RCBLX > 0.0)
|
||||
RCCex_T = RCBLX * exp(lntN * ACBL);
|
||||
else
|
||||
RCCex_T = `MIN_R * exp(lntN * ACBL);
|
||||
if (RCBLI > 0.0)
|
||||
RCCin_T = RCBLI * exp(lntN * ACBL);
|
||||
else
|
||||
RCCin_T = `MIN_R * exp(lntN * ACBL);
|
||||
`else
|
||||
RCCxx_T = RCC * exp(lntN * AC);
|
||||
RCCex_T = RCBLX * exp(lntN * ACBL);
|
||||
RCCin_T = RCBLI * exp(lntN * ACBL);
|
||||
`endif
|
||||
|
||||
RCV_T = RCV * exp(lntN * AEPI);
|
||||
|
||||
|
|
@ -207,6 +223,12 @@
|
|||
|
||||
|
||||
// RvdT, 03-12-2007: new collector conductances
|
||||
`ifdef insideADMS
|
||||
//dw we have limited all the RCXXX to MIN_R
|
||||
GCCxx_TM = 1.0 / RCCxx_TM ;
|
||||
GCCex_TM = 1.0 / RCCex_TM ;
|
||||
GCCin_TM = 1.0 / RCCin_TM ;
|
||||
`else
|
||||
if (RCC > 0.0)
|
||||
begin
|
||||
GCCxx_TM = 1.0 / RCCxx_TM ;
|
||||
|
|
@ -233,6 +255,7 @@
|
|||
begin
|
||||
GCCin_TM = 0 ;
|
||||
end
|
||||
`endif
|
||||
|
||||
`ifdef SELFHEATING
|
||||
RTH_Tamb_M = RTH_Tamb * invMULT;
|
||||
|
|
|
|||
Loading…
Reference in New Issue