20 static int dio_pnjlim(
double*,
double,
double,
double);
77 here->
DIOcd += *(ckt->CKTstate0 + here->DIOcapCurrent);
99 here->
DIOvd = xf1* *(ckt->CKTstate1 + here->DIOvoltage)
100 + xf2* *(ckt->CKTstate2 + here->DIOvoltage);
102 *(ckt->CKTstate0 + here->DIOvoltage) =
103 *(ckt->CKTstate1 + here->DIOvoltage);
111 here->
DIOcd += *(ckt->CKTstate0 + here->DIOcapCurrent);
153 here->
DIOvd = *(ckt->CKTstate1 + here->DIOvoltage);
157 *(ckt->CKTstate1 + here->DIOcapCharge) =
158 *(ckt->CKTstate0 + here->DIOcapCharge);
161 here->
DIOcd += *(ckt->CKTstate0 + here->DIOcapCurrent);
177 here->
DIOvd = *(ckt->CKTstate0 + here->DIOvoltage);
195 *(ckt->CKTstate0 + here->DIOvoltage) = here->
DIOinitCond;
230 double delvd, cdhat, tol, A1, A2;
232 delvd = here->
DIOvd - *(ckt->CKTstate0 + here->DIOvoltage);
235 A2 =
FABS(*(ckt->CKTstate0 + here->DIOvoltage));
236 tol = ckt->CKTvoltTol + ckt->CKTreltol*
MAX(A1,A2);
238 if (
FABS(delvd) < tol) {
242 tol = ckt->CKTabstol + ckt->CKTreltol*
MAX(A1,A2);
243 A1 = cdhat - here->
DIOcd;
244 if (
FABS(A1) < tol) {
245 here->
DIOvd = *(ckt->CKTstate0 + here->DIOvoltage);
270 -(*(ckt->CKTstate0 + here->DIOvoltage) + here->
DIOtBrkdwnV),
297 if ((vn > vcrit) && (
FABS(vn - vold) > (vt + vt))) {
299 arg = 1 + (vn - vold)/vt;
301 *vnew = vold + vt*log(arg);
308 *vnew = vt*log(vn/vt);
337 here->
DIOcd = csat*(arg-1) + ckt->CKTgmin*vd;
338 here->
DIOgd = csat*arg/vte + ckt->CKTgmin;
342 arg = arg * arg * arg;
343 here->
DIOcd = -csat*(1+arg) + ckt->CKTgmin*vd;
344 here->
DIOgd = csat*3*arg/vd + ckt->CKTgmin;
348 here->
DIOcd = -csat*arg + ckt->CKTgmin*vd;
349 here->
DIOgd = csat*arg/vte + ckt->CKTgmin;
373 if (vd < here->DIOtDepCap) {
381 *(ckt->CKTstate0 + here->DIOcapCharge) =
389 czof2 = czero/model->
DIOf2;
390 *(ckt->CKTstate0 + here->DIOcapCharge) =
398 czof2*(model->
DIOf3 +
420 *(ckt->CKTstate0 + here->DIOvoltage) = here->
DIOvd;
unsigned DIObreakdownVoltageGiven
struct sDIOinstance * DIOnextInstance
static int dio_limiting()
double * DIOposPosPrimePtr
double * DIOposPrimePosPrimePtr
double * DIOposPrimePosPtr
double * DIOnegPosPrimePtr
int DIOload(GENmodel *inModel, CKTcircuit *ckt)
DIOinstance * DIOinstances
double * DIOposPrimeNegPtr
#define NI_INTEG(ckt, geq, ceq, cap, qcap)
struct sDIOmodel * DIOnextModel
static int dio_pnjlim(double *vnew, double vold, double vt, double vcrit)