Jspice3
cktic.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  1993 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 #include "spice.h"
9 #include <stdio.h>
10 #include <math.h>
11 #include "sperror.h"
12 #include "util.h"
13 #include "devdefs.h"
14 
15 extern SPICEdev *DEVices[];
16 
17 
18 int
19 CKTic(ckt)
20 
21 CKTcircuit *ckt;
22 {
23  int i, error, size;
24  CKTnode *node;
25 
26  size = spGetSize(ckt->CKTmatrix,1);
27  for (i = 0; i <= size; i++) {
28  *(ckt->CKTrhs + i) = 0;
29  }
30  for (node = ckt->CKTnodes; node != NULL; node = node->next) {
31  if (node->nsGiven) {
32  node->ptr =
33  spGetElement(ckt->CKTmatrix,node->number,node->number);
34  if (node->ptr == (double *)NULL)
35  return (E_NOMEM);
36  ckt->CKThadNodeset = 1;
37  *(ckt->CKTrhs + node->number) = node->nodeset;
38  }
39  if (node->icGiven) {
40  if (!( node->ptr)) {
41  node->ptr =
42  spGetElement(ckt->CKTmatrix,node->number,node->number);
43  if (node->ptr == (double *)NULL)
44  return (E_NOMEM);
45  }
46  *(ckt->CKTrhs + node->number) = node->ic;
47  }
48  }
49  return (OK);
50 }
51 
52 
53 int
55 
56 CKTcircuit *ckt;
57 {
58  struct sCKTmodHead *mh;
59  int (*func)();
60  int error;
61 
62  for (mh = ckt->CKTheadList; mh != NULL; mh = mh->next) {
63  if ((func = DEVices[mh->type]->DEVsetic) != NULL) {
64  error = (*func)(mh->head,ckt);
65  if (error)
66  return (error);
67  }
68  }
69  return (OK);
70 }
71 
unsigned int nsGiven
Definition: cktdefs.h:45
struct sCKTmodHead * next
Definition: cktdefs.h:58
unsigned int icGiven
Definition: cktdefs.h:44
int(* DEVsetic)()
Definition: devdefs.h:103
int CKTsetic(CKTcircuit *ckt)
Definition: cktic.c:54
double nodeset
Definition: cktdefs.h:41
#define OK
Definition: iferrmsg.h:17
int CKTic(CKTcircuit *ckt)
Definition: cktic.c:19
#define NULL
Definition: spdefs.h:121
#define E_NOMEM
Definition: iferrmsg.h:27
struct sCKTnode * next
Definition: cktdefs.h:43
int number
Definition: cktdefs.h:39
double * ptr
Definition: cktdefs.h:42
int spGetSize()
Definition: fteparse.h:37
spREAL * spGetElement()
int type
Definition: cktdefs.h:56
GENmodel * head
Definition: cktdefs.h:57
SPICEdev * DEVices[]
Definition: sconfig.c:109
double ic
Definition: cktdefs.h:40