Jspice3
srcconv.c File Reference
#include "spice.h"
#include <stdio.h>
#include "misc.h"
#include "srcdefs.h"
#include "sperror.h"
#include "util.h"
Include dependency graph for srcconv.c:

Go to the source code of this file.

Functions

int SRCconvTest (GENmodel *inModel, CKTcircuit *ckt)
 

Function Documentation

int SRCconvTest ( GENmodel inModel,
CKTcircuit ckt 
)

Definition at line 18 of file srcconv.c.

22 {
23  SRCmodel *model = (SRCmodel *)inModel;
24  SRCinstance *here;
25  int i;
26  double diff;
27  double prev;
28  double tol;
29  double rhs;
30 
31  for ( ; model != NULL; model = model->SRCnextModel) {
32  for (here = model->SRCinstances; here != NULL;
33  here = here->SRCnextInstance) {
34 
35  if (!here->SRCtree || !here->SRCtree->numVars) continue;
36 
37  for (i = 0; i < here->SRCtree->numVars; i++) {
38  here->SRCvalues[i] = *(ckt->CKTrhsOld + here->SRCeqns[i]);
39  }
40 
41  if ((*(here->SRCtree->IFeval))
42  (here->SRCtree, ckt->CKTgmin,&rhs,here->SRCvalues,
43  here->SRCderivs,&ckt->CKTtime) == OK) {
44  /* !! last arg bogus if ft_sim->specSigs changed !! */
45 
46  prev = here->SRCprev;
47  diff = FABS(prev - rhs);
48  if (here->SRCtype == SRC_V) {
49  tol = ckt->CKTreltol *
50  MAX(FABS(rhs),FABS(prev)) + ckt->CKTvoltTol;
51  }
52  else {
53  tol = ckt->CKTreltol *
54  MAX(FABS(rhs),FABS(prev)) + ckt->CKTabstol;
55  }
56 
57  if (diff > tol) {
58  ckt->CKTnoncon++;
59  ckt->CKTtroubleElt = (GENinstance *) here;
60  return (OK);
61  }
62  }
63  else {
64  return (E_BADPARM);
65  }
66  }
67  }
68  return (OK);
69 }
double CKTtime
Definition: cktdefs.h:77
struct sSRCinstance * SRCnextInstance
Definition: srcdefs.h:26
#define SRC_V
Definition: srcdefs.h:217
double * SRCvalues
Definition: srcdefs.h:109
GENinstance * CKTtroubleElt
Definition: cktdefs.h:229
#define MAX(a, b)
Definition: spdefs.h:135
int * SRCeqns
Definition: srcdefs.h:118
double SRCprev
Definition: srcdefs.h:121
#define E_BADPARM
Definition: iferrmsg.h:26
double CKTreltol
Definition: cktdefs.h:183
double CKTabstol
Definition: cktdefs.h:180
#define OK
Definition: iferrmsg.h:17
double * CKTrhsOld
Definition: cktdefs.h:98
#define NULL
Definition: spdefs.h:121
SRCinstance * SRCinstances
Definition: srcdefs.h:205
static char model[32]
Definition: subckt.c:76
#define FABS(a)
Definition: util.h:41
int numVars
Definition: ifsim.h:159
double * SRCderivs
Definition: srcdefs.h:115
double CKTvoltTol
Definition: cktdefs.h:185
double CKTgmin
Definition: cktdefs.h:190
int CKTnoncon
Definition: cktdefs.h:203
int SRCtype
Definition: srcdefs.h:65
IFparseTree * SRCtree
Definition: srcdefs.h:103
struct sSRCmodel * SRCnextModel
Definition: srcdefs.h:202