Jspice3
resask.c
Go to the documentation of this file.
1 /***************************************************************************
2 JSPICE3 adaptation of Spice3f2 - Copyright (c) Stephen R. Whiteley 1992
3 Copyright 1990 Regents of the University of California. All rights reserved.
4 Authors: 1985 Thomas L. Quarles
5  1992 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 #include "spice.h"
9 #include <stdio.h>
10 #include <math.h>
11 #include "resdefs.h"
12 #include "tskdefs.h"
13 #include "const.h"
14 #include "sperror.h"
15 #include "util.h"
16 
17 
18 /*ARGSUSED*/
19 int
20 RESask(ckt,inst,which,value,select)
21 
22 CKTcircuit *ckt;
23 GENinstance *inst;
24 int which;
25 IFvalue *value;
26 IFvalue *select;
27 {
28  RESinstance *fast = (RESinstance *)inst;
29  static char *msg = "Current and power not available for ac analysis";
30 
31  switch (which) {
32  case RES_TEMP:
33  value->rValue = fast->REStemp-CONSTCtoK;
34  break;
35  case RES_CONDUCT:
36  value->rValue = fast->RESconduct;
37  break;
38  case RES_RESIST:
39  value->rValue = fast->RESresist;
40  break;
41  case RES_LENGTH:
42  value->rValue = fast->RESlength;
43  break;
44  case RES_WIDTH :
45  value->rValue = fast->RESwidth;
46  break;
47  case RES_CURRENT:
48  if (ckt->CKTcurrentAnalysis & DOING_AC) {
49  errMsg = MALLOC(strlen(msg)+1);
50  errRtn = "RESask";
51  strcpy(errMsg,msg);
52  return (E_ASKCURRENT);
53  }
54  if (ckt->CKTrhsOld) {
55  value->rValue = (*(ckt->CKTrhsOld + fast->RESposNode) -
56  *(ckt->CKTrhsOld + fast->RESnegNode))
57  *fast->RESconduct;
58  }
59  break;
60  case RES_POWER:
61  if (ckt->CKTcurrentAnalysis & DOING_AC) {
62  errMsg = MALLOC(strlen(msg)+1);
63  errRtn = "RESask";
64  strcpy(errMsg,msg);
65  return (E_ASKPOWER);
66  }
67  if (ckt->CKTrhsOld) {
68  value->rValue = (*(ckt->CKTrhsOld + fast->RESposNode) -
69  *(ckt->CKTrhsOld + fast->RESnegNode)) *
70  fast->RESconduct *
71  (*(ckt->CKTrhsOld + fast->RESposNode) -
72  *(ckt->CKTrhsOld + fast->RESnegNode));
73  }
74  break;
75  default:
76  return (E_BADPARM);
77  }
78  return (OK);
79 }
int RESnegNode
Definition: resdefs.h:26
double RESlength
Definition: resdefs.h:32
#define E_ASKCURRENT
Definition: sperror.h:26
char * strcpy()
#define CONSTCtoK
Definition: const.h:11
char * errMsg
Definition: main.c:42
#define E_BADPARM
Definition: iferrmsg.h:26
#define RES_CONDUCT
Definition: resdefs.h:82
double REStemp
Definition: resdefs.h:28
double rValue
Definition: ifsim.h:233
#define RES_RESIST
Definition: resdefs.h:79
double RESresist
Definition: resdefs.h:30
#define DOING_AC
Definition: tskdefs.h:24
int RESposNode
Definition: resdefs.h:25
#define OK
Definition: iferrmsg.h:17
double RESwidth
Definition: resdefs.h:31
double RESconduct
Definition: resdefs.h:29
#define MALLOC(x)
Definition: util.h:9
#define RES_TEMP
Definition: resdefs.h:85
#define RES_POWER
Definition: resdefs.h:84
#define RES_WIDTH
Definition: resdefs.h:80
char * errRtn
Definition: main.c:41
#define E_ASKPOWER
Definition: sperror.h:27
#define RES_LENGTH
Definition: resdefs.h:81
int RESask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value, IFvalue *select)
Definition: resask.c:20
#define RES_CURRENT
Definition: resdefs.h:83