📄 inp2dot.c
字号:
foo, ft_sim->analyses[which]-> analysisParms[i].id,&ptemp,(IFvalue*)NULL); if(error) current->error = INPerrCat( current->error, INPerror(error)); } else { parm = INPgetValue(ckt,&line,ft_sim-> analyses[which]->analysisParms[i]. dataType,tab); error = (*(ft_sim->setAnalysisParm))(ckt, foo, ft_sim->analyses[which]-> analysisParms[i].id,parm,(IFvalue*)NULL); if(error) current->error = INPerrCat( current->error, INPerror(error)); } break; } } if(i==ft_sim->analyses[which]->numParms) { /* didn't find it! */ LITERR(" Error: unknown parameter on .sens-ignored \n") } } return(0); } else if ( (strcmp(token,".pz")==0)){ /* .pz nodeI nodeG nodeJ nodeK {V I} {POL ZER PZ} */ which = -1; for(i=0;i<ft_sim->numAnalyses;i++) { if(strcmp(ft_sim->analyses[i]->name,"PZ")==0) { which=i; break; } } if(which == -1) { LITERR("pole-zero analysis unsupported\n") return(0); } IFC(newAnalysis,(ckt,which,"pole-zero analysis",&foo, task)) parm = INPgetValue(ckt,&line,IF_NODE,tab); GCA(INPapName,(ckt,which,foo,"nodei",parm)) parm = INPgetValue(ckt,&line,IF_NODE,tab); GCA(INPapName,(ckt,which,foo,"nodeg",parm)) parm = INPgetValue(ckt,&line,IF_NODE,tab); GCA(INPapName,(ckt,which,foo,"nodej",parm)) parm = INPgetValue(ckt,&line,IF_NODE,tab); GCA(INPapName,(ckt,which,foo,"nodek",parm)) INPgetTok(&line,&steptype,1); /* get V or I */ ptemp.iValue=1; GCA(INPapName,(ckt,which,foo,steptype,&ptemp)) INPgetTok(&line,&steptype,1); /* get POL, ZER, or PZ */ ptemp.iValue=1; GCA(INPapName,(ckt,which,foo,steptype,&ptemp)) return(0); } else if ( (strcmp(token,".dc")==0)){ /* .dc SRC1NAME Vstart1 Vstop1 Vinc1 [SRC2NAME Vstart2 */ /* Vstop2 Vinc2 */ which = -1; for(i=0;i<ft_sim->numAnalyses;i++) { if(strcmp(ft_sim->analyses[i]->name,"DCTransfer")==0) { which=i; break; } } if(which==-1) { LITERR("DC transfer curve analysis unsupported\n") return(0); } IFC(newAnalysis,(ckt,which,"DCtransferCurve",&foo, task)) INPgetTok(&line,&name,1); INPinsert(&name,tab); ptemp.uValue=name; GCA(INPapName,(ckt,which,foo,"name1",&ptemp)) parm = INPgetValue(ckt,&line,IF_REAL,tab); /* vstart1 */ GCA(INPapName,(ckt,which,foo,"start1",parm)) parm = INPgetValue(ckt,&line,IF_REAL,tab); /* vstop1 */ GCA(INPapName,(ckt,which,foo,"stop1",parm)) parm = INPgetValue(ckt,&line,IF_REAL,tab); /* vinc1 */ GCA(INPapName,(ckt,which,foo,"step1",parm)) if(*line) { INPgetTok(&line,&name,1); INPinsert(&name,tab); ptemp.uValue=name; GCA(INPapName,(ckt,which,foo,"name2",&ptemp)) parm = INPgetValue(ckt,&line,IF_REAL,tab); /* vstart1 */ GCA(INPapName,(ckt,which,foo,"start2",parm)) parm = INPgetValue(ckt,&line,IF_REAL,tab); /* vstop1 */ GCA(INPapName,(ckt,which,foo,"stop2",parm)) parm = INPgetValue(ckt,&line,IF_REAL,tab); /* vinc1 */ GCA(INPapName,(ckt,which,foo,"step2",parm)) } return(0); } else if ( (strcmp(token,".tf")==0)){ /* .tf v( node1, node2 ) src */ /* .tf vsrc2 src */ which = -1; for(i=0;i<ft_sim->numAnalyses;i++) { if(strcmp(ft_sim->analyses[i]->name,"TF")==0) { which=i; break; } } if(which==-1) { LITERR("DC Transfer function analysis unsupported\n") return(0); } IFC(newAnalysis,(ckt,which,"transferFunction",&foo,task)) INPgetTok(&line,&name,0); /* name is now either V or I or a serious error */ if(*name == 'v' && strlen(name)==1) { if(*line != '(' /* match) */ ) { /* error, bad input format */ } INPgetTok(&line,&nname1,0); INPtermInsert(ckt,&nname1,tab,&node1); ptemp.nValue=node1; GCA(INPapName,(ckt,which,foo,"outpos",&ptemp)) if(*line != /* match ( */ ')') { INPgetTok(&line,&nname2,1); INPtermInsert(ckt,&nname2,tab,&node2); ptemp.nValue=node2; GCA(INPapName,(ckt,which,foo,"outneg",&ptemp)) ptemp.sValue = (char *) MALLOC(sizeof(char)*(5+strlen(nname1)+strlen(nname2))); (void)sprintf(ptemp.sValue,"V(%s,%s)",nname1,nname2); GCA(INPapName,(ckt,which,foo,"outname",&ptemp)) } else { ptemp.nValue=gnode; GCA(INPapName,(ckt,which,foo,"outneg",&ptemp)) ptemp.sValue = (char *)MALLOC(sizeof(char)*(4+strlen(nname1))); (void)sprintf(ptemp.sValue,"V(%s)",nname1); GCA(INPapName,(ckt,which,foo,"outname",&ptemp)) } } else { INPgetTok(&line,&name,1); INPinsert(&name,tab); ptemp.uValue=name; GCA(INPapName,(ckt,which,foo,"outsrc",&ptemp)) } INPgetTok(&line,&name,1); INPinsert(&name,tab); ptemp.uValue=name; GCA(INPapName,(ckt,which,foo,"insrc",&ptemp)) return(0); } else if ( (strcmp(token,".tran")==0)){ /* .tran Tstep Tstop <Tstart <Tmax> > <UIC> */ which = -1; for(i=0;i<ft_sim->numAnalyses;i++) { if(strcmp(ft_sim->analyses[i]->name,"TRAN")==0) { which=i; break; } } if(which == -1) { LITERR("Transient analysis unsupported\n") return(0); } IFC(newAnalysis,(ckt,which,"transient",&foo, task)) parm = INPgetValue(ckt,&line,IF_REAL,tab); /* Tstep */ GCA(INPapName,(ckt,which,foo,"tstep",parm))/* gtri - add - wbk - 5/17/91 - Modify tmax default */ /* Set tmax = tstep unless explicitly given on .tran card */ GCA(INPapName,(ckt,which,foo,"tmax",parm))/* gtri - end - wbk - 5/17/91 - Modify tmax default */ parm = INPgetValue(ckt,&line,IF_REAL,tab); /* Tstop */ GCA(INPapName,(ckt,which,foo,"tstop",parm)) if(*line) { dtemp = INPevaluate(&line,&error,1); /* tstart? */ if(error==0) { ptemp.rValue=dtemp; GCA(INPapName,(ckt,which,foo,"tstart",&ptemp)) dtemp = INPevaluate(&line,&error,1); /* tmax? */ if(error==0) { ptemp.rValue=dtemp; GCA(INPapName,(ckt,which,foo,"tmax",&ptemp)) } } } if(*line) { INPgetTok(&line,&word,1); /* uic? */ if(strcmp(word,"uic")==0) { ptemp.iValue=1; GCA(INPapName,(ckt,which,foo,"uic",&ptemp)) } else { LITERR(" Error: unknown parameter on .tran - ignored\n") } } return(0); } else if ( (strcmp(token,".subckt")==0) || (strcmp(token,".ends")==0) ){ /* not yet implemented - warn & ignore */ LITERR(" Warning: Subcircuits not yet implemented - ignored \n") return(0); } else if ( (strcmp(token,".end")==0)){ /* .end - end of input */ /* not allowed to pay attention to additional input - return */ return(1); /*NOTREACHED*/ } else if ( (strcmp(token,".options")==0) || (strcmp(token,".option")==0) || (strcmp(token,".opt")==0) ){ /* .option - specify program options - rather complicated */ /* use a subroutine to handle all of them to keep this */ /* subroutine managable */ INPdoOpts(ckt,ft_curckt->ci_curOpt,current,tab); return(0); } LITERR(" unimplemented control card - error \n") return(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -