1 /********** 2 Copyright 1990 Regents of the University of California. All rights reserved. 3 Author: 1985 Thomas L. Quarles 4 **********/ 5 6 #include "ngspice/ngspice.h" 7 #include "ngspice/cktdefs.h" 8 #include "ngspice/smpdefs.h" 9 #include "ngspice/sperror.h" 10 #include "ngspice/devdefs.h" 11 12 13 int CKTic(CKTcircuit * ckt)14CKTic(CKTcircuit *ckt) 15 { 16 int error; 17 int size; 18 int i; 19 CKTnode *node; 20 21 size = SMPmatSize(ckt->CKTmatrix); 22 for (i=0;i<=size;i++) { 23 ckt->CKTrhs[i]=0; 24 } 25 26 for(node = ckt->CKTnodes;node != NULL; node = node->next) { 27 if(node->nsGiven) { 28 node->ptr = SMPmakeElt(ckt->CKTmatrix,node->number,node->number); 29 if(node->ptr == NULL) return(E_NOMEM); 30 ckt->CKThadNodeset = 1; 31 ckt->CKTrhsOld[node->number] = ckt->CKTrhs[node->number] = node->nodeset; 32 } 33 if(node->icGiven) { 34 if(! ( node->ptr)) { 35 node->ptr = SMPmakeElt(ckt->CKTmatrix,node->number, 36 node->number); 37 if(node->ptr == NULL) return(E_NOMEM); 38 } 39 ckt->CKTrhsOld[node->number] = ckt->CKTrhs[node->number] = node->ic; 40 } 41 } 42 43 if(ckt->CKTmode & MODEUIC) { 44 for (i=0;i<DEVmaxnum;i++) { 45 if( DEVices[i] && DEVices[i]->DEVsetic && ckt->CKThead[i] ) { 46 error = DEVices[i]->DEVsetic (ckt->CKThead[i], ckt); 47 if(error) return(error); 48 } 49 } 50 } 51 52 return(OK); 53 } 54