@ -79,7 +79,20 @@ DIOsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
model - > DIOtranTimeTemp2 = 0.0 ;
model - > DIOtranTimeTemp2 = 0.0 ;
}
}
if ( ! model - > DIOjunctionCapGiven ) {
if ( ! model - > DIOjunctionCapGiven ) {
model - > DIOjunctionCap = 0 ;
if ( newcompat . ps | | newcompat . lt ) {
double cdiode = 0. ;
/* to improve convergence (sometimes) */
if ( cp_getvar ( " diode_cj0 " , CP_REAL , & cdiode , 0 ) & & cdiode > 0 ) {
model - > DIOjunctionCap = cdiode ;
if ( ft_ngdebug )
fprintf ( stderr , " Diode junction capacitance in model %s set to %e F \n " , model - > gen . GENmodName , cdiode ) ;
}
else
model - > DIOjunctionCap = 0.0 ;
}
else {
model - > DIOjunctionCap = 0.0 ;
}
}
}
if ( ! model - > DIOjunctionSWCapGiven ) {
if ( ! model - > DIOjunctionSWCapGiven ) {
model - > DIOjunctionSWCap = 0 ;
model - > DIOjunctionSWCap = 0 ;
@ -210,10 +223,12 @@ DIOsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
if ( ( ! model - > DIOresistGiven ) | | ( model - > DIOresist = = 0 ) ) {
if ( ( ! model - > DIOresistGiven ) | | ( model - > DIOresist = = 0 ) ) {
if ( newcompat . ps | | newcompat . lt ) {
if ( newcompat . ps | | newcompat . lt ) {
double rsdiode = 0. ;
double rsdiode = 0. ;
if ( cp_getvar ( " rsdiode " , CP_REAL , & rsdiode , 0 ) & & rsdiode > 0 ) {
model - > DIOconductance = 1. / rsdiode ; /* sometimes improves convergence */
/* to improve convergence (sometimes) */
if ( cp_getvar ( " diode_rser " , CP_REAL , & rsdiode , 0 ) & & rsdiode > 0 ) {
model - > DIOconductance = 1. / rsdiode ;
model - > DIOresist = rsdiode ;
if ( ft_ngdebug )
if ( ft_ngdebug )
fprintf ( stderr , " Diode series resistance in model %s set to 100 microOhm \n " , model - > gen . GENmodName ) ;
fprintf ( stderr , " Diode series resistance in model %s set to %e Ohm \n " , model - > gen . GENmodName , rsdiod e ) ;
}
}
else
else
model - > DIOconductance = 0.0 ;
model - > DIOconductance = 0.0 ;