Jspice3
niconv.c File Reference
#include "spice.h"
#include <stdio.h>
#include <math.h>
#include "cktdefs.h"
#include "util.h"
#include "cktext.h"
#include "niext.h"
Include dependency graph for niconv.c:

Go to the source code of this file.

Functions

int NIconvTest (CKTcircuit *ckt)
 

Function Documentation

int NIconvTest ( CKTcircuit ckt)

Definition at line 24 of file niconv.c.

27 {
28  int i; /* generic loop variable */
29  int size; /* size of the matrix */
30  CKTnode *node; /* current matrix entry */
31  double old, aold;
32  double new, anew;
33  double dd, tol;
34 
35  node = ckt->CKTnodes;
36  size = spGetSize(ckt->CKTmatrix,1);
37  for (i = 1; i <= size; i++) {
38 
39  node = node->next;
40 
41  new = *((ckt->CKTrhs) + i);
42  old = *((ckt->CKTrhsOld) + i);
43 
44  if (new > 0)
45  anew = new;
46  else
47  anew = -new;
48 
49  if (old > 0)
50  aold = old;
51  else
52  aold = -old;
53 
54  dd = new - old;
55  if (dd < 0)
56  dd = -dd;
57 
58  if (node->type == 3) {
59  tol = ckt->CKTreltol*MAX(aold,anew) + ckt->CKTvoltTol;
60  if (dd > tol) {
61 #ifdef STEPDEBUG
62  printf(" non-convergence at node %s\n",CKTnodName(ckt,i));
63 #endif /* STEPDEBUG */
64  ckt->CKTtroubleNode = i;
65  return (1);
66  }
67  }
68  else {
69  tol = ckt->CKTreltol*MAX(aold,anew) + ckt->CKTabstol;
70  if (dd > tol) {
71 #ifdef STEPDEBUG
72  printf(" non-convergence at node %s\n",CKTnodName(ckt,i));
73 #endif /* STEPDEBUG */
74  return (1);
75  }
76  }
77  }
78  return (CKTconvTest(ckt));
79 }
#define MAX(a, b)
Definition: spdefs.h:135
int CKTtroubleNode
Definition: cktdefs.h:228
SMPmatrix * CKTmatrix
Definition: cktdefs.h:95
int CKTconvTest(CKTcircuit *ckt)
Definition: dcoan.c:177
IFuid CKTnodName()
double CKTreltol
Definition: cktdefs.h:183
double CKTabstol
Definition: cktdefs.h:180
double * CKTrhsOld
Definition: cktdefs.h:98
int type
Definition: cktdefs.h:32
struct sCKTnode * next
Definition: cktdefs.h:43
CKTnode * CKTnodes
Definition: cktdefs.h:135
int spGetSize()
double CKTvoltTol
Definition: cktdefs.h:185
double * CKTrhs
Definition: cktdefs.h:97