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

Go to the source code of this file.

Functions

int SRCpzLoad (GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
 

Function Documentation

int SRCpzLoad ( GENmodel inModel,
CKTcircuit ckt,
SPcomplex s 
)

Definition at line 18 of file srcpzld.c.

26 {
27  SRCmodel *model = (SRCmodel*)inModel;
28  SRCinstance *here;
29  int i, j;
30  double value, deriv;
31 
32  /* loop through all the Arbitrary source models */
33  for ( ; model != NULL; model = model->SRCnextModel) {
34 
35  /* loop through all the instances of the model */
36  for (here = model->SRCinstances; here != NULL;
37  here = here->SRCnextInstance) {
38 
39  if (here->SRCtype == SRC_V) {
40 
41  if (here->SRCacGiven) {
42  /* an ac source,
43  * no effective contribution
44  * diagonal element made 1
45  */
46  *(here->SRCposIbrptr) += 1.0 ;
47  *(here->SRCnegIbrptr) += -1.0 ;
48  *(here->SRCibrIbrptr) += 1.0 ;
49  continue;
50  }
51  if (here->SRCposNode) {
52  *(here->SRCposIbrptr) += 1.0;
53  *(here->SRCibrPosptr) += 1.0;
54  }
55  if (here->SRCnegNode) {
56  *(here->SRCnegIbrptr) -= 1.0;
57  *(here->SRCibrNegptr) -= 1.0;
58  }
59  if (here->SRCccCoeffGiven) {
60  *(here->SRCibrContBrptr) += here->SRCcoeff;
61  }
62  else if (here->SRCvcCoeffGiven) {
63  *(here->SRCibrContPosptr) -= here->SRCcoeff;
64  *(here->SRCibrContNegptr) += here->SRCcoeff;
65  }
66  else if (here->SRCtree) {
67  /* a dc source,
68  * the connecting nodes are shorted
69  * unless it has dependence
70  */
71 
72  for (i = 0; i < here->SRCtree->numVars; i++) {
73  here->SRCvalues[i] =
74  *(ckt->CKTrhsOld + here->SRCeqns[i]);
75  }
76 
77  if ((*(here->SRCtree->IFeval))
78  (here->SRCtree, ckt->CKTgmin,&value,here->SRCvalues,
79  here->SRCderivs,(double*)NULL) == OK) {
80  /* !! last arg bogus if ft_sim->specSigs changed !! */
81 
82  for (i = 0; i < here->SRCtree->numVars; i++) {
83  *(here->SRCposptr[i]) -= here->SRCderivs[i];
84  }
85  }
86  else {
87  return (E_BADPARM);
88  }
89 
90  }
91  }
92  else {
93  if (here->SRCacGiven) {
94  continue;
95  }
96  else if (here->SRCccCoeffGiven) {
97  *(here->SRCposContBrptr) += here->SRCcoeff;
98  *(here->SRCnegContBrptr) -= here->SRCcoeff;
99  }
100  else if (here->SRCvcCoeffGiven) {
101  *(here->SRCposContPosptr) += here->SRCcoeff;
102  *(here->SRCposContNegptr) -= here->SRCcoeff;
103  *(here->SRCnegContPosptr) -= here->SRCcoeff;
104  *(here->SRCnegContNegptr) += here->SRCcoeff;
105  }
106  else if (here->SRCtree) {
107  for (i = 0; i < here->SRCtree->numVars; i++) {
108  here->SRCvalues[i] =
109  *(ckt->CKTrhsOld + here->SRCeqns[i]);
110  }
111 
112  if ((*(here->SRCtree->IFeval))
113  (here->SRCtree, ckt->CKTgmin,&value,
114  here->SRCvalues,here->SRCderivs,(double*)NULL) == OK) {
115  /* !! last arg bogus if ft_sim->specSigs changed !! */
116 
117  for (j = 0,i = 0; i < here->SRCtree->numVars; i++) {
118  deriv = here->SRCderivs[i];
119  *(here->SRCposptr[j++]) += deriv;
120  *(here->SRCposptr[j++]) -= deriv;
121  }
122  }
123  else {
124  return (E_BADPARM);
125  }
126  }
127  }
128  }
129  }
130  return (OK);
131 }
struct sSRCinstance * SRCnextInstance
Definition: srcdefs.h:26
double * SRCibrContBrptr
Definition: srcdefs.h:157
#define SRC_V
Definition: srcdefs.h:217
double * SRCvalues
Definition: srcdefs.h:109
double * SRCibrNegptr
Definition: srcdefs.h:173
unsigned SRCccCoeffGiven
Definition: srcdefs.h:187
double SRCcoeff
Definition: srcdefs.h:71
int * SRCeqns
Definition: srcdefs.h:118
int SRCnegNode
Definition: srcdefs.h:38
int SRCposNode
Definition: srcdefs.h:35
#define E_BADPARM
Definition: iferrmsg.h:26
double * SRCnegContBrptr
Definition: srcdefs.h:145
double * SRCibrContPosptr
Definition: srcdefs.h:149
#define OK
Definition: iferrmsg.h:17
double * CKTrhsOld
Definition: cktdefs.h:98
double * SRCibrIbrptr
Definition: srcdefs.h:177
#define NULL
Definition: spdefs.h:121
SRCinstance * SRCinstances
Definition: srcdefs.h:205
double * SRCposContPosptr
Definition: srcdefs.h:125
double * SRCnegIbrptr
Definition: srcdefs.h:165
unsigned SRCvcCoeffGiven
Definition: srcdefs.h:188
double * SRCposContNegptr
Definition: srcdefs.h:129
double * SRCposIbrptr
Definition: srcdefs.h:161
double ** SRCposptr
Definition: srcdefs.h:53
static char model[32]
Definition: subckt.c:76
unsigned SRCacGiven
Definition: srcdefs.h:181
int numVars
Definition: ifsim.h:159
double * SRCibrContNegptr
Definition: srcdefs.h:153
double * SRCderivs
Definition: srcdefs.h:115
double CKTgmin
Definition: cktdefs.h:190
double * SRCnegContNegptr
Definition: srcdefs.h:137
double * SRCposContBrptr
Definition: srcdefs.h:141
double * SRCibrPosptr
Definition: srcdefs.h:169
int SRCtype
Definition: srcdefs.h:65
IFparseTree * SRCtree
Definition: srcdefs.h:103
double * SRCnegContPosptr
Definition: srcdefs.h:133
struct sSRCmodel * SRCnextModel
Definition: srcdefs.h:202