📄 ccvssetup.c
字号:
/* * Copyright (c) 1985 Thomas L. Quarles */ /* load the voltage source structure with those pointers needed later * for fast matrix loading */#include "prefix.h"#include <stdio.h>#include "CKTdefs.h"#include "CCVSdefs.h"#include "util.h"#include "SPerror.h"#include "suffix.h"RCSID("CCVSsetup.c $Revision: 1.1 $ on $Date: 90/10/11 12:42:10 $")/*ARGSUSED*/intCCVSsetup(matrix,inModel,ckt,states) register SMPmatrix *matrix; GENmodel *inModel; register CKTcircuit *ckt; int *states;{ register CCVSmodel *model = (CCVSmodel*)inModel; register CCVSinstance *here; int error; CKTnode *tmp; /* loop through all the voltage source models */ for( ; model != NULL; model = model->CCVSnextModel ) { /* loop through all the instances of the model */ for (here = model->CCVSinstances; here != NULL ; here=here->CCVSnextInstance) { if(here->CCVSbranch==0) { error = CKTmkCur(ckt,&tmp,here->CCVSname, "current"); if(error) return(error); here->CCVSbranch = tmp->number; } here->CCVScontBranch = CKTfndBranch(ckt,here->CCVScontName); if(here->CCVScontBranch == NULL) { IFuid namarray[2]; namarray[0] = here->CCVSname; namarray[1] = here->CCVScontName; (*(SPfrontEnd->IFerror))(ERR_FATAL, "%s: unknown controlling source %s",namarray); return(E_BADPARM); }/* macro to make elements with built in test for out of memory */#define TSTALLOC(ptr,first,second) \if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ return(E_NOMEM);\} TSTALLOC(CCVSposIbrptr, CCVSposNode, CCVSbranch) TSTALLOC(CCVSnegIbrptr, CCVSnegNode, CCVSbranch) TSTALLOC(CCVSibrNegptr, CCVSbranch, CCVSnegNode) TSTALLOC(CCVSibrPosptr, CCVSbranch, CCVSposNode) TSTALLOC(CCVSibrContBrptr, CCVSbranch, CCVScontBranch) } } return(OK);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -