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

Go to the source code of this file.

Functions

int BJTacLoad (GENmodel *inModel, CKTcircuit *ckt)
 

Function Documentation

int BJTacLoad ( GENmodel inModel,
CKTcircuit ckt 
)

Definition at line 23 of file bjtacld.c.

27 {
28  BJTinstance *here;
29  BJTmodel *model = (BJTmodel*)inModel;
30  double gcpr;
31  double gepr;
32  double gpi;
33  double gmu;
34  double go;
35  double xgm;
36  double td;
37  double arg;
38  double gm;
39  double gx;
40  double xcpi;
41  double xcmu;
42  double xcbx;
43  double xccs;
44  double xcmcb;
45 
46  for ( ; model != NULL; model = model->BJTnextModel) {
47  for (here = model->BJTinstances; here != NULL;
48  here = here->BJTnextInstance) {
49 
50  gcpr = model->BJTcollectorConduct * here->BJTarea;
51  gepr = model->BJTemitterConduct * here->BJTarea;
52  gpi = here->BJTgpi;
53  gmu = here->BJTgmu;
54  gm = here->BJTgm;
55  go = here->BJTgo;
56  xgm = 0;
57  td = model->BJTexcessPhaseFactor;
58  if (td != 0) {
59  arg = td*ckt->CKTomega;
60  gm += go;
61  xgm = -gm*sin(arg);
62  gm = gm*cos(arg) - go;
63  }
64  gx = here->BJTgx;
65  xcpi = here->BJTcapbe * ckt->CKTomega;
66  xcmu = here->BJTcapbc * ckt->CKTomega;
67  xcbx = here->BJTcapbx * ckt->CKTomega;
68  xccs = here->BJTcapcs * ckt->CKTomega;
69  xcmcb= here->BJTgeqcb * ckt->CKTomega;
70 
71  *(here->BJTcolColPtr) += gcpr;
72  *(here->BJTbaseBasePtr) += gx;
73  *(here->BJTbaseBasePtr + 1) += xcbx;
74  *(here->BJTemitEmitPtr) += gepr;
75  *(here->BJTcolPrimeColPrimePtr) += gmu + go + gcpr;
76  *(here->BJTcolPrimeColPrimePtr + 1) += xcmu + xccs + xcbx;
77  *(here->BJTbasePrimeBasePrimePtr) += gx + gpi + gmu;
78  *(here->BJTbasePrimeBasePrimePtr + 1) += xcpi + xcmu + xcmcb;
79  *(here->BJTemitPrimeEmitPrimePtr) += gpi + gepr + gm + go;
80  *(here->BJTemitPrimeEmitPrimePtr + 1) += xcpi + xgm;
81  *(here->BJTcolColPrimePtr) -= gcpr;
82  *(here->BJTbaseBasePrimePtr) -= gx;
83  *(here->BJTemitEmitPrimePtr) -= gepr;
84  *(here->BJTcolPrimeColPtr) -= gcpr;
85  *(here->BJTcolPrimeBasePrimePtr) += -gmu + gm;
86  *(here->BJTcolPrimeBasePrimePtr + 1) += -xcmu + xgm;
87  *(here->BJTcolPrimeEmitPrimePtr) -= gm + go;
88  *(here->BJTcolPrimeEmitPrimePtr + 1) -= xgm;
89  *(here->BJTbasePrimeBasePtr) -= gx;
90  *(here->BJTbasePrimeColPrimePtr) -= gmu;
91  *(here->BJTbasePrimeColPrimePtr + 1) -= xcmu +xcmcb;
92  *(here->BJTbasePrimeEmitPrimePtr) -= gpi;
93  *(here->BJTbasePrimeEmitPrimePtr + 1) -= xcpi;
94  *(here->BJTemitPrimeEmitPtr) -= gepr;
95  *(here->BJTemitPrimeColPrimePtr) -= go;
96  *(here->BJTemitPrimeColPrimePtr + 1) += xcmcb;
97  *(here->BJTemitPrimeBasePrimePtr) -= gpi + gm;
98  *(here->BJTemitPrimeBasePrimePtr + 1) -= xcpi + xgm + xcmcb;
99  *(here->BJTsubstSubstPtr + 1) += xccs;
100  *(here->BJTcolPrimeSubstPtr + 1) -= xccs;
101  *(here->BJTsubstColPrimePtr + 1) -= xccs;
102  *(here->BJTbaseColPrimePtr + 1) -= xcbx;
103  *(here->BJTcolPrimeBasePtr + 1) -= xcbx;
104  }
105  }
106  return (OK);
107 }
double * BJTcolPrimeColPtr
Definition: bjtdefs.h:71
BJTinstance * BJTinstances
Definition: bjtdefs.h:259
double * BJTemitPrimeEmitPrimePtr
Definition: bjtdefs.h:99
double * BJTcolColPrimePtr
Definition: bjtdefs.h:65
struct sBJTmodel * BJTnextModel
Definition: bjtdefs.h:257
double * BJTbaseBasePtr
Definition: bjtdefs.h:91
double * BJTbasePrimeBasePtr
Definition: bjtdefs.h:77
double * BJTemitPrimeBasePrimePtr
Definition: bjtdefs.h:87
double * BJTsubstSubstPtr
Definition: bjtdefs.h:101
double BJTcapbc
Definition: bjtdefs.h:51
double BJTarea
Definition: bjtdefs.h:32
double BJTcollectorConduct
Definition: bjtdefs.h:310
double * BJTbaseColPrimePtr
Definition: bjtdefs.h:107
double * BJTemitEmitPtr
Definition: bjtdefs.h:93
double * BJTcolPrimeBasePrimePtr
Definition: bjtdefs.h:73
double * BJTemitPrimeEmitPtr
Definition: bjtdefs.h:83
double * BJTcolPrimeBasePtr
Definition: bjtdefs.h:109
double * BJTcolColPtr
Definition: bjtdefs.h:89
struct sBJTinstance * BJTnextInstance
Definition: bjtdefs.h:20
double * BJTcolPrimeColPrimePtr
Definition: bjtdefs.h:95
double * BJTemitPrimeColPrimePtr
Definition: bjtdefs.h:85
double * BJTbasePrimeEmitPrimePtr
Definition: bjtdefs.h:81
#define OK
Definition: iferrmsg.h:17
double BJTcapbe
Definition: bjtdefs.h:50
double BJTgmu
Definition: bjtdefs.h:57
double * BJTcolPrimeSubstPtr
Definition: bjtdefs.h:103
double BJTexcessPhaseFactor
Definition: bjtdefs.h:313
#define NULL
Definition: spdefs.h:121
double cos()
double * BJTbasePrimeColPrimePtr
Definition: bjtdefs.h:79
double BJTgo
Definition: bjtdefs.h:59
double CKTomega
Definition: cktdefs.h:198
double * BJTemitEmitPrimePtr
Definition: bjtdefs.h:69
double BJTgpi
Definition: bjtdefs.h:56
double sin()
double BJTgm
Definition: bjtdefs.h:58
double * BJTcolPrimeEmitPrimePtr
Definition: bjtdefs.h:75
static char model[32]
Definition: subckt.c:76
double BJTcapcs
Definition: bjtdefs.h:52
double BJTcapbx
Definition: bjtdefs.h:53
double * BJTbasePrimeBasePrimePtr
Definition: bjtdefs.h:97
double * BJTsubstColPrimePtr
Definition: bjtdefs.h:105
double BJTgeqcb
Definition: bjtdefs.h:61
double BJTemitterConduct
Definition: bjtdefs.h:311
double * BJTbaseBasePrimePtr
Definition: bjtdefs.h:67
double BJTgx
Definition: bjtdefs.h:60