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

Go to the source code of this file.

Functions

int MESacLoad (GENmodel *inModel, CKTcircuit *ckt)
 

Function Documentation

int MESacLoad ( GENmodel inModel,
CKTcircuit ckt 
)

Definition at line 16 of file mesacl.c.

19 {
20  register MESmodel *model = (MESmodel*)inModel;
21  register MESinstance *here;
22  double gdpr;
23  double gspr;
24  double gm;
25  double gds;
26  double ggs;
27  double xgs;
28  double ggd;
29  double xgd;
30 
31  for( ; model != NULL; model = model->MESnextModel ) {
32 
33  for( here = model->MESinstances; here != NULL;
34  here = here->MESnextInstance) {
35 
36 
37  gdpr=model->MESdrainConduct * here->MESarea;
38  gspr=model->MESsourceConduct * here->MESarea;
39  gm= *(ckt->CKTstate0 + here->MESgm) ;
40  gds= *(ckt->CKTstate0 + here->MESgds) ;
41  ggs= *(ckt->CKTstate0 + here->MESggs) ;
42  xgs= *(ckt->CKTstate0 + here->MESqgs) * ckt->CKTomega ;
43  ggd= *(ckt->CKTstate0 + here->MESggd) ;
44  xgd= *(ckt->CKTstate0 + here->MESqgd) * ckt->CKTomega ;
45  *(here->MESdrainDrainPtr ) += gdpr;
46  *(here->MESgateGatePtr ) += ggd+ggs;
47  *(here->MESgateGatePtr +1) += xgd+xgs;
48  *(here->MESsourceSourcePtr ) += gspr;
49  *(here->MESdrainPrimeDrainPrimePtr ) += gdpr+gds+ggd;
50  *(here->MESdrainPrimeDrainPrimePtr +1) += xgd;
51  *(here->MESsourcePrimeSourcePrimePtr ) += gspr+gds+gm+ggs;
52  *(here->MESsourcePrimeSourcePrimePtr +1) += xgs;
53  *(here->MESdrainDrainPrimePtr ) -= gdpr;
54  *(here->MESgateDrainPrimePtr ) -= ggd;
55  *(here->MESgateDrainPrimePtr +1) -= xgd;
56  *(here->MESgateSourcePrimePtr ) -= ggs;
57  *(here->MESgateSourcePrimePtr +1) -= xgs;
58  *(here->MESsourceSourcePrimePtr ) -= gspr;
59  *(here->MESdrainPrimeDrainPtr ) -= gdpr;
60  *(here->MESdrainPrimeGatePtr ) += (-ggd+gm);
61  *(here->MESdrainPrimeGatePtr +1) -= xgd;
62  *(here->MESdrainPrimeSourcePrimePtr ) += (-gds-gm);
63  *(here->MESsourcePrimeGatePtr ) += (-ggs-gm);
64  *(here->MESsourcePrimeGatePtr +1) -= xgs;
65  *(here->MESsourcePrimeSourcePtr ) -= gspr;
66  *(here->MESsourcePrimeDrainPrimePtr ) -= gds;
67 
68  }
69  }
70  return(OK);
71 }
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 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 CKTomega
Definition: cktdefs.h:198
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 * 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