analysis/dctrcurv.c, bug fix, sweeping `temper' in a dc analysis

incorrect update of model parameters,
  need to `invoke CKTtemp()' *after* `inp_evaluate_temper()'

see tests/regression/temper/temper-2.cir
This commit is contained in:
rlar 2015-08-10 17:45:09 +02:00
parent fc6455ca99
commit 5940bf9294
1 changed files with 4 additions and 4 deletions

View File

@ -158,9 +158,9 @@ DCtrCurv(CKTcircuit *ckt, int restart)
job->TRCVvSave[i] = ckt->CKTtemp; /* Saves the old circuit temperature */
job->TRCVvType[i] = TEMP_CODE; /* Set the sweep type code */
ckt->CKTtemp = job->TRCVvStart[i] + CONSTCtoK; /* Set the new circuit temp */
CKTtemp(ckt);
if (expr_w_temper)
inp_evaluate_temper();
CKTtemp(ckt);
goto found;
}
@ -306,9 +306,9 @@ resume:
} else if (job->TRCVvType[i] == TEMP_CODE) {
ckt->CKTtemp = job->TRCVvStart[i] + CONSTCtoK;
CKTtemp(ckt);
if (expr_w_temper)
inp_evaluate_temper();
CKTtemp(ckt);
} else if (job->TRCVvType[i] == rcode) {
((RESinstance *)(job->TRCVvElt[i]))->RESresist =
@ -521,9 +521,9 @@ nextstep:;
else if (job->TRCVvType[i] == TEMP_CODE)
{
ckt->CKTtemp += job->TRCVvStep[i];
CKTtemp(ckt);
if (expr_w_temper)
inp_evaluate_temper();
CKTtemp(ckt);
} /* else not possible */
if(SPfrontEnd->IFpauseTest()) {
@ -566,9 +566,9 @@ nextstep:;
}
else if (job->TRCVvType[i] == TEMP_CODE) {
ckt->CKTtemp = job->TRCVvSave[i];
CKTtemp(ckt);
if (expr_w_temper)
inp_evaluate_temper();
CKTtemp(ckt);
} /* else not possible */
}
SPfrontEnd->OUTendPlot (plot);