Fix a bug in simple diode, when ilimit is set, but not epsilon.

Make model more similar to LTSPICE
Add an example
This commit is contained in:
Holger Vogt
2022-10-08 16:50:38 +02:00
parent 7bb581b1b3
commit ec6a902fb9
2 changed files with 31 additions and 7 deletions
+6 -7
View File
@@ -147,23 +147,22 @@ void cm_sidiode(ARGS) /* structure holding parms,
grev = 1./PARAM(rrev);
hRevepsilon = 0.5 * PARAM(revepsilon);
loc->Va = Va = Vrev - hRevepsilon;
loc->Vb = Vb = Vrev + hRevepsilon;
loc->Va = Va = Vrev - PARAM(revepsilon); //hRevepsilon;
loc->Vb = Vb = Vrev; //+ hRevepsilon;
loc->a2 = grev/Revilimit;
if(hRevepsilon > 0.0) {
loc->a1 = (goff - grev)/PARAM(revepsilon);
loc->a2 = grev/Revilimit;
loc->revepsi = MIF_TRUE;
}
else
loc->revepsi = MIF_FALSE;
hEpsilon = 0.5 * PARAM(epsilon);
loc->Vc = Vc = Vfwd - hEpsilon;
loc->Vd = Vd = Vfwd + hEpsilon;
loc->Vc = Vc = Vfwd; // - hEpsilon;
loc->Vd = Vd = Vfwd + PARAM(epsilon); //hEpsilon;
loc->b2 = gon/Ilimit;
if(hEpsilon > 0.0) {
loc->b1 = (gon - goff)/PARAM(epsilon);
loc->b2 = gon/Ilimit;
loc->epsi = MIF_TRUE;
}
else