|
|
@ -139,28 +139,43 @@ RESask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value, |
|
|
errRtn = "RESask"; |
|
|
errRtn = "RESask"; |
|
|
strcpy(errMsg, msg); |
|
|
strcpy(errMsg, msg); |
|
|
return(E_ASKCURRENT); |
|
|
return(E_ASKCURRENT); |
|
|
} else { |
|
|
|
|
|
|
|
|
} else if (ckt->CKTrhsOld) { |
|
|
value->rValue = (*(ckt->CKTrhsOld + fast->RESposNode) - |
|
|
value->rValue = (*(ckt->CKTrhsOld + fast->RESposNode) - |
|
|
*(ckt->CKTrhsOld + fast->RESnegNode)) |
|
|
*(ckt->CKTrhsOld + fast->RESnegNode)) |
|
|
*fast->RESconduct; |
|
|
*fast->RESconduct; |
|
|
value->rValue *= fast->RESm; |
|
|
value->rValue *= fast->RESm; |
|
|
|
|
|
return(OK); |
|
|
|
|
|
} else { |
|
|
|
|
|
char msgloc[BSIZE_SP]; |
|
|
|
|
|
sprintf(msgloc, "No current values available for %s", fast->RESname); |
|
|
|
|
|
errMsg = TMALLOC(char, strlen(msgloc) + 1); |
|
|
|
|
|
errRtn = "RESask"; |
|
|
|
|
|
strcpy(errMsg, msgloc); |
|
|
|
|
|
return(E_ASKCURRENT); |
|
|
} |
|
|
} |
|
|
return(OK); |
|
|
|
|
|
case RES_POWER: |
|
|
case RES_POWER: |
|
|
if (ckt->CKTcurrentAnalysis & DOING_AC) { |
|
|
if (ckt->CKTcurrentAnalysis & DOING_AC) { |
|
|
errMsg = TMALLOC(char, strlen(msg) + 1); |
|
|
errMsg = TMALLOC(char, strlen(msg) + 1); |
|
|
errRtn = "RESask"; |
|
|
errRtn = "RESask"; |
|
|
strcpy(errMsg, msg); |
|
|
strcpy(errMsg, msg); |
|
|
return(E_ASKPOWER); |
|
|
return(E_ASKPOWER); |
|
|
} else { |
|
|
|
|
|
|
|
|
} else if (ckt->CKTrhsOld) { |
|
|
value->rValue = (*(ckt->CKTrhsOld + fast->RESposNode) - |
|
|
value->rValue = (*(ckt->CKTrhsOld + fast->RESposNode) - |
|
|
*(ckt->CKTrhsOld + fast->RESnegNode)) * |
|
|
*(ckt->CKTrhsOld + fast->RESnegNode)) * |
|
|
fast->RESconduct * |
|
|
fast->RESconduct * |
|
|
(*(ckt->CKTrhsOld + fast->RESposNode) - |
|
|
(*(ckt->CKTrhsOld + fast->RESposNode) - |
|
|
*(ckt->CKTrhsOld + fast->RESnegNode)); |
|
|
*(ckt->CKTrhsOld + fast->RESnegNode)); |
|
|
value->rValue *= fast->RESm; |
|
|
value->rValue *= fast->RESm; |
|
|
|
|
|
return(OK); |
|
|
|
|
|
} else { |
|
|
|
|
|
char msgloc[BSIZE_SP]; |
|
|
|
|
|
sprintf(msgloc, "No power values available for %s", fast->RESname); |
|
|
|
|
|
errMsg = TMALLOC(char, strlen(msgloc) + 1); |
|
|
|
|
|
errRtn = "RESask"; |
|
|
|
|
|
strcpy(errMsg, msgloc); |
|
|
|
|
|
return(E_ASKCURRENT); |
|
|
} |
|
|
} |
|
|
return(OK); |
|
|
|
|
|
|
|
|
|
|
|
default: |
|
|
default: |
|
|
return(E_BADPARM); |
|
|
return(E_BADPARM); |
|
|
} |
|
|
} |
|
|
|