From 5940bf92949a5d15aad7ea5538ef941de1dd9a3e Mon Sep 17 00:00:00 2001 From: rlar Date: Mon, 10 Aug 2015 17:45:09 +0200 Subject: [PATCH] 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 --- src/spicelib/analysis/dctrcurv.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/spicelib/analysis/dctrcurv.c b/src/spicelib/analysis/dctrcurv.c index 373b025e0..f358baa27 100644 --- a/src/spicelib/analysis/dctrcurv.c +++ b/src/spicelib/analysis/dctrcurv.c @@ -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);