Formatting with MSVC2022

This commit is contained in:
Holger Vogt 2023-03-29 14:25:35 +02:00
parent 4a95de5cd7
commit 3c41ab1190
2 changed files with 276 additions and 269 deletions

View File

@ -13,7 +13,7 @@ Modified 2001: AlansFixes
#ifdef XSPICE
#include "ngspice/evt.h"
#include "ngspice/enh.h"
/* gtri - add - wbk - 12/19/90 - Add headers */
/* gtri - add - wbk - 12/19/90 - Add headers */
#include "ngspice/mif.h"
#include "ngspice/evtproto.h"
#include "ngspice/ipctiein.h"
@ -42,9 +42,9 @@ do { \
int
ACan(CKTcircuit *ckt, int restart)
ACan(CKTcircuit* ckt, int restart)
{
ACAN *job = (ACAN *) ckt->CKTcurJob;
ACAN* job = (ACAN*)ckt->CKTcurJob;
double freq;
double freqTol; /* tolerence parameter for finding final frequency */
@ -55,23 +55,23 @@ ACan(CKTcircuit *ckt, int restart)
double startTime;
int error;
int numNames;
IFuid *nameList; /* va: tmalloc'ed list of names */
IFuid* nameList; /* va: tmalloc'ed list of names */
IFuid freqUid;
static runDesc *acPlot = NULL;
runDesc *plot = NULL;
static runDesc* acPlot = NULL;
runDesc* plot = NULL;
#ifdef XSPICE
/* gtri - add - wbk - 12/19/90 - Add IPC stuff and anal_init and anal_type */
/* gtri - add - wbk - 12/19/90 - Add IPC stuff and anal_init and anal_type */
/* Tell the beginPlot routine what mode we're in */
/* Tell the beginPlot routine what mode we're in */
g_ipc.anal_type = IPC_ANAL_AC;
/* Tell the code models what mode we're in */
g_mif_info.circuit.anal_type = MIF_DC;
g_mif_info.circuit.anal_init = MIF_TRUE;
/* gtri - end - wbk */
/* gtri - end - wbk */
#endif
/* start at beginning */
@ -86,8 +86,8 @@ ACan(CKTcircuit *ckt, int restart)
fprintf(stderr, "ERROR: AC startfreq <= 0\n");
return E_PARMVAL;
}
double num_steps = floor(fabs(log10(job->ACstopFreq/job->ACstartFreq))*job->ACnumberSteps);
job->ACfreqDelta = exp((log(job->ACstopFreq/job->ACstartFreq))/ num_steps);
double num_steps = floor(fabs(log10(job->ACstopFreq / job->ACstartFreq)) * job->ACnumberSteps);
job->ACfreqDelta = exp((log(job->ACstopFreq / job->ACstartFreq)) / num_steps);
break;
case OCTAVE:
@ -96,133 +96,134 @@ ACan(CKTcircuit *ckt, int restart)
return E_PARMVAL;
}
job->ACfreqDelta =
exp(log(2.0)/job->ACnumberSteps);
exp(log(2.0) / job->ACnumberSteps);
break;
case LINEAR:
if (job->ACnumberSteps-1 > 1)
if (job->ACnumberSteps - 1 > 1)
job->ACfreqDelta =
(job->ACstopFreq -
job->ACstartFreq) /
(job->ACnumberSteps - 1);
(job->ACstopFreq -
job->ACstartFreq) /
(job->ACnumberSteps - 1);
else
/* Patch from: Richard McRoberts
* This patch is for a rather pathological case:
* a linear step with only one point */
/* Patch from: Richard McRoberts
* This patch is for a rather pathological case:
* a linear step with only one point */
job->ACfreqDelta = 0;
break;
default:
return(E_BADPARM);
}
#ifdef XSPICE
/* gtri - begin - wbk - Call EVTop if event-driven instances exist */
if(ckt->evt->counts.num_insts != 0) {
error = EVTop(ckt,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT,
ckt->CKTdcMaxIter,
MIF_TRUE);
EVTdump(ckt, IPC_ANAL_DCOP, 0.0);
EVTop_save(ckt, MIF_TRUE, 0.0);
}
else
#endif
/* If no event-driven instances, do what SPICE normally does */
if (!ckt->CKTnoopac) { /* skip OP if option NOOPAC is set and circuit is linear */
error = CKTop(ckt,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT,
ckt->CKTdcMaxIter);
if(error){
fprintf(stdout,"\nAC operating point failed -\n");
CKTncDump(ckt);
return(error);
}
}
else
fprintf(stdout,"\n Linear circuit, option noopac given: no OP analysis\n");
#ifdef XSPICE
/* gtri - add - wbk - 12/19/90 - Add IPC stuff */
/* gtri - begin - wbk - Call EVTop if event-driven instances exist */
/* Send the operating point results for Mspice compatibility */
if(g_ipc.enabled)
{
/* Call CKTnames to get names of nodes/branches used by
BeginPlot */
/* Probably should free nameList after this block since
called again... */
error = CKTnames(ckt,&numNames,&nameList);
if(error) return(error);
if (ckt->evt->counts.num_insts != 0) {
error = EVTop(ckt,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT,
ckt->CKTdcMaxIter,
MIF_TRUE);
EVTdump(ckt, IPC_ANAL_DCOP, 0.0);
EVTop_save(ckt, MIF_TRUE, 0.0);
}
else
#endif
/* If no event-driven instances, do what SPICE normally does */
if (!ckt->CKTnoopac) { /* skip OP if option NOOPAC is set and circuit is linear */
error = CKTop(ckt,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT,
ckt->CKTdcMaxIter);
/* We have to do a beginPlot here since the data to return is
* different for the DCOP than it is for the AC analysis.
* Moreover the begin plot has not even been done yet at this
* point...
*/
SPfrontEnd->OUTpBeginPlot (ckt, ckt->CKTcurJob,
ckt->CKTcurJob->JOBname,
NULL, IF_REAL,
numNames, nameList, IF_REAL,
&acPlot);
txfree(nameList);
if (error) {
fprintf(stdout, "\nAC operating point failed -\n");
CKTncDump(ckt);
return(error);
}
}
else
fprintf(stdout, "\n Linear circuit, option noopac given: no OP analysis\n");
ipc_send_dcop_prefix();
CKTdump(ckt, 0.0, acPlot);
ipc_send_dcop_suffix();
#ifdef XSPICE
/* gtri - add - wbk - 12/19/90 - Add IPC stuff */
SPfrontEnd->OUTendPlot (acPlot);
}
/* gtri - end - wbk */
/* Send the operating point results for Mspice compatibility */
if (g_ipc.enabled)
{
/* Call CKTnames to get names of nodes/branches used by
BeginPlot */
/* Probably should free nameList after this block since
called again... */
error = CKTnames(ckt, &numNames, &nameList);
if (error) return(error);
/* We have to do a beginPlot here since the data to return is
* different for the DCOP than it is for the AC analysis.
* Moreover the begin plot has not even been done yet at this
* point...
*/
SPfrontEnd->OUTpBeginPlot(ckt, ckt->CKTcurJob,
ckt->CKTcurJob->JOBname,
NULL, IF_REAL,
numNames, nameList, IF_REAL,
&acPlot);
txfree(nameList);
ipc_send_dcop_prefix();
CKTdump(ckt, 0.0, acPlot);
ipc_send_dcop_suffix();
SPfrontEnd->OUTendPlot(acPlot);
}
/* gtri - end - wbk */
#endif
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITSMSIG;
error = CKTload(ckt);
if(error) return(error);
if (error) return(error);
error = CKTnames(ckt,&numNames,&nameList);
if(error) return(error);
error = CKTnames(ckt, &numNames, &nameList);
if (error) return(error);
if (ckt->CKTkeepOpInfo) {
/* Dump operating point. */
error = SPfrontEnd->OUTpBeginPlot (ckt, ckt->CKTcurJob,
"AC Operating Point",
NULL, IF_REAL,
numNames, nameList, IF_REAL,
&plot);
if(error) return(error);
CKTdump(ckt, 0.0, plot);
SPfrontEnd->OUTendPlot (plot);
plot = NULL;
}
if (ckt->CKTkeepOpInfo) {
/* Dump operating point. */
error = SPfrontEnd->OUTpBeginPlot(ckt, ckt->CKTcurJob,
"AC Operating Point",
NULL, IF_REAL,
numNames, nameList, IF_REAL,
&plot);
if (error) return(error);
CKTdump(ckt, 0.0, plot);
SPfrontEnd->OUTendPlot(plot);
plot = NULL;
}
SPfrontEnd->IFnewUid (ckt, &freqUid, NULL, "frequency", UID_OTHER, NULL);
error = SPfrontEnd->OUTpBeginPlot (ckt, ckt->CKTcurJob,
ckt->CKTcurJob->JOBname,
freqUid, IF_REAL,
numNames, nameList, IF_COMPLEX,
&acPlot);
tfree(nameList);
if(error) return(error);
SPfrontEnd->IFnewUid(ckt, &freqUid, NULL, "frequency", UID_OTHER, NULL);
error = SPfrontEnd->OUTpBeginPlot(ckt, ckt->CKTcurJob,
ckt->CKTcurJob->JOBname,
freqUid, IF_REAL,
numNames, nameList, IF_COMPLEX,
&acPlot);
tfree(nameList);
if (error) return(error);
if (job->ACstepType != LINEAR) {
SPfrontEnd->OUTattributes (acPlot, NULL, OUT_SCALE_LOG, NULL);
}
SPfrontEnd->OUTattributes(acPlot, NULL, OUT_SCALE_LOG, NULL);
}
freq = job->ACstartFreq;
} else { /* continue previous analysis */
}
else { /* continue previous analysis */
freq = job->ACsaveFreq;
job->ACsaveFreq = 0; /* clear the 'old' frequency */
/* fix resume? saj, indeed !*/
error = SPfrontEnd->OUTpBeginPlot (NULL, NULL,
NULL,
NULL, 0,
666, NULL, 666,
&acPlot);
/* saj*/
/* fix resume? saj, indeed !*/
error = SPfrontEnd->OUTpBeginPlot(NULL, NULL,
NULL,
NULL, 0,
666, NULL, 666,
&acPlot);
/* saj*/
}
switch (job->ACstepType) {
case DECADE:
case OCTAVE:
@ -238,14 +239,14 @@ ACan(CKTcircuit *ckt, int restart)
#ifdef XSPICE
/* gtri - add - wbk - 12/19/90 - Set anal_init and anal_type */
/* gtri - add - wbk - 12/19/90 - Set anal_init and anal_type */
g_mif_info.circuit.anal_init = MIF_TRUE;
/* Tell the code models what mode we're in */
g_mif_info.circuit.anal_type = MIF_AC;
/* gtri - end - wbk */
/* gtri - end - wbk */
#endif
INIT_STATS();
@ -254,19 +255,19 @@ ACan(CKTcircuit *ckt, int restart)
/* main loop through all scheduled frequencies */
while (freq <= job->ACstopFreq + freqTol) {
if(SPfrontEnd->IFpauseTest()) {
if (SPfrontEnd->IFpauseTest()) {
/* user asked us to pause via an interrupt */
job->ACsaveFreq = freq;
return(E_PAUSE);
}
ckt->CKTomega = 2.0 * M_PI *freq;
ckt->CKTomega = 2.0 * M_PI * freq;
/* Update opertating point, if variable 'hertz' is given */
if (ckt->CKTvarHertz) {
#ifdef XSPICE
/* Call EVTop if event-driven instances exist */
if(ckt->evt->counts.num_insts != 0) {
if (ckt->evt->counts.num_insts != 0) {
error = EVTop(ckt,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT,
@ -275,25 +276,25 @@ ACan(CKTcircuit *ckt, int restart)
EVTdump(ckt, IPC_ANAL_DCOP, 0.0);
EVTop_save(ckt, MIF_TRUE, 0.0);
}
else
else
#endif
// If no event-driven instances, do what SPICE normally does
// If no event-driven instances, do what SPICE normally does
error = CKTop(ckt,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT,
ckt->CKTdcMaxIter);
if(error){
fprintf(stdout,"\nAC operating point failed -\n");
if (error) {
fprintf(stdout, "\nAC operating point failed -\n");
CKTncDump(ckt);
return(error);
}
}
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITSMSIG;
error = CKTload(ckt);
if(error) return(error);
if (error) return(error);
}
ckt->CKTmode = (ckt->CKTmode&MODEUIC) | MODEAC;
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEAC;
error = NIacIter(ckt);
if (error) {
UPDATE_STATS(DOING_AC);
@ -301,18 +302,18 @@ ACan(CKTcircuit *ckt, int restart)
}
#ifdef WANT_SENSE2
if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode&ACSEN) ){
if (ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & ACSEN)) {
long save;
int save1;
save = ckt->CKTmode;
ckt->CKTmode=(ckt->CKTmode&MODEUIC)|MODEDCOP|MODEINITSMSIG;
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITSMSIG;
save1 = ckt->CKTsenInfo->SENmode;
ckt->CKTsenInfo->SENmode = ACSEN;
if (freq == job->ACstartFreq) {
ckt->CKTsenInfo->SENacpertflag = 1;
}
else{
else {
ckt->CKTsenInfo->SENacpertflag = 0;
}
error = CKTsenAC(ckt);
@ -324,24 +325,24 @@ ACan(CKTcircuit *ckt, int restart)
#endif
#ifdef XSPICE
/* gtri - modify - wbk - 12/19/90 - Send IPC stuff */
/* gtri - modify - wbk - 12/19/90 - Send IPC stuff */
if(g_ipc.enabled)
if (g_ipc.enabled)
ipc_send_data_prefix(freq);
error = CKTacDump(ckt,freq,acPlot);
error = CKTacDump(ckt, freq, acPlot);
if(g_ipc.enabled)
if (g_ipc.enabled)
ipc_send_data_suffix();
/* gtri - modify - wbk - 12/19/90 - Send IPC stuff */
/* gtri - modify - wbk - 12/19/90 - Send IPC stuff */
#else
error = CKTacDump(ckt,freq,acPlot);
error = CKTacDump(ckt, freq, acPlot);
#endif
if (error) {
UPDATE_STATS(DOING_AC);
return(error);
}
UPDATE_STATS(DOING_AC);
return(error);
}
/* increment frequency */
@ -349,90 +350,90 @@ ACan(CKTcircuit *ckt, int restart)
case DECADE:
case OCTAVE:
/* inserted again 14.12.2001 */
/* inserted again 14.12.2001 */
#ifdef HAS_PROGREP
{
double endfreq = job->ACstopFreq;
double startfreq = job->ACstartFreq;
endfreq = log(endfreq);
if (startfreq == 0.0)
startfreq = 1e-12;
startfreq = log(startfreq);
{
double endfreq = job->ACstopFreq;
double startfreq = job->ACstartFreq;
endfreq = log(endfreq);
if (startfreq == 0.0)
startfreq = 1e-12;
startfreq = log(startfreq);
if (freq > 0.0)
SetAnalyse( "ac", (int)((log(freq)-startfreq) * 1000.0 / (endfreq-startfreq)));
}
if (freq > 0.0)
SetAnalyse("ac", (int)((log(freq) - startfreq) * 1000.0 / (endfreq - startfreq)));
}
#endif
freq *= job->ACfreqDelta;
if (job->ACfreqDelta == 1) goto endsweep;
freq *= job->ACfreqDelta;
if (job->ACfreqDelta == 1) goto endsweep;
break;
case LINEAR:
#ifdef HAS_PROGREP
{
double endfreq = job->ACstopFreq;
double startfreq = job->ACstartFreq;
SetAnalyse( "ac", (int)((freq - startfreq)* 1000.0 / (endfreq-startfreq)));
}
{
double endfreq = job->ACstopFreq;
double startfreq = job->ACstartFreq;
SetAnalyse("ac", (int)((freq - startfreq) * 1000.0 / (endfreq - startfreq)));
}
#endif
freq += job->ACfreqDelta;
if (job->ACfreqDelta == 0) goto endsweep;
break;
freq += job->ACfreqDelta;
if (job->ACfreqDelta == 0) goto endsweep;
break;
default:
return(E_INTERN);
}
}
endsweep:
SPfrontEnd->OUTendPlot (acPlot);
SPfrontEnd->OUTendPlot(acPlot);
acPlot = NULL;
UPDATE_STATS(0);
return(0);
}
/* CKTacLoad(ckt)
* this is a driver program to iterate through all the various
* ac load functions provided for the circuit elements in the
* given circuit
*/
/* CKTacLoad(ckt)
* this is a driver program to iterate through all the various
* ac load functions provided for the circuit elements in the
* given circuit
*/
int
CKTacLoad(CKTcircuit *ckt)
CKTacLoad(CKTcircuit* ckt)
{
int i;
int size;
int error;
double startTime;
startTime = SPfrontEnd->IFseconds();
startTime = SPfrontEnd->IFseconds();
size = SMPmatSize(ckt->CKTmatrix);
for (i=0;i<=size;i++) {
ckt->CKTrhs[i]=0;
ckt->CKTirhs[i]=0;
for (i = 0; i <= size; i++) {
ckt->CKTrhs[i] = 0;
ckt->CKTirhs[i] = 0;
}
SMPcClear(ckt->CKTmatrix);
for (i=0;i<DEVmaxnum;i++) {
if ( DEVices[i] && DEVices[i]->DEVacLoad && ckt->CKThead[i] ) {
error = DEVices[i]->DEVacLoad (ckt->CKThead[i], ckt);
if(error) return(error);
for (i = 0; i < DEVmaxnum; i++) {
if (DEVices[i] && DEVices[i]->DEVacLoad && ckt->CKThead[i]) {
error = DEVices[i]->DEVacLoad(ckt->CKThead[i], ckt);
if (error) return(error);
}
}
#ifdef XSPICE
/* gtri - begin - Put resistors to ground at all nodes. */
/* Value of resistor is set by new "rshunt" option. */
if(ckt->enh->rshunt_data.enabled) {
for(i = 0; i < ckt->enh->rshunt_data.num_nodes; i++) {
*(ckt->enh->rshunt_data.diag[i]) +=
ckt->enh->rshunt_data.gshunt;
}
#ifdef XSPICE
/* gtri - begin - Put resistors to ground at all nodes. */
/* Value of resistor is set by new "rshunt" option. */
if (ckt->enh->rshunt_data.enabled) {
for (i = 0; i < ckt->enh->rshunt_data.num_nodes; i++) {
*(ckt->enh->rshunt_data.diag[i]) +=
ckt->enh->rshunt_data.gshunt;
}
}
/* gtri - end - Put resistors to ground at all nodes */
@ -451,7 +452,7 @@ CKTacLoad(CKTcircuit *ckt)
/* gtri - end - wbk - 11/26/90 */
#endif
ckt->CKTstat->STATloadTime += SPfrontEnd->IFseconds() - startTime;
return(OK);
}

View File

@ -21,18 +21,18 @@ Modified: 2001 AlansFixes
#include "vsrc/vsrcdefs.h"
#include "isrc/isrcdefs.h"
// fixme
// ugly hack to work around missing api to specify the "type" of signals
// fixme
// ugly hack to work around missing api to specify the "type" of signals
extern int fixme_onoise_type;
extern int fixme_inoise_type;
int
NOISEan (CKTcircuit *ckt, int restart)
NOISEan(CKTcircuit* ckt, int restart)
{
/* variable must be static, for continuation of interrupted (Ctrl-C),
longer lasting noise anlysis */
static Ndata *data;
static Ndata* data;
double realVal;
double imagVal;
@ -44,32 +44,34 @@ NOISEan (CKTcircuit *ckt, int restart)
double freqTol; /* tolerence parameter for finding final frequency; hack */
int i, src_type;
NOISEAN *job = (NOISEAN *) ckt->CKTcurJob;
GENinstance *inst = CKTfndDev(ckt, job->input);
NOISEAN* job = (NOISEAN*)ckt->CKTcurJob;
GENinstance* inst = CKTfndDev(ckt, job->input);
bool frequequal = AlmostEqualUlps(job->NstartFreq, job->NstopFreq, 3);
posOutNode = (job->output) -> number;
negOutNode = (job->outputRef) -> number;
posOutNode = (job->output)->number;
negOutNode = (job->outputRef)->number;
if (job->NnumSteps < 1) {
SPfrontEnd->IFerrorf(ERR_WARNING,
"Number of steps for noise measurement has to be larger than 0,\n but currently is %d\n",
job->NnumSteps);
"Number of steps for noise measurement has to be larger than 0,\n but currently is %d\n",
job->NnumSteps);
return(E_PARMVAL);
} else if ((job->NnumSteps == 1) && (job->NstpType == LINEAR)) {
}
else if ((job->NnumSteps == 1) && (job->NstpType == LINEAR)) {
if (!frequequal) {
job->NstopFreq = job->NstartFreq;
SPfrontEnd->IFerrorf(ERR_WARNING,
"Noise measurement at a single frequency %g only!\n",
job->NstartFreq);
"Noise measurement at a single frequency %g only!\n",
job->NstartFreq);
}
} else {
}
else {
if (frequequal) {
job->NstopFreq = job->NstartFreq;
job->NnumSteps = 1;
SPfrontEnd->IFerrorf(ERR_WARNING,
"Noise measurement at a single frequency %g only!\n",
job->NstartFreq);
"Noise measurement at a single frequency %g only!\n",
job->NstartFreq);
}
}
/* see if the source specified is AC */
@ -77,45 +79,47 @@ NOISEan (CKTcircuit *ckt, int restart)
bool ac_given = FALSE;
if (!inst || inst->GENmodPtr->GENmodType < 0) {
SPfrontEnd->IFerrorf (ERR_WARNING,
"Noise input source %s not in circuit",
job->input);
SPfrontEnd->IFerrorf(ERR_WARNING,
"Noise input source %s not in circuit",
job->input);
return E_NOTFOUND;
}
if (inst->GENmodPtr->GENmodType == CKTtypelook("Vsource")) {
ac_given = ((VSRCinstance *)inst) -> VSRCacGiven;
ac_given = ((VSRCinstance*)inst)->VSRCacGiven;
src_type = SV_VOLTAGE;
} else if(inst->GENmodPtr->GENmodType == CKTtypelook("Isource")) {
ac_given = ((ISRCinstance *)inst) -> ISRCacGiven;
}
else if (inst->GENmodPtr->GENmodType == CKTtypelook("Isource")) {
ac_given = ((ISRCinstance*)inst)->ISRCacGiven;
src_type = SV_CURRENT;
} else {
SPfrontEnd->IFerrorf (ERR_WARNING,
"Noise input source %s is not of proper type",
job->input);
}
else {
SPfrontEnd->IFerrorf(ERR_WARNING,
"Noise input source %s is not of proper type",
job->input);
return E_NOTFOUND;
}
if (!ac_given) {
SPfrontEnd->IFerrorf (ERR_WARNING,
"Noise input source %s has no AC value",
job->input);
SPfrontEnd->IFerrorf(ERR_WARNING,
"Noise input source %s has no AC value",
job->input);
return E_NOACINPUT;
}
}
if ( (job->NsavFstp == 0.0) || restart) { /* va, NsavFstp is double */
if ((job->NsavFstp == 0.0) || restart) { /* va, NsavFstp is double */
switch (job->NstpType) {
case DECADE:
job->NfreqDelta = exp(log(10.0)/
job->NnumSteps);
job->NfreqDelta = exp(log(10.0) /
job->NnumSteps);
break;
case OCTAVE:
job->NfreqDelta = exp(log(2.0)/
job->NnumSteps);
job->NfreqDelta = exp(log(2.0) /
job->NnumSteps);
break;
case LINEAR:
@ -123,7 +127,7 @@ NOISEan (CKTcircuit *ckt, int restart)
job->NfreqDelta = 0;
else
job->NfreqDelta = (job->NstopFreq -
job->NstartFreq) / (job->NnumSteps - 1);
job->NstartFreq) / (job->NnumSteps - 1);
break;
default:
@ -132,15 +136,15 @@ NOISEan (CKTcircuit *ckt, int restart)
/* error = DCop(ckt); */
error = CKTop(ckt, (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT,
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT,
ckt->CKTdcMaxIter);
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT,
ckt->CKTdcMaxIter);
if (error) return(error);
/* Patch to noisean.c by Richard D. McRoberts. */
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITSMSIG;
error = CKTload(ckt);
if(error) return(error);
if (error) return(error);
data = TMALLOC(Ndata, 1);
step = 0;
@ -152,10 +156,10 @@ NOISEan (CKTcircuit *ckt, int restart)
/* the current front-end needs the namelist to be fully
declared before an OUTpBeginplot */
SPfrontEnd->IFnewUid (ckt, &freqUid, NULL, "frequency", UID_OTHER, NULL);
SPfrontEnd->IFnewUid(ckt, &freqUid, NULL, "frequency", UID_OTHER, NULL);
data->numPlots = 0; /* we don't have any plots yet */
error = CKTnoise(ckt,N_DENS,N_OPEN,data);
error = CKTnoise(ckt, N_DENS, N_OPEN, data);
if (error) return(error);
/*
@ -165,10 +169,10 @@ NOISEan (CKTcircuit *ckt, int restart)
if (src_type == SV_VOLTAGE)
fixme_inoise_type =
data->squared ? SV_SQR_VOLTAGE_DENSITY : SV_VOLTAGE_DENSITY;
data->squared ? SV_SQR_VOLTAGE_DENSITY : SV_VOLTAGE_DENSITY;
else
fixme_inoise_type =
data->squared ? SV_SQR_CURRENT_DENSITY : SV_CURRENT_DENSITY;
data->squared ? SV_SQR_CURRENT_DENSITY : SV_CURRENT_DENSITY;
fixme_onoise_type =
data->squared ? SV_SQR_VOLTAGE_DENSITY : SV_VOLTAGE_DENSITY;
@ -176,36 +180,37 @@ NOISEan (CKTcircuit *ckt, int restart)
if (!data->squared)
for (i = 0; i < data->numPlots; i++)
data->squared_value[i] =
ciprefix("inoise", data->namelist[i]) ||
ciprefix("onoise", data->namelist[i]);
ciprefix("inoise", data->namelist[i]) ||
ciprefix("onoise", data->namelist[i]);
error = SPfrontEnd->OUTpBeginPlot (ckt, ckt->CKTcurJob,
data->squared
? "Noise Spectral Density Curves - (V^2 or A^2)/Hz"
error = SPfrontEnd->OUTpBeginPlot(ckt, ckt->CKTcurJob,
data->squared
? "Noise Spectral Density Curves - (V^2 or A^2)/Hz"
: "Noise Spectral Density Curves",
freqUid, IF_REAL,
data->numPlots, data->namelist, IF_REAL,
&(data->NplotPtr));
: "Noise Spectral Density Curves",
freqUid, IF_REAL,
data->numPlots, data->namelist, IF_REAL,
&(data->NplotPtr));
if (error) return(error);
if (job->NstpType != LINEAR) {
SPfrontEnd->OUTattributes (data->NplotPtr, NULL, OUT_SCALE_LOG, NULL);
SPfrontEnd->OUTattributes(data->NplotPtr, NULL, OUT_SCALE_LOG, NULL);
}
} else { /* we must have paused before. pick up where we left off */
}
else { /* we must have paused before. pick up where we left off */
step = (int)(job->NsavFstp);
switch (job->NstpType) {
case DECADE:
case OCTAVE:
data->freq = job->NstartFreq * exp (step *
log (job->NfreqDelta));
data->freq = job->NstartFreq * exp(step *
log(job->NfreqDelta));
break;
case LINEAR:
data->freq = job->NstartFreq + step *
job->NfreqDelta;
job->NfreqDelta;
break;
default:
@ -216,11 +221,11 @@ NOISEan (CKTcircuit *ckt, int restart)
data->outNoiz = job->NsavOnoise;
data->inNoise = job->NsavInoise;
/* saj resume rawfile fix*/
error = SPfrontEnd->OUTpBeginPlot (NULL, NULL,
NULL,
NULL, 0,
666, NULL, 666,
&(data->NplotPtr));
error = SPfrontEnd->OUTpBeginPlot(NULL, NULL,
NULL,
NULL, 0,
666, NULL, 666,
&(data->NplotPtr));
/*saj*/
}
@ -241,7 +246,7 @@ NOISEan (CKTcircuit *ckt, int restart)
/* do the noise analysis over all frequencies */
while (data->freq <= job->NstopFreq + freqTol) {
if(SPfrontEnd->IFpauseTest()) {
if (SPfrontEnd->IFpauseTest()) {
job->NsavFstp = step; /* save our results */
job->NsavOnoise = data->outNoiz; /* up until now */
job->NsavInoise = data->inNoise;
@ -257,12 +262,12 @@ NOISEan (CKTcircuit *ckt, int restart)
*/
NIacIter(ckt);
realVal = ckt->CKTrhsOld [posOutNode]
- ckt->CKTrhsOld [negOutNode];
imagVal = ckt->CKTirhsOld [posOutNode]
- ckt->CKTirhsOld [negOutNode];
data->GainSqInv = 1.0 / MAX(((realVal*realVal)
+ (imagVal*imagVal)),N_MINGAIN);
realVal = ckt->CKTrhsOld[posOutNode]
- ckt->CKTrhsOld[negOutNode];
imagVal = ckt->CKTirhsOld[posOutNode]
- ckt->CKTirhsOld[negOutNode];
data->GainSqInv = 1.0 / MAX(((realVal * realVal)
+ (imagVal * imagVal)), N_MINGAIN);
data->lnGainInv = log(data->GainSqInv);
/* set up a block of "common" data so we don't have to
@ -270,13 +275,14 @@ NOISEan (CKTcircuit *ckt, int restart)
*/
data->delFreq = data->freq - data->lstFreq;
data->lnFreq = log(MAX(data->freq,N_MINLOG));
data->lnLastFreq = log(MAX(data->lstFreq,N_MINLOG));
data->lnFreq = log(MAX(data->freq, N_MINLOG));
data->lnLastFreq = log(MAX(data->lstFreq, N_MINLOG));
data->delLnFreq = data->lnFreq - data->lnLastFreq;
if ((job->NStpsSm != 0) && ((step % (job->NStpsSm)) == 0)) {
data->prtSummary = TRUE;
} else {
}
else {
data->prtSummary = FALSE;
}
@ -289,13 +295,13 @@ NOISEan (CKTcircuit *ckt, int restart)
* it will be given in refVal.rValue (see later)
*/
NInzIter(ckt,posOutNode,negOutNode); /* solve the adjoint system */
NInzIter(ckt, posOutNode, negOutNode); /* solve the adjoint system */
/* now we use the adjoint system to calculate the noise
* contributions of each generator in the circuit
*/
error = CKTnoise(ckt,N_DENS,N_CALC,data);
error = CKTnoise(ckt, N_DENS, N_CALC, data);
if (error) return(error);
data->lstFreq = data->freq;
@ -321,23 +327,23 @@ NOISEan (CKTcircuit *ckt, int restart)
break;
}
error = CKTnoise(ckt,N_DENS,N_CLOSE,data);
error = CKTnoise(ckt, N_DENS, N_CLOSE, data);
if (error) return(error);
data->numPlots = 0;
data->outNumber = 0;
if (job->NstartFreq != job->NstopFreq) {
error = CKTnoise(ckt,INT_NOIZ,N_OPEN,data);
error = CKTnoise(ckt, INT_NOIZ, N_OPEN, data);
if (error) return(error);
if (src_type == SV_VOLTAGE)
fixme_inoise_type =
data->squared ? SV_SQR_VOLTAGE : SV_VOLTAGE;
data->squared ? SV_SQR_VOLTAGE : SV_VOLTAGE;
else
fixme_inoise_type =
data->squared ? SV_SQR_CURRENT : SV_CURRENT;
data->squared ? SV_SQR_CURRENT : SV_CURRENT;
fixme_onoise_type =
data->squared ? SV_SQR_VOLTAGE : SV_VOLTAGE;
@ -345,21 +351,21 @@ NOISEan (CKTcircuit *ckt, int restart)
if (!data->squared)
for (i = 0; i < data->numPlots; i++)
data->squared_value[i] =
ciprefix("inoise", data->namelist[i]) ||
ciprefix("onoise", data->namelist[i]);
ciprefix("inoise", data->namelist[i]) ||
ciprefix("onoise", data->namelist[i]);
SPfrontEnd->OUTpBeginPlot (ckt, ckt->CKTcurJob,
data->squared
? "Integrated Noise - V^2 or A^2"
: "Integrated Noise",
NULL, 0,
data->numPlots, data->namelist, IF_REAL,
&(data->NplotPtr));
SPfrontEnd->OUTpBeginPlot(ckt, ckt->CKTcurJob,
data->squared
? "Integrated Noise - V^2 or A^2"
: "Integrated Noise",
NULL, 0,
data->numPlots, data->namelist, IF_REAL,
&(data->NplotPtr));
error = CKTnoise(ckt,INT_NOIZ,N_CALC,data);
error = CKTnoise(ckt, INT_NOIZ, N_CALC, data);
if (error) return(error);
error = CKTnoise(ckt,INT_NOIZ,N_CLOSE,data);
error = CKTnoise(ckt, INT_NOIZ, N_CLOSE, data);
if (error) return(error);
}