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

Go to the source code of this file.

Functions

int REStemp (GENmodel *inModel, CKTcircuit *ckt)
 

Function Documentation

int REStemp ( GENmodel inModel,
CKTcircuit ckt 
)

Definition at line 16 of file restemp.c.

32 {
33  register RESmodel *model = (RESmodel *)inModel;
34  register RESinstance *here;
35  double factor;
36  double difference;
37 
38 
39  /* loop through all the resistor models */
40  for( ; model != NULL; model = model->RESnextModel ) {
41 
42  /* Default Value Processing for Resistor Models */
43  if(!model->REStnomGiven) model->REStnom = ckt->CKTnomTemp;
44  if(!model->RESsheetResGiven) model->RESsheetRes = 0;
45  if(!model->RESdefWidthGiven) model->RESdefWidth = 10.e-6; /*M*/
46  if(!model->REStc1Given) model->REStempCoeff1 = 0;
47  if(!model->REStc2Given) model->REStempCoeff2 = 0;
48  if(!model->RESnarrowGiven) model->RESnarrow = 0;
49 
50  /* loop through all the instances of the model */
51  for (here = model->RESinstances; here != NULL ;
52  here=here->RESnextInstance) {
53 
54  /* Default Value Processing for Resistor Instance */
55  if(!here->REStempGiven) here->REStemp = ckt->CKTtemp;
56  if(!here->RESwidthGiven) here->RESwidth = model->RESdefWidth;
57  if(!here->RESlengthGiven) here->RESlength = 0 ;
58  if(!here->RESresGiven) {
59  if(model->RESsheetResGiven && (model->RESsheetRes != 0) &&
60  (here->RESlength != 0)) {
61  here->RESresist = model->RESsheetRes * (here->RESlength -
62  model->RESnarrow) / (here->RESwidth - model->RESnarrow);
63  } else {
64  (*(SPfrontEnd->IFerror))(ERR_WARNING,
65  "%s: resistance=0, set to 1000",&(here->RESname));
66  here->RESresist=1000;
67  }
68  }
69 
70  difference = here->REStemp - model->REStnom;
71  factor = 1.0 + (model->REStempCoeff1)*difference +
72  (model->REStempCoeff2)*difference*difference;
73 
74  here->RESconduct = 1.0/(here->RESresist * factor);
75 
76  if (ckt->CKTpreload) {
77  /* preload constants */
78 
79  if (!here->RESnegNode)
80  *(here->RESposPosptr) += here->RESconduct;
81  else if (!here->RESposNode)
82  *(here->RESnegNegptr) += here->RESconduct;
83  else {
84  *(here->RESposPosptr) += here->RESconduct;
85  *(here->RESnegNegptr) += here->RESconduct;
86  *(here->RESposNegptr) -= here->RESconduct;
87  *(here->RESnegPosptr) -= here->RESconduct;
88  }
89  }
90  }
91  }
92  return (OK);
93 }
int RESnegNode
Definition: resdefs.h:26
double RESlength
Definition: resdefs.h:32
unsigned RESwidthGiven
Definition: resdefs.h:43
unsigned REStempGiven
Definition: resdefs.h:45
unsigned REStc2Given
Definition: resdefs.h:72
struct sRESmodel * RESnextModel
Definition: resdefs.h:56
double REStempCoeff1
Definition: resdefs.h:63
if(TDesc==NULL)
Definition: cd.c:1326
double CKTtemp
Definition: cktdefs.h:80
double CKTnomTemp
Definition: cktdefs.h:81
unsigned RESlengthGiven
Definition: resdefs.h:44
double * RESnegPosptr
Definition: resdefs.h:39
double * RESposPosptr
Definition: resdefs.h:33
double REStempCoeff2
Definition: resdefs.h:64
IFfrontEnd * SPfrontEnd
Definition: main.c:917
double REStemp
Definition: resdefs.h:28
double RESresist
Definition: resdefs.h:30
int CKTpreload
Definition: cktdefs.h:170
int RESposNode
Definition: resdefs.h:25
#define OK
Definition: iferrmsg.h:17
double RESdefWidth
Definition: resdefs.h:66
unsigned REStnomGiven
Definition: resdefs.h:70
double RESwidth
Definition: resdefs.h:31
double RESconduct
Definition: resdefs.h:29
#define NULL
Definition: spdefs.h:121
IFuid RESname
Definition: resdefs.h:22
#define ERR_WARNING
Definition: ifsim.h:517
double REStnom
Definition: resdefs.h:62
static char model[32]
Definition: subckt.c:76
double * RESposNegptr
Definition: resdefs.h:37
unsigned RESresGiven
Definition: resdefs.h:42
RESinstance * RESinstances
Definition: resdefs.h:58
struct sRESinstance * RESnextInstance
Definition: resdefs.h:20
unsigned REStc1Given
Definition: resdefs.h:71
double RESnarrow
Definition: resdefs.h:67
unsigned RESnarrowGiven
Definition: resdefs.h:75
unsigned RESsheetResGiven
Definition: resdefs.h:73
double RESsheetRes
Definition: resdefs.h:65
unsigned RESdefWidthGiven
Definition: resdefs.h:74
double * RESnegNegptr
Definition: resdefs.h:35