Merge branch 'pre-master-44' of ssh://git.code.sf.net/p/ngspice/ngspice into pre-master-44

This commit is contained in:
dwarning 2024-09-27 08:54:30 +02:00
commit b2802e5eb9
1 changed files with 19 additions and 4 deletions

View File

@ -79,7 +79,20 @@ DIOsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
model->DIOtranTimeTemp2 = 0.0;
}
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) {
model->DIOjunctionSWCap = 0;
@ -210,10 +223,12 @@ DIOsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
if((!model->DIOresistGiven) || (model->DIOresist==0)) {
if (newcompat.ps || newcompat.lt) {
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)
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, rsdiode);
}
else
model->DIOconductance = 0.0;