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

Go to the source code of this file.

Functions

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

Function Documentation

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

Definition at line 16 of file mespzld.c.

20 {
21  register MESmodel *model = (MESmodel*)inModel;
22  register MESinstance *here;
23  double gdpr;
24  double gspr;
25  double gm;
26  double gds;
27  double ggs;
28  double xgs;
29  double ggd;
30  double xgd;
31 
32  for( ; model != NULL; model = model->MESnextModel ) {
33 
34  for( here = model->MESinstances; here != NULL;
35  here = here->MESnextInstance) {
36 
37 
38  gdpr=model->MESdrainConduct * here->MESarea;
39  gspr=model->MESsourceConduct * here->MESarea;
40  gm= *(ckt->CKTstate0 + here->MESgm) ;
41  gds= *(ckt->CKTstate0 + here->MESgds) ;
42  ggs= *(ckt->CKTstate0 + here->MESggs) ;
43  xgs= *(ckt->CKTstate0 + here->MESqgs) ;
44  ggd= *(ckt->CKTstate0 + here->MESggd) ;
45  xgd= *(ckt->CKTstate0 + here->MESqgd) ;
46  *(here->MESdrainDrainPtr ) += gdpr;
47  *(here->MESgateGatePtr ) += ggd+ggs;
48  *(here->MESgateGatePtr ) += (xgd+xgs)*s->real;
49  *(here->MESgateGatePtr +1) += (xgd+xgs)*s->imag;
50  *(here->MESsourceSourcePtr ) += gspr;
51  *(here->MESdrainPrimeDrainPrimePtr ) += gdpr+gds+ggd;
52  *(here->MESdrainPrimeDrainPrimePtr ) += xgd*s->real;
53  *(here->MESdrainPrimeDrainPrimePtr +1) += xgd*s->imag;
54  *(here->MESsourcePrimeSourcePrimePtr ) += gspr+gds+gm+ggs;
55  *(here->MESsourcePrimeSourcePrimePtr ) += xgs*s->real;
56  *(here->MESsourcePrimeSourcePrimePtr +1) += xgs*s->imag;
57  *(here->MESdrainDrainPrimePtr ) -= gdpr;
58  *(here->MESgateDrainPrimePtr ) -= ggd;
59  *(here->MESgateDrainPrimePtr ) -= xgd*s->real;
60  *(here->MESgateDrainPrimePtr +1) -= xgd*s->imag;
61  *(here->MESgateSourcePrimePtr ) -= ggs;
62  *(here->MESgateSourcePrimePtr ) -= xgs*s->real;
63  *(here->MESgateSourcePrimePtr +1) -= xgs*s->imag;
64  *(here->MESsourceSourcePrimePtr ) -= gspr;
65  *(here->MESdrainPrimeDrainPtr ) -= gdpr;
66  *(here->MESdrainPrimeGatePtr ) += (-ggd+gm);
67  *(here->MESdrainPrimeGatePtr ) -= xgd*s->real;
68  *(here->MESdrainPrimeGatePtr +1) -= xgd*s->imag;
69  *(here->MESdrainPrimeSourcePrimePtr ) += (-gds-gm);
70  *(here->MESsourcePrimeGatePtr ) += (-ggs-gm);
71  *(here->MESsourcePrimeGatePtr ) -= xgs*s->real;
72  *(here->MESsourcePrimeGatePtr +1) -= xgs*s->imag;
73  *(here->MESsourcePrimeSourcePtr ) -= gspr;
74  *(here->MESsourcePrimeDrainPrimePtr ) -= gds;
75 
76  }
77  }
78  return(OK);
79 }
double * MESdrainDrainPrimePtr
Definition: mesdefs.h:35
double * MESgateSourcePrimePtr
Definition: mesdefs.h:39
double * MESdrainDrainPtr
Definition: mesdefs.h:55
MESinstance * MESinstances
Definition: mesdefs.h:163
double real
Definition: complex.h:13
double MESdrainConduct
Definition: mesdefs.h:183
struct sMESmodel * MESnextModel
Definition: mesdefs.h:161
double MESsourceConduct
Definition: mesdefs.h:184
struct sMESinstance * MESnextInstance
Definition: mesdefs.h:22
#define OK
Definition: iferrmsg.h:17
double * MESgateGatePtr
Definition: mesdefs.h:57
#define NULL
Definition: spdefs.h:121
double * MESdrainPrimeDrainPtr
Definition: mesdefs.h:43
double * MESsourceSourcePtr
Definition: mesdefs.h:59
double * MESsourcePrimeSourcePtr
Definition: mesdefs.h:51
double * MESdrainPrimeSourcePrimePtr
Definition: mesdefs.h:47
double MESarea
Definition: mesdefs.h:32
double * MESsourcePrimeGatePtr
Definition: mesdefs.h:49
static char model[32]
Definition: subckt.c:76
double * MESsourcePrimeDrainPrimePtr
Definition: mesdefs.h:53
double imag
Definition: complex.h:14
double * MESdrainPrimeGatePtr
Definition: mesdefs.h:45
double * MESsourcePrimeSourcePrimePtr
Definition: mesdefs.h:63
double * MESdrainPrimeDrainPrimePtr
Definition: mesdefs.h:61
double * MESsourceSourcePrimePtr
Definition: mesdefs.h:41
double * MESgateDrainPrimePtr
Definition: mesdefs.h:37