ptr->Ptr
This commit is contained in:
parent
8f9ad61019
commit
00b3ec9489
|
|
@ -51,19 +51,19 @@ ASRCacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
if (here->ASRCtype == ASRC_VOLTAGE) {
|
||||
|
||||
*(here->ASRCposptr[j++]) += 1.0;
|
||||
*(here->ASRCposptr[j++]) -= 1.0;
|
||||
*(here->ASRCposptr[j++]) -= 1.0;
|
||||
*(here->ASRCposptr[j++]) += 1.0;
|
||||
*(here->ASRCposPtr[j++]) += 1.0;
|
||||
*(here->ASRCposPtr[j++]) -= 1.0;
|
||||
*(here->ASRCposPtr[j++]) -= 1.0;
|
||||
*(here->ASRCposPtr[j++]) += 1.0;
|
||||
|
||||
for (i = 0; i < here->ASRCtree->numVars; i++)
|
||||
*(here->ASRCposptr[j++]) -= derivs[i] / factor;
|
||||
*(here->ASRCposPtr[j++]) -= derivs[i] / factor;
|
||||
|
||||
} else {
|
||||
|
||||
for (i = 0; i < here->ASRCtree->numVars; i++) {
|
||||
*(here->ASRCposptr[j++]) += derivs[i] / factor;
|
||||
*(here->ASRCposptr[j++]) -= derivs[i] / factor;
|
||||
*(here->ASRCposPtr[j++]) += derivs[i] / factor;
|
||||
*(here->ASRCposPtr[j++]) -= derivs[i] / factor;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ typedef struct sASRCinstance {
|
|||
double ASRCtc1; /* first temperature coefficient of resistors */
|
||||
double ASRCtc2; /* second temperature coefficient of resistors */
|
||||
int ASRCreciproctc; /* Flag to calculate reciprocal temperature behaviour */
|
||||
double **ASRCposptr; /* pointer to pointers of the elements
|
||||
double **ASRCposPtr; /* pointer to pointers of the elements
|
||||
* in the sparce matrix */
|
||||
double ASRCprev_value; /* Previous value for the convergence test */
|
||||
double *ASRCacValues; /* Store rhs and derivatives for ac anal */
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ ASRCdestroy(GENmodel **inModel)
|
|||
ASRCinstance *next_inst = inst->ASRCnextInstance;
|
||||
INPfreeTree(inst->ASRCtree);
|
||||
FREE(inst->ASRCacValues);
|
||||
FREE(inst->ASRCposptr);
|
||||
FREE(inst->ASRCposPtr);
|
||||
FREE(inst->ASRCvars);
|
||||
FREE(inst);
|
||||
inst = next_inst;
|
||||
|
|
|
|||
|
|
@ -71,15 +71,15 @@ ASRCload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
if (here->ASRCtype == ASRC_VOLTAGE) {
|
||||
|
||||
*(here->ASRCposptr[j++]) += 1.0;
|
||||
*(here->ASRCposptr[j++]) -= 1.0;
|
||||
*(here->ASRCposptr[j++]) -= 1.0;
|
||||
*(here->ASRCposptr[j++]) += 1.0;
|
||||
*(here->ASRCposPtr[j++]) += 1.0;
|
||||
*(here->ASRCposPtr[j++]) -= 1.0;
|
||||
*(here->ASRCposPtr[j++]) -= 1.0;
|
||||
*(here->ASRCposPtr[j++]) += 1.0;
|
||||
|
||||
for (i = 0; i < here->ASRCtree->numVars; i++) {
|
||||
rhs -= (asrc_vals[i] * asrc_derivs[i]);
|
||||
|
||||
*(here->ASRCposptr[j++]) -= asrc_derivs[i] * factor;
|
||||
*(here->ASRCposPtr[j++]) -= asrc_derivs[i] * factor;
|
||||
}
|
||||
|
||||
ckt->CKTrhs[here->ASRCbranch] += factor * rhs;
|
||||
|
|
@ -89,8 +89,8 @@ ASRCload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for (i = 0; i < here->ASRCtree->numVars; i++) {
|
||||
rhs -= (asrc_vals[i] * asrc_derivs[i]);
|
||||
|
||||
*(here->ASRCposptr[j++]) += asrc_derivs[i] * factor;
|
||||
*(here->ASRCposptr[j++]) -= asrc_derivs[i] * factor;
|
||||
*(here->ASRCposPtr[j++]) += asrc_derivs[i] * factor;
|
||||
*(here->ASRCposPtr[j++]) -= asrc_derivs[i] * factor;
|
||||
}
|
||||
|
||||
ckt->CKTrhs[here->ASRCposNode] -= factor * rhs;
|
||||
|
|
|
|||
|
|
@ -63,19 +63,19 @@ ASRCpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
|
||||
if (here->ASRCtype == ASRC_VOLTAGE) {
|
||||
|
||||
*(here->ASRCposptr[j++]) += 1.0;
|
||||
*(here->ASRCposptr[j++]) -= 1.0;
|
||||
*(here->ASRCposptr[j++]) -= 1.0;
|
||||
*(here->ASRCposptr[j++]) += 1.0;
|
||||
*(here->ASRCposPtr[j++]) += 1.0;
|
||||
*(here->ASRCposPtr[j++]) -= 1.0;
|
||||
*(here->ASRCposPtr[j++]) -= 1.0;
|
||||
*(here->ASRCposPtr[j++]) += 1.0;
|
||||
|
||||
for (i = 0; i < here->ASRCtree->numVars; i++)
|
||||
*(here->ASRCposptr[j++]) -= asrc_derivs[i] / factor;
|
||||
*(here->ASRCposPtr[j++]) -= asrc_derivs[i] / factor;
|
||||
|
||||
} else {
|
||||
|
||||
for (i = 0; i < here->ASRCtree->numVars; i++) {
|
||||
*(here->ASRCposptr[j++]) += asrc_derivs[i] / factor;
|
||||
*(here->ASRCposptr[j++]) -= asrc_derivs[i] / factor;
|
||||
*(here->ASRCposPtr[j++]) += asrc_derivs[i] / factor;
|
||||
*(here->ASRCposPtr[j++]) -= asrc_derivs[i] / factor;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ ASRCsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
return (E_BADPARM);
|
||||
}
|
||||
|
||||
here->ASRCposptr = TMALLOC(double *, j);
|
||||
here->ASRCposPtr = TMALLOC(double *, j);
|
||||
here->ASRCvars = TMALLOC(int, here->ASRCtree->numVars);
|
||||
here->ASRCacValues = TMALLOC(double, here->ASRCtree->numVars + 1);
|
||||
|
||||
|
|
@ -79,10 +79,10 @@ ASRCsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
here->ASRCbranch = tmp->number;
|
||||
}
|
||||
|
||||
TSTALLOC(ASRCposptr[j++], here->ASRCposNode, here->ASRCbranch);
|
||||
TSTALLOC(ASRCposptr[j++], here->ASRCnegNode, here->ASRCbranch);
|
||||
TSTALLOC(ASRCposptr[j++], here->ASRCbranch, here->ASRCnegNode);
|
||||
TSTALLOC(ASRCposptr[j++], here->ASRCbranch, here->ASRCposNode);
|
||||
TSTALLOC(ASRCposPtr[j++], here->ASRCposNode, here->ASRCbranch);
|
||||
TSTALLOC(ASRCposPtr[j++], here->ASRCnegNode, here->ASRCbranch);
|
||||
TSTALLOC(ASRCposPtr[j++], here->ASRCbranch, here->ASRCnegNode);
|
||||
TSTALLOC(ASRCposPtr[j++], here->ASRCbranch, here->ASRCposNode);
|
||||
}
|
||||
|
||||
for (i = 0; i < here->ASRCtree->numVars; i++) {
|
||||
|
|
@ -107,10 +107,10 @@ ASRCsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
here->ASRCvars[i] = column;
|
||||
|
||||
if (here->ASRCtype == ASRC_VOLTAGE) {
|
||||
TSTALLOC(ASRCposptr[j++], here->ASRCbranch, column);
|
||||
TSTALLOC(ASRCposPtr[j++], here->ASRCbranch, column);
|
||||
} else {
|
||||
TSTALLOC(ASRCposptr[j++], here->ASRCposNode, column);
|
||||
TSTALLOC(ASRCposptr[j++], here->ASRCnegNode, column);
|
||||
TSTALLOC(ASRCposPtr[j++], here->ASRCposNode, column);
|
||||
TSTALLOC(ASRCposPtr[j++], here->ASRCnegNode, column);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -132,7 +132,7 @@ ASRCunsetup(GENmodel *inModel, CKTcircuit *ckt)
|
|||
CKTdltNNum(ckt, here->ASRCbranch);
|
||||
here->ASRCbranch = 0;
|
||||
}
|
||||
FREE(here->ASRCposptr);
|
||||
FREE(here->ASRCposPtr);
|
||||
FREE(here->ASRCvars);
|
||||
FREE(here->ASRCacValues);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,10 +29,10 @@ CAPacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
val = ckt->CKTomega * here->CAPcapac;
|
||||
|
||||
*(here->CAPposPosptr +1) += m * val;
|
||||
*(here->CAPnegNegptr +1) += m * val;
|
||||
*(here->CAPposNegptr +1) -= m * val;
|
||||
*(here->CAPnegPosptr +1) -= m * val;
|
||||
*(here->CAPposPosPtr +1) += m * val;
|
||||
*(here->CAPnegNegPtr +1) += m * val;
|
||||
*(here->CAPposNegPtr +1) -= m * val;
|
||||
*(here->CAPnegPosPtr +1) -= m * val;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -39,13 +39,13 @@ typedef struct sCAPinstance {
|
|||
double CAPtc2; /* second temperature coefficient of capacitors */
|
||||
double CAPbv_max; /* Maximum capacitor voltage */
|
||||
|
||||
double *CAPposPosptr; /* pointer to sparse matrix diagonal at
|
||||
double *CAPposPosPtr; /* pointer to sparse matrix diagonal at
|
||||
* (positive,positive) */
|
||||
double *CAPnegNegptr; /* pointer to sparse matrix diagonal at
|
||||
double *CAPnegNegPtr; /* pointer to sparse matrix diagonal at
|
||||
* (negative,negative) */
|
||||
double *CAPposNegptr; /* pointer to sparse matrix offdiagonal at
|
||||
double *CAPposNegPtr; /* pointer to sparse matrix offdiagonal at
|
||||
* (positive,negative) */
|
||||
double *CAPnegPosptr; /* pointer to sparse matrix offdiagonal at
|
||||
double *CAPnegPosPtr; /* pointer to sparse matrix offdiagonal at
|
||||
* (negative,positive) */
|
||||
unsigned CAPcapGiven : 1; /* flag to indicate capacitance was specified */
|
||||
unsigned CAPicGiven : 1; /* flag to indicate init. cond. was specified */
|
||||
|
|
|
|||
|
|
@ -71,10 +71,10 @@ CAPload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate1+here->CAPccap) =
|
||||
*(ckt->CKTstate0+here->CAPccap);
|
||||
}
|
||||
*(here->CAPposPosptr) += m * geq;
|
||||
*(here->CAPnegNegptr) += m * geq;
|
||||
*(here->CAPposNegptr) -= m * geq;
|
||||
*(here->CAPnegPosptr) -= m * geq;
|
||||
*(here->CAPposPosPtr) += m * geq;
|
||||
*(here->CAPnegNegPtr) += m * geq;
|
||||
*(here->CAPposNegPtr) -= m * geq;
|
||||
*(here->CAPnegPosPtr) -= m * geq;
|
||||
*(ckt->CKTrhs+here->CAPposNode) -= m * ceq;
|
||||
*(ckt->CKTrhs+here->CAPnegNode) += m * ceq;
|
||||
} else
|
||||
|
|
|
|||
|
|
@ -33,14 +33,14 @@ CAPpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
val = here->CAPcapac;
|
||||
m = here->CAPm;
|
||||
|
||||
*(here->CAPposPosptr ) += m * val * s->real;
|
||||
*(here->CAPposPosptr +1) += m * val * s->imag;
|
||||
*(here->CAPnegNegptr ) += m * val * s->real;
|
||||
*(here->CAPnegNegptr +1) += m * val * s->imag;
|
||||
*(here->CAPposNegptr ) -= m * val * s->real;
|
||||
*(here->CAPposNegptr +1) -= m * val * s->imag;
|
||||
*(here->CAPnegPosptr ) -= m * val * s->real;
|
||||
*(here->CAPnegPosptr +1) -= m * val * s->imag;
|
||||
*(here->CAPposPosPtr ) += m * val * s->real;
|
||||
*(here->CAPposPosPtr +1) += m * val * s->imag;
|
||||
*(here->CAPnegNegPtr ) += m * val * s->real;
|
||||
*(here->CAPnegNegPtr +1) += m * val * s->imag;
|
||||
*(here->CAPposNegPtr ) -= m * val * s->real;
|
||||
*(here->CAPposNegPtr +1) -= m * val * s->imag;
|
||||
*(here->CAPnegPosPtr ) -= m * val * s->real;
|
||||
*(here->CAPnegPosPtr +1) -= m * val * s->imag;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -111,10 +111,10 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
return(E_NOMEM);\
|
||||
} } while(0)
|
||||
|
||||
TSTALLOC(CAPposPosptr,CAPposNode,CAPposNode);
|
||||
TSTALLOC(CAPnegNegptr,CAPnegNode,CAPnegNode);
|
||||
TSTALLOC(CAPposNegptr,CAPposNode,CAPnegNode);
|
||||
TSTALLOC(CAPnegPosptr,CAPnegNode,CAPposNode);
|
||||
TSTALLOC(CAPposPosPtr,CAPposNode,CAPposNode);
|
||||
TSTALLOC(CAPnegNegPtr,CAPnegNode,CAPnegNode);
|
||||
TSTALLOC(CAPposNegPtr,CAPposNode,CAPnegNode);
|
||||
TSTALLOC(CAPnegPosPtr,CAPnegNode,CAPposNode);
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -32,9 +32,9 @@ typedef struct sCCCSinstance {
|
|||
|
||||
double CCCSmValue; /* Parallel multiplier */
|
||||
|
||||
double *CCCSposContBrptr; /* pointer to sparse matrix element at
|
||||
double *CCCSposContBrPtr; /* pointer to sparse matrix element at
|
||||
*(positive node, control branch eq)*/
|
||||
double *CCCSnegContBrptr; /* pointer to sparse matrix element at
|
||||
double *CCCSnegContBrPtr; /* pointer to sparse matrix element at
|
||||
*(negative node, control branch eq)*/
|
||||
unsigned CCCScoeffGiven :1 ; /* flag to indicate coeff given */
|
||||
unsigned CCCSmGiven :1 ; /* flag to indicate multiplier given */
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ CCCSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for (here = model->CCCSinstances; here != NULL ;
|
||||
here=here->CCCSnextInstance) {
|
||||
|
||||
*(here->CCCSposContBrptr) += here->CCCScoeff ;
|
||||
*(here->CCCSnegContBrptr) -= here->CCCScoeff ;
|
||||
*(here->CCCSposContBrPtr) += here->CCCScoeff ;
|
||||
*(here->CCCSnegContBrPtr) -= here->CCCScoeff ;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ CCCSpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
for (here = model->CCCSinstances; here != NULL ;
|
||||
here=here->CCCSnextInstance) {
|
||||
|
||||
*(here->CCCSposContBrptr) += here->CCCScoeff ;
|
||||
*(here->CCCSnegContBrptr) -= here->CCCScoeff ;
|
||||
*(here->CCCSposContBrPtr) += here->CCCScoeff ;
|
||||
*(here->CCCSnegContBrPtr) -= here->CCCScoeff ;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -46,8 +46,8 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
return(E_NOMEM);\
|
||||
} } while(0)
|
||||
|
||||
TSTALLOC(CCCSposContBrptr,CCCSposNode,CCCScontBranch);
|
||||
TSTALLOC(CCCSnegContBrptr,CCCSnegNode,CCCScontBranch);
|
||||
TSTALLOC(CCCSposContBrPtr,CCCSposNode,CCCScontBranch);
|
||||
TSTALLOC(CCCSnegContBrPtr,CCCSnegNode,CCCScontBranch);
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -31,15 +31,15 @@ typedef struct sCCVSinstance {
|
|||
|
||||
double CCVScoeff; /* coefficient */
|
||||
|
||||
double *CCVSposIbrptr; /* pointer to sparse matrix element at
|
||||
double *CCVSposIbrPtr; /* pointer to sparse matrix element at
|
||||
* (positive node, branch equation) */
|
||||
double *CCVSnegIbrptr; /* pointer to sparse matrix element at
|
||||
double *CCVSnegIbrPtr; /* pointer to sparse matrix element at
|
||||
* (negative node, branch equation) */
|
||||
double *CCVSibrPosptr; /* pointer to sparse matrix element at
|
||||
double *CCVSibrPosPtr; /* pointer to sparse matrix element at
|
||||
* (branch equation, positive node) */
|
||||
double *CCVSibrNegptr; /* pointer to sparse matrix element at
|
||||
double *CCVSibrNegPtr; /* pointer to sparse matrix element at
|
||||
* (branch equation, negative node) */
|
||||
double *CCVSibrContBrptr; /* pointer to sparse matrix element at
|
||||
double *CCVSibrContBrPtr; /* pointer to sparse matrix element at
|
||||
*(branch equation, control branch eq)*/
|
||||
unsigned CCVScoeffGiven :1 ; /* flag to indicate coeff given */
|
||||
|
||||
|
|
|
|||
|
|
@ -32,11 +32,11 @@ CCVSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for (here = model->CCVSinstances; here != NULL ;
|
||||
here=here->CCVSnextInstance) {
|
||||
|
||||
*(here->CCVSposIbrptr) += 1.0 ;
|
||||
*(here->CCVSnegIbrptr) -= 1.0 ;
|
||||
*(here->CCVSibrPosptr) += 1.0 ;
|
||||
*(here->CCVSibrNegptr) -= 1.0 ;
|
||||
*(here->CCVSibrContBrptr) -= here->CCVScoeff ;
|
||||
*(here->CCVSposIbrPtr) += 1.0 ;
|
||||
*(here->CCVSnegIbrPtr) -= 1.0 ;
|
||||
*(here->CCVSibrPosPtr) += 1.0 ;
|
||||
*(here->CCVSibrNegPtr) -= 1.0 ;
|
||||
*(here->CCVSibrContBrPtr) -= here->CCVScoeff ;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -34,11 +34,11 @@ CCVSpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
for (here = model->CCVSinstances; here != NULL ;
|
||||
here=here->CCVSnextInstance) {
|
||||
|
||||
*(here->CCVSposIbrptr) += 1.0 ;
|
||||
*(here->CCVSnegIbrptr) -= 1.0 ;
|
||||
*(here->CCVSibrPosptr) += 1.0 ;
|
||||
*(here->CCVSibrNegptr) -= 1.0 ;
|
||||
*(here->CCVSibrContBrptr) += here->CCVScoeff ;
|
||||
*(here->CCVSposIbrPtr) += 1.0 ;
|
||||
*(here->CCVSnegIbrPtr) -= 1.0 ;
|
||||
*(here->CCVSibrPosPtr) += 1.0 ;
|
||||
*(here->CCVSibrNegPtr) -= 1.0 ;
|
||||
*(here->CCVSibrContBrPtr) += here->CCVScoeff ;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -55,11 +55,11 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
return(E_NOMEM);\
|
||||
} } while(0)
|
||||
|
||||
TSTALLOC(CCVSposIbrptr, CCVSposNode, CCVSbranch);
|
||||
TSTALLOC(CCVSnegIbrptr, CCVSnegNode, CCVSbranch);
|
||||
TSTALLOC(CCVSibrNegptr, CCVSbranch, CCVSnegNode);
|
||||
TSTALLOC(CCVSibrPosptr, CCVSbranch, CCVSposNode);
|
||||
TSTALLOC(CCVSibrContBrptr, CCVSbranch, CCVScontBranch);
|
||||
TSTALLOC(CCVSposIbrPtr, CCVSposNode, CCVSbranch);
|
||||
TSTALLOC(CCVSnegIbrPtr, CCVSnegNode, CCVSbranch);
|
||||
TSTALLOC(CCVSibrNegPtr, CCVSbranch, CCVSnegNode);
|
||||
TSTALLOC(CCVSibrPosPtr, CCVSbranch, CCVSposNode);
|
||||
TSTALLOC(CCVSibrContBrPtr, CCVSbranch, CCVScontBranch);
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -36,10 +36,10 @@ CSWacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
g_now = current_state?(model->CSWonConduct):(model->CSWoffConduct);
|
||||
|
||||
*(here->CSWposPosptr) += g_now;
|
||||
*(here->CSWposNegptr) -= g_now;
|
||||
*(here->CSWnegPosptr) -= g_now;
|
||||
*(here->CSWnegNegptr) += g_now;
|
||||
*(here->CSWposPosPtr) += g_now;
|
||||
*(here->CSWposNegPtr) -= g_now;
|
||||
*(here->CSWnegPosPtr) -= g_now;
|
||||
*(here->CSWnegNegPtr) += g_now;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@ typedef struct sCSWinstance {
|
|||
|
||||
IFuid CSWcontName; /* name of controlling source */
|
||||
|
||||
double *CSWposPosptr; /* pointer to sparse matrix diagonal at
|
||||
double *CSWposPosPtr; /* pointer to sparse matrix diagonal at
|
||||
(positive,positive) for switch conductance */
|
||||
double *CSWnegPosptr; /* pointer to sparse matrix offdiagonal at
|
||||
double *CSWnegPosPtr; /* pointer to sparse matrix offdiagonal at
|
||||
(neagtive,positive) for switch conductance */
|
||||
double *CSWposNegptr; /* pointer to sparse matrix offdiagonal at
|
||||
double *CSWposNegPtr; /* pointer to sparse matrix offdiagonal at
|
||||
(positive,neagtive) for switch conductance */
|
||||
double *CSWnegNegptr; /* pointer to sparse matrix diagonal at
|
||||
double *CSWnegNegPtr; /* pointer to sparse matrix diagonal at
|
||||
(neagtive,neagtive) for switch conductance */
|
||||
|
||||
double CSWcond; /* current conductance of switch */
|
||||
|
|
|
|||
|
|
@ -144,10 +144,10 @@ CSWload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
g_now = model->CSWoffConduct;
|
||||
here->CSWcond = g_now;
|
||||
|
||||
*(here->CSWposPosptr) += g_now;
|
||||
*(here->CSWposNegptr) -= g_now;
|
||||
*(here->CSWnegPosptr) -= g_now;
|
||||
*(here->CSWnegNegptr) += g_now;
|
||||
*(here->CSWposPosPtr) += g_now;
|
||||
*(here->CSWposNegPtr) -= g_now;
|
||||
*(here->CSWnegPosPtr) -= g_now;
|
||||
*(here->CSWnegNegPtr) += g_now;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -40,10 +40,10 @@ CSWpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
|
||||
g_now = current_state?(model->CSWonConduct):(model->CSWoffConduct);
|
||||
|
||||
*(here->CSWposPosptr) += g_now;
|
||||
*(here->CSWposNegptr) -= g_now;
|
||||
*(here->CSWnegPosptr) -= g_now;
|
||||
*(here->CSWnegNegptr) += g_now;
|
||||
*(here->CSWposPosPtr) += g_now;
|
||||
*(here->CSWposNegPtr) -= g_now;
|
||||
*(here->CSWnegPosPtr) -= g_now;
|
||||
*(here->CSWnegNegPtr) += g_now;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -61,10 +61,10 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
return(E_NOMEM);\
|
||||
} } while(0)
|
||||
|
||||
TSTALLOC(CSWposPosptr, CSWposNode, CSWposNode);
|
||||
TSTALLOC(CSWposNegptr, CSWposNode, CSWnegNode);
|
||||
TSTALLOC(CSWnegPosptr, CSWnegNode, CSWposNode);
|
||||
TSTALLOC(CSWnegNegptr, CSWnegNode, CSWnegNode);
|
||||
TSTALLOC(CSWposPosPtr, CSWposNode, CSWposNode);
|
||||
TSTALLOC(CSWposNegPtr, CSWposNode, CSWnegNode);
|
||||
TSTALLOC(CSWnegPosPtr, CSWnegNode, CSWposNode);
|
||||
TSTALLOC(CSWnegNegPtr, CSWnegNode, CSWnegNode);
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -28,11 +28,11 @@ INDacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
val = ckt->CKTomega * here->INDinduct / m;
|
||||
|
||||
*(here->INDposIbrptr) += 1;
|
||||
*(here->INDnegIbrptr) -= 1;
|
||||
*(here->INDibrPosptr) += 1;
|
||||
*(here->INDibrNegptr) -= 1;
|
||||
*(here->INDibrIbrptr +1) -= val;
|
||||
*(here->INDposIbrPtr) += 1;
|
||||
*(here->INDnegIbrPtr) -= 1;
|
||||
*(here->INDibrPosPtr) += 1;
|
||||
*(here->INDibrNegPtr) -= 1;
|
||||
*(here->INDibrIbrPtr +1) -= val;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -40,15 +40,15 @@ typedef struct sINDinstance {
|
|||
double INDnt; /* Number of turns */
|
||||
double INDinitCond; /* initial inductor voltage if specified */
|
||||
|
||||
double *INDposIbrptr; /* pointer to sparse matrix diagonal at
|
||||
double *INDposIbrPtr; /* pointer to sparse matrix diagonal at
|
||||
* (positive,branch eq) */
|
||||
double *INDnegIbrptr; /* pointer to sparse matrix diagonal at
|
||||
double *INDnegIbrPtr; /* pointer to sparse matrix diagonal at
|
||||
* (negative,branch eq) */
|
||||
double *INDibrNegptr; /* pointer to sparse matrix offdiagonal at
|
||||
double *INDibrNegPtr; /* pointer to sparse matrix offdiagonal at
|
||||
* (branch eq,negative) */
|
||||
double *INDibrPosptr; /* pointer to sparse matrix offdiagonal at
|
||||
double *INDibrPosPtr; /* pointer to sparse matrix offdiagonal at
|
||||
* (branch eq,positive) */
|
||||
double *INDibrIbrptr; /* pointer to sparse matrix offdiagonal at
|
||||
double *INDibrIbrPtr; /* pointer to sparse matrix offdiagonal at
|
||||
* (branch eq,branch eq) */
|
||||
|
||||
unsigned INDindGiven : 1; /* flag to indicate inductance was specified */
|
||||
|
|
|
|||
|
|
@ -116,11 +116,11 @@ INDload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0+here->INDvolt);
|
||||
}
|
||||
|
||||
*(here->INDposIbrptr) += 1;
|
||||
*(here->INDnegIbrptr) -= 1;
|
||||
*(here->INDibrPosptr) += 1;
|
||||
*(here->INDibrNegptr) -= 1;
|
||||
*(here->INDibrIbrptr) -= req;
|
||||
*(here->INDposIbrPtr) += 1;
|
||||
*(here->INDnegIbrPtr) -= 1;
|
||||
*(here->INDibrPosPtr) += 1;
|
||||
*(here->INDibrNegPtr) -= 1;
|
||||
*(here->INDibrIbrPtr) -= req;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -29,12 +29,12 @@ INDpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
|
||||
val = here->INDinduct / here->INDm;
|
||||
|
||||
*(here->INDposIbrptr) += 1;
|
||||
*(here->INDnegIbrptr) -= 1;
|
||||
*(here->INDibrPosptr) += 1;
|
||||
*(here->INDibrNegptr) -= 1;
|
||||
*(here->INDibrIbrptr ) -= val * s->real;
|
||||
*(here->INDibrIbrptr +1) -= val * s->imag;
|
||||
*(here->INDposIbrPtr) += 1;
|
||||
*(here->INDnegIbrPtr) -= 1;
|
||||
*(here->INDibrPosPtr) += 1;
|
||||
*(here->INDibrNegPtr) -= 1;
|
||||
*(here->INDibrIbrPtr ) -= val * s->real;
|
||||
*(here->INDibrIbrPtr +1) -= val * s->imag;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -93,11 +93,11 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
return(E_NOMEM);\
|
||||
} } while(0)
|
||||
|
||||
TSTALLOC(INDposIbrptr,INDposNode,INDbrEq);
|
||||
TSTALLOC(INDnegIbrptr,INDnegNode,INDbrEq);
|
||||
TSTALLOC(INDibrNegptr,INDbrEq,INDnegNode);
|
||||
TSTALLOC(INDibrPosptr,INDbrEq,INDposNode);
|
||||
TSTALLOC(INDibrIbrptr,INDbrEq,INDbrEq);
|
||||
TSTALLOC(INDposIbrPtr,INDposNode,INDbrEq);
|
||||
TSTALLOC(INDnegIbrPtr,INDnegNode,INDbrEq);
|
||||
TSTALLOC(INDibrNegPtr,INDbrEq,INDnegNode);
|
||||
TSTALLOC(INDibrPosPtr,INDbrEq,INDposNode);
|
||||
TSTALLOC(INDibrIbrPtr,INDbrEq,INDbrEq);
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -46,13 +46,13 @@ typedef struct sRESinstance {
|
|||
double RESbv_max; /* Maximum resistor voltage */
|
||||
int RESnoisy; /* Set if the resistor generates noise */
|
||||
double RESeffNoiseArea; /* effective resistor area for noise calculation */
|
||||
double *RESposPosptr; /* pointer to sparse matrix diagonal at
|
||||
double *RESposPosPtr; /* pointer to sparse matrix diagonal at
|
||||
* (positive,positive) */
|
||||
double *RESnegNegptr; /* pointer to sparse matrix diagonal at
|
||||
double *RESnegNegPtr; /* pointer to sparse matrix diagonal at
|
||||
* (negative,negative) */
|
||||
double *RESposNegptr; /* pointer to sparse matrix offdiagonal at
|
||||
double *RESposNegPtr; /* pointer to sparse matrix offdiagonal at
|
||||
* (positive,negative) */
|
||||
double *RESnegPosptr; /* pointer to sparse matrix offdiagonal at
|
||||
double *RESnegPosPtr; /* pointer to sparse matrix offdiagonal at
|
||||
* (negative,positive) */
|
||||
unsigned RESresGiven : 1; /* flag to indicate resistance was specified */
|
||||
unsigned RESwidthGiven : 1; /* flag to indicate width given */
|
||||
|
|
|
|||
|
|
@ -31,10 +31,10 @@ RESload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
m = (here->RESm);
|
||||
|
||||
*(here->RESposPosptr) += m * here->RESconduct;
|
||||
*(here->RESnegNegptr) += m * here->RESconduct;
|
||||
*(here->RESposNegptr) -= m * here->RESconduct;
|
||||
*(here->RESnegPosptr) -= m * here->RESconduct;
|
||||
*(here->RESposPosPtr) += m * here->RESconduct;
|
||||
*(here->RESnegNegPtr) += m * here->RESconduct;
|
||||
*(here->RESposNegPtr) -= m * here->RESconduct;
|
||||
*(here->RESnegPosPtr) -= m * here->RESconduct;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
@ -64,10 +64,10 @@ RESacload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
else
|
||||
g = here->RESm * here->RESconduct;
|
||||
|
||||
*(here->RESposPosptr) += g;
|
||||
*(here->RESnegNegptr) += g;
|
||||
*(here->RESposNegptr) -= g;
|
||||
*(here->RESnegPosptr) -= g;
|
||||
*(here->RESposPosPtr) += g;
|
||||
*(here->RESnegNegPtr) += g;
|
||||
*(here->RESposNegPtr) -= g;
|
||||
*(here->RESnegPosPtr) -= g;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -38,10 +38,10 @@ RESpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
else
|
||||
g = here->RESm * here->RESconduct;
|
||||
|
||||
*(here->RESposPosptr) += g;
|
||||
*(here->RESnegNegptr) += g;
|
||||
*(here->RESposNegptr) -= g;
|
||||
*(here->RESnegPosptr) -= g;
|
||||
*(here->RESposPosPtr) += g;
|
||||
*(here->RESnegNegPtr) += g;
|
||||
*(here->RESposNegPtr) -= g;
|
||||
*(here->RESnegPosPtr) -= g;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -69,10 +69,10 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
return(E_NOMEM);\
|
||||
} } while(0)
|
||||
|
||||
TSTALLOC(RESposPosptr, RESposNode, RESposNode);
|
||||
TSTALLOC(RESnegNegptr, RESnegNode, RESnegNode);
|
||||
TSTALLOC(RESposNegptr, RESposNode, RESnegNode);
|
||||
TSTALLOC(RESnegPosptr, RESnegNode, RESposNode);
|
||||
TSTALLOC(RESposPosPtr, RESposNode, RESposNode);
|
||||
TSTALLOC(RESnegNegPtr, RESnegNode, RESnegNode);
|
||||
TSTALLOC(RESposNegPtr, RESposNode, RESnegNode);
|
||||
TSTALLOC(RESnegPosPtr, RESnegNode, RESposNode);
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -37,10 +37,10 @@ SWacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
g_now = current_state?(model->SWonConduct):(model->SWoffConduct);
|
||||
|
||||
*(here->SWposPosptr) += g_now;
|
||||
*(here->SWposNegptr) -= g_now;
|
||||
*(here->SWnegPosptr) -= g_now;
|
||||
*(here->SWnegNegptr) += g_now;
|
||||
*(here->SWposPosPtr) += g_now;
|
||||
*(here->SWposNegPtr) -= g_now;
|
||||
*(here->SWnegPosPtr) -= g_now;
|
||||
*(here->SWnegNegPtr) += g_now;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -30,13 +30,13 @@ typedef struct sSWinstance {
|
|||
int SWposCntrlNode; /* number of positive controlling node of switch */
|
||||
int SWnegCntrlNode; /* number of negative controlling node of switch */
|
||||
|
||||
double *SWposPosptr; /* pointer to sparse matrix diagonal at
|
||||
double *SWposPosPtr; /* pointer to sparse matrix diagonal at
|
||||
(positive,positive) for switch conductance */
|
||||
double *SWnegPosptr; /* pointer to sparse matrix offdiagonal at
|
||||
double *SWnegPosPtr; /* pointer to sparse matrix offdiagonal at
|
||||
(neagtive,positive) for switch conductance */
|
||||
double *SWposNegptr; /* pointer to sparse matrix offdiagonal at
|
||||
double *SWposNegPtr; /* pointer to sparse matrix offdiagonal at
|
||||
(positive,neagtive) for switch conductance */
|
||||
double *SWnegNegptr; /* pointer to sparse matrix diagonal at
|
||||
double *SWnegNegPtr; /* pointer to sparse matrix diagonal at
|
||||
(neagtive,neagtive) for switch conductance */
|
||||
|
||||
double SWcond; /* conductance of the switch now */
|
||||
|
|
|
|||
|
|
@ -146,10 +146,10 @@ SWload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
g_now = model->SWoffConduct;
|
||||
here->SWcond = g_now;
|
||||
|
||||
*(here->SWposPosptr) += g_now;
|
||||
*(here->SWposNegptr) -= g_now;
|
||||
*(here->SWnegPosptr) -= g_now;
|
||||
*(here->SWnegNegptr) += g_now;
|
||||
*(here->SWposPosPtr) += g_now;
|
||||
*(here->SWposNegPtr) -= g_now;
|
||||
*(here->SWnegPosPtr) -= g_now;
|
||||
*(here->SWnegNegPtr) += g_now;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -41,10 +41,10 @@ SWpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
|
||||
g_now = current_state?(model->SWonConduct):(model->SWoffConduct);
|
||||
|
||||
*(here->SWposPosptr) += g_now;
|
||||
*(here->SWposNegptr) -= g_now;
|
||||
*(here->SWnegPosptr) -= g_now;
|
||||
*(here->SWnegNegptr) += g_now;
|
||||
*(here->SWposPosPtr) += g_now;
|
||||
*(here->SWposNegPtr) -= g_now;
|
||||
*(here->SWnegPosPtr) -= g_now;
|
||||
*(here->SWnegNegPtr) += g_now;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -56,10 +56,10 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
return(E_NOMEM);\
|
||||
} } while(0)
|
||||
|
||||
TSTALLOC(SWposPosptr, SWposNode, SWposNode);
|
||||
TSTALLOC(SWposNegptr, SWposNode, SWnegNode);
|
||||
TSTALLOC(SWnegPosptr, SWnegNode, SWposNode);
|
||||
TSTALLOC(SWnegNegptr, SWnegNode, SWnegNode);
|
||||
TSTALLOC(SWposPosPtr, SWposNode, SWposNode);
|
||||
TSTALLOC(SWposNegPtr, SWposNode, SWnegNode);
|
||||
TSTALLOC(SWnegPosPtr, SWnegNode, SWposNode);
|
||||
TSTALLOC(SWnegNegPtr, SWnegNode, SWnegNode);
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -29,20 +29,20 @@ typedef struct sTXLinstance {
|
|||
char *out_node_name;
|
||||
int TXLbranch; /* unused */
|
||||
|
||||
double *TXLposPosptr;
|
||||
double *TXLposNegptr;
|
||||
double *TXLnegPosptr;
|
||||
double *TXLnegNegptr;
|
||||
double *TXLibr1Posptr;
|
||||
double *TXLibr2Negptr;
|
||||
double *TXLposIbr1ptr;
|
||||
double *TXLnegIbr2ptr;
|
||||
double *TXLibr1Negptr;
|
||||
double *TXLibr2Posptr;
|
||||
double *TXLibr1Ibr1ptr;
|
||||
double *TXLibr2Ibr2ptr;
|
||||
double *TXLibr1Ibr2ptr;
|
||||
double *TXLibr2Ibr1ptr;
|
||||
double *TXLposPosPtr;
|
||||
double *TXLposNegPtr;
|
||||
double *TXLnegPosPtr;
|
||||
double *TXLnegNegPtr;
|
||||
double *TXLibr1PosPtr;
|
||||
double *TXLibr2NegPtr;
|
||||
double *TXLposIbr1Ptr;
|
||||
double *TXLnegIbr2Ptr;
|
||||
double *TXLibr1NegPtr;
|
||||
double *TXLibr2PosPtr;
|
||||
double *TXLibr1Ibr1Ptr;
|
||||
double *TXLibr2Ibr2Ptr;
|
||||
double *TXLibr1Ibr2Ptr;
|
||||
double *TXLibr2Ibr1Ptr;
|
||||
|
||||
unsigned TXLibr1Given : 1;
|
||||
unsigned TXLibr2Given : 1;
|
||||
|
|
|
|||
|
|
@ -67,10 +67,10 @@ TXLload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
tx = here->txline;
|
||||
|
||||
*here->TXLposPosptr += gmin; /* dc solution */
|
||||
*here->TXLnegNegptr += gmin;
|
||||
*here->TXLnegPosptr += gmin;
|
||||
*here->TXLposNegptr += gmin;
|
||||
*here->TXLposPosPtr += gmin; /* dc solution */
|
||||
*here->TXLnegNegPtr += gmin;
|
||||
*here->TXLnegPosPtr += gmin;
|
||||
*here->TXLposNegPtr += gmin;
|
||||
|
||||
if (cond1 || tx->vi_head == NULL) continue;
|
||||
|
||||
|
|
@ -133,13 +133,13 @@ TXLload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
if (here->TXLlengthgiven)
|
||||
g = model->R * here->TXLlength;
|
||||
else g = model->R * here->TXLmodPtr->length;
|
||||
*(here->TXLposIbr1ptr) += 1.0;
|
||||
*(here->TXLnegIbr2ptr) += 1.0;
|
||||
*(here->TXLibr1Ibr1ptr) += 1.0;
|
||||
*(here->TXLibr1Ibr2ptr) += 1.0;
|
||||
*(here->TXLibr2Posptr) += 1.0;
|
||||
*(here->TXLibr2Negptr) -= 1.0;
|
||||
*(here->TXLibr2Ibr1ptr) -= g;
|
||||
*(here->TXLposIbr1Ptr) += 1.0;
|
||||
*(here->TXLnegIbr2Ptr) += 1.0;
|
||||
*(here->TXLibr1Ibr1Ptr) += 1.0;
|
||||
*(here->TXLibr1Ibr2Ptr) += 1.0;
|
||||
*(here->TXLibr2PosPtr) += 1.0;
|
||||
*(here->TXLibr2NegPtr) -= 1.0;
|
||||
*(here->TXLibr2Ibr1Ptr) -= g;
|
||||
|
||||
continue;
|
||||
|
||||
|
|
@ -199,19 +199,19 @@ TXLload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
|
||||
/* change 6,6 1/18/93
|
||||
*(here->TXLibr1Ibr1ptr) -= 1.0;
|
||||
*(here->TXLibr2Ibr2ptr) -= 1.0;
|
||||
*(here->TXLposIbr1ptr) += 1.0;
|
||||
*(here->TXLnegIbr2ptr) += 1.0;
|
||||
*(here->TXLibr1Posptr) += tx->sqtCdL + h1 * tx->h1C;
|
||||
*(here->TXLibr2Negptr) += tx->sqtCdL + h1 * tx->h1C;
|
||||
*(here->TXLibr1Ibr1Ptr) -= 1.0;
|
||||
*(here->TXLibr2Ibr2Ptr) -= 1.0;
|
||||
*(here->TXLposIbr1Ptr) += 1.0;
|
||||
*(here->TXLnegIbr2Ptr) += 1.0;
|
||||
*(here->TXLibr1PosPtr) += tx->sqtCdL + h1 * tx->h1C;
|
||||
*(here->TXLibr2NegPtr) += tx->sqtCdL + h1 * tx->h1C;
|
||||
*/
|
||||
*(here->TXLibr1Ibr1ptr) = -1.0;
|
||||
*(here->TXLibr2Ibr2ptr) = -1.0;
|
||||
*(here->TXLposIbr1ptr) = 1.0;
|
||||
*(here->TXLnegIbr2ptr) = 1.0;
|
||||
*(here->TXLibr1Posptr) = tx->sqtCdL + h1 * tx->h1C;
|
||||
*(here->TXLibr2Negptr) = tx->sqtCdL + h1 * tx->h1C;
|
||||
*(here->TXLibr1Ibr1Ptr) = -1.0;
|
||||
*(here->TXLibr2Ibr2Ptr) = -1.0;
|
||||
*(here->TXLposIbr1Ptr) = 1.0;
|
||||
*(here->TXLnegIbr2Ptr) = 1.0;
|
||||
*(here->TXLibr1PosPtr) = tx->sqtCdL + h1 * tx->h1C;
|
||||
*(here->TXLibr2NegPtr) = tx->sqtCdL + h1 * tx->h1C;
|
||||
|
||||
k = here->TXLibr1;
|
||||
l = here->TXLibr2;
|
||||
|
|
@ -221,11 +221,11 @@ TXLload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
if (right_consts_txl(tx2, time, time2, h, h1, k, l, ckt)) {
|
||||
if (tx->lsl) {
|
||||
f = ratio[0] * tx->h3_aten;
|
||||
*(here->TXLibr1Negptr) = -f;
|
||||
*(here->TXLibr2Posptr) = -f;
|
||||
*(here->TXLibr1NegPtr) = -f;
|
||||
*(here->TXLibr2PosPtr) = -f;
|
||||
f = ratio[0] * tx->h2_aten;
|
||||
*(here->TXLibr1Ibr2ptr) = -f;
|
||||
*(here->TXLibr2Ibr1ptr) = -f;
|
||||
*(here->TXLibr1Ibr2Ptr) = -f;
|
||||
*(here->TXLibr2Ibr1Ptr) = -f;
|
||||
}
|
||||
else {
|
||||
tx->ext = 1;
|
||||
|
|
@ -235,13 +235,13 @@ TXLload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
+ tx->h3_term[1].c + tx->h3_term[2].c
|
||||
+ tx->h3_term[3].c + tx->h3_term[4].c
|
||||
+ tx->h3_term[5].c ) + tx->h3_aten);
|
||||
*(here->TXLibr1Negptr) = -f;
|
||||
*(here->TXLibr2Posptr) = -f;
|
||||
*(here->TXLibr1NegPtr) = -f;
|
||||
*(here->TXLibr2PosPtr) = -f;
|
||||
f = ratio[0] * (h1 * ( tx->h2_term[0].c
|
||||
+ tx->h2_term[1].c + tx->h2_term[2].c )
|
||||
+ tx->h2_aten);
|
||||
*(here->TXLibr1Ibr2ptr) = -f;
|
||||
*(here->TXLibr2Ibr1ptr) = -f;
|
||||
*(here->TXLibr1Ibr2Ptr) = -f;
|
||||
*(here->TXLibr2Ibr1Ptr) = -f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -134,20 +134,20 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
here->TXLibr2 = tmp->number;
|
||||
}
|
||||
|
||||
TSTALLOC(TXLposPosptr, TXLposNode, TXLposNode);
|
||||
TSTALLOC(TXLposNegptr, TXLposNode, TXLnegNode);
|
||||
TSTALLOC(TXLnegPosptr, TXLnegNode, TXLposNode);
|
||||
TSTALLOC(TXLnegNegptr, TXLnegNode, TXLnegNode);
|
||||
TSTALLOC(TXLibr1Posptr, TXLibr1, TXLposNode);
|
||||
TSTALLOC(TXLibr2Negptr, TXLibr2, TXLnegNode);
|
||||
TSTALLOC(TXLnegIbr2ptr, TXLnegNode, TXLibr2);
|
||||
TSTALLOC(TXLposIbr1ptr, TXLposNode, TXLibr1);
|
||||
TSTALLOC(TXLibr1Ibr1ptr, TXLibr1, TXLibr1);
|
||||
TSTALLOC(TXLibr2Ibr2ptr, TXLibr2, TXLibr2);
|
||||
TSTALLOC(TXLibr1Negptr, TXLibr1, TXLnegNode);
|
||||
TSTALLOC(TXLibr2Posptr, TXLibr2, TXLposNode);
|
||||
TSTALLOC(TXLibr1Ibr2ptr, TXLibr1, TXLibr2);
|
||||
TSTALLOC(TXLibr2Ibr1ptr, TXLibr2, TXLibr1);
|
||||
TSTALLOC(TXLposPosPtr, TXLposNode, TXLposNode);
|
||||
TSTALLOC(TXLposNegPtr, TXLposNode, TXLnegNode);
|
||||
TSTALLOC(TXLnegPosPtr, TXLnegNode, TXLposNode);
|
||||
TSTALLOC(TXLnegNegPtr, TXLnegNode, TXLnegNode);
|
||||
TSTALLOC(TXLibr1PosPtr, TXLibr1, TXLposNode);
|
||||
TSTALLOC(TXLibr2NegPtr, TXLibr2, TXLnegNode);
|
||||
TSTALLOC(TXLnegIbr2Ptr, TXLnegNode, TXLibr2);
|
||||
TSTALLOC(TXLposIbr1Ptr, TXLposNode, TXLibr1);
|
||||
TSTALLOC(TXLibr1Ibr1Ptr, TXLibr1, TXLibr1);
|
||||
TSTALLOC(TXLibr2Ibr2Ptr, TXLibr2, TXLibr2);
|
||||
TSTALLOC(TXLibr1NegPtr, TXLibr1, TXLnegNode);
|
||||
TSTALLOC(TXLibr2PosPtr, TXLibr2, TXLposNode);
|
||||
TSTALLOC(TXLibr1Ibr2Ptr, TXLibr1, TXLibr2);
|
||||
TSTALLOC(TXLibr2Ibr1Ptr, TXLibr2, TXLibr1);
|
||||
|
||||
here->in_node_name = CKTnodName(ckt,here->TXLposNode);
|
||||
here->out_node_name = CKTnodName(ckt,here->TXLnegNode);
|
||||
|
|
|
|||
|
|
@ -33,13 +33,13 @@ typedef struct sVCCSinstance {
|
|||
double VCCScoeff; /* coefficient */
|
||||
double VCCSmValue; /* Parallel multiplier */
|
||||
|
||||
double *VCCSposContPosptr; /* pointer to sparse matrix element at
|
||||
double *VCCSposContPosPtr; /* pointer to sparse matrix element at
|
||||
* (positive node, control positive node) */
|
||||
double *VCCSposContNegptr; /* pointer to sparse matrix element at
|
||||
double *VCCSposContNegPtr; /* pointer to sparse matrix element at
|
||||
* (negative node, control negative node) */
|
||||
double *VCCSnegContPosptr; /* pointer to sparse matrix element at
|
||||
double *VCCSnegContPosPtr; /* pointer to sparse matrix element at
|
||||
* (positive node, control positive node) */
|
||||
double *VCCSnegContNegptr; /* pointer to sparse matrix element at
|
||||
double *VCCSnegContNegPtr; /* pointer to sparse matrix element at
|
||||
* (negative node, control negative node) */
|
||||
unsigned VCCScoeffGiven :1 ;/* flag to indicate function coeffs given */
|
||||
unsigned VCCSmGiven :1 ;/* flag to indicate multiplier given */
|
||||
|
|
|
|||
|
|
@ -31,10 +31,10 @@ VCCSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for (here = model->VCCSinstances; here != NULL ;
|
||||
here=here->VCCSnextInstance) {
|
||||
|
||||
*(here->VCCSposContPosptr) += here->VCCScoeff ;
|
||||
*(here->VCCSposContNegptr) -= here->VCCScoeff ;
|
||||
*(here->VCCSnegContPosptr) -= here->VCCScoeff ;
|
||||
*(here->VCCSnegContNegptr) += here->VCCScoeff ;
|
||||
*(here->VCCSposContPosPtr) += here->VCCScoeff ;
|
||||
*(here->VCCSposContNegPtr) -= here->VCCScoeff ;
|
||||
*(here->VCCSnegContPosPtr) -= here->VCCScoeff ;
|
||||
*(here->VCCSnegContNegPtr) += here->VCCScoeff ;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@ VCCSpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
for (here = model->VCCSinstances; here != NULL ;
|
||||
here=here->VCCSnextInstance) {
|
||||
|
||||
*(here->VCCSposContPosptr) += here->VCCScoeff ;
|
||||
*(here->VCCSposContNegptr) -= here->VCCScoeff ;
|
||||
*(here->VCCSnegContPosptr) -= here->VCCScoeff ;
|
||||
*(here->VCCSnegContNegptr) += here->VCCScoeff ;
|
||||
*(here->VCCSposContPosPtr) += here->VCCScoeff ;
|
||||
*(here->VCCSposContNegPtr) -= here->VCCScoeff ;
|
||||
*(here->VCCSnegContPosPtr) -= here->VCCScoeff ;
|
||||
*(here->VCCSnegContNegPtr) += here->VCCScoeff ;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -40,10 +40,10 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
return(E_NOMEM);\
|
||||
} } while(0)
|
||||
|
||||
TSTALLOC(VCCSposContPosptr, VCCSposNode, VCCScontPosNode);
|
||||
TSTALLOC(VCCSposContNegptr, VCCSposNode, VCCScontNegNode);
|
||||
TSTALLOC(VCCSnegContPosptr, VCCSnegNode, VCCScontPosNode);
|
||||
TSTALLOC(VCCSnegContNegptr, VCCSnegNode, VCCScontNegNode);
|
||||
TSTALLOC(VCCSposContPosPtr, VCCSposNode, VCCScontPosNode);
|
||||
TSTALLOC(VCCSposContNegPtr, VCCSposNode, VCCScontNegNode);
|
||||
TSTALLOC(VCCSnegContPosPtr, VCCSnegNode, VCCScontPosNode);
|
||||
TSTALLOC(VCCSnegContNegPtr, VCCSnegNode, VCCScontNegNode);
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -34,17 +34,17 @@ typedef struct sVCVSinstance {
|
|||
double VCVSinitCond; /* initial condition (of controlling source) */
|
||||
double VCVScoeff; /* coefficient */
|
||||
|
||||
double *VCVSposIbrptr; /* pointer to sparse matrix element at
|
||||
double *VCVSposIbrPtr; /* pointer to sparse matrix element at
|
||||
* (positive node, branch equation) */
|
||||
double *VCVSnegIbrptr; /* pointer to sparse matrix element at
|
||||
double *VCVSnegIbrPtr; /* pointer to sparse matrix element at
|
||||
* (negative node, branch equation) */
|
||||
double *VCVSibrPosptr; /* pointer to sparse matrix element at
|
||||
double *VCVSibrPosPtr; /* pointer to sparse matrix element at
|
||||
* (branch equation, positive node) */
|
||||
double *VCVSibrNegptr; /* pointer to sparse matrix element at
|
||||
double *VCVSibrNegPtr; /* pointer to sparse matrix element at
|
||||
* (branch equation, negative node) */
|
||||
double *VCVSibrContPosptr; /* pointer to sparse matrix element at
|
||||
double *VCVSibrContPosPtr; /* pointer to sparse matrix element at
|
||||
*(branch equation, control positive node)*/
|
||||
double *VCVSibrContNegptr; /* pointer to sparse matrix element at
|
||||
double *VCVSibrContNegPtr; /* pointer to sparse matrix element at
|
||||
*(branch equation, control negative node)*/
|
||||
unsigned VCVScoeffGiven :1 ;/* flag to indicate function coeffs given */
|
||||
|
||||
|
|
|
|||
|
|
@ -31,12 +31,12 @@ VCVSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for (here = model->VCVSinstances; here != NULL ;
|
||||
here=here->VCVSnextInstance) {
|
||||
|
||||
*(here->VCVSposIbrptr) += 1.0 ;
|
||||
*(here->VCVSnegIbrptr) -= 1.0 ;
|
||||
*(here->VCVSibrPosptr) += 1.0 ;
|
||||
*(here->VCVSibrNegptr) -= 1.0 ;
|
||||
*(here->VCVSibrContPosptr) -= here->VCVScoeff ;
|
||||
*(here->VCVSibrContNegptr) += here->VCVScoeff ;
|
||||
*(here->VCVSposIbrPtr) += 1.0 ;
|
||||
*(here->VCVSnegIbrPtr) -= 1.0 ;
|
||||
*(here->VCVSibrPosPtr) += 1.0 ;
|
||||
*(here->VCVSibrNegPtr) -= 1.0 ;
|
||||
*(here->VCVSibrContPosPtr) -= here->VCVScoeff ;
|
||||
*(here->VCVSibrContNegPtr) += here->VCVScoeff ;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -33,12 +33,12 @@ VCVSpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
for (here = model->VCVSinstances; here != NULL ;
|
||||
here=here->VCVSnextInstance) {
|
||||
|
||||
*(here->VCVSposIbrptr) += 1.0 ;
|
||||
*(here->VCVSnegIbrptr) -= 1.0 ;
|
||||
*(here->VCVSibrPosptr) += 1.0 ;
|
||||
*(here->VCVSibrNegptr) -= 1.0 ;
|
||||
*(here->VCVSibrContPosptr) -= here->VCVScoeff ;
|
||||
*(here->VCVSibrContNegptr) += here->VCVScoeff ;
|
||||
*(here->VCVSposIbrPtr) += 1.0 ;
|
||||
*(here->VCVSnegIbrPtr) -= 1.0 ;
|
||||
*(here->VCVSibrPosPtr) += 1.0 ;
|
||||
*(here->VCVSibrNegPtr) -= 1.0 ;
|
||||
*(here->VCVSibrContPosPtr) -= here->VCVScoeff ;
|
||||
*(here->VCVSibrContNegPtr) += here->VCVScoeff ;
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -50,12 +50,12 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
return(E_NOMEM);\
|
||||
} } while(0)
|
||||
|
||||
TSTALLOC(VCVSposIbrptr, VCVSposNode, VCVSbranch);
|
||||
TSTALLOC(VCVSnegIbrptr, VCVSnegNode, VCVSbranch);
|
||||
TSTALLOC(VCVSibrPosptr, VCVSbranch, VCVSposNode);
|
||||
TSTALLOC(VCVSibrNegptr, VCVSbranch, VCVSnegNode);
|
||||
TSTALLOC(VCVSibrContPosptr, VCVSbranch, VCVScontPosNode);
|
||||
TSTALLOC(VCVSibrContNegptr, VCVSbranch, VCVScontNegNode);
|
||||
TSTALLOC(VCVSposIbrPtr, VCVSposNode, VCVSbranch);
|
||||
TSTALLOC(VCVSnegIbrPtr, VCVSnegNode, VCVSbranch);
|
||||
TSTALLOC(VCVSibrPosPtr, VCVSbranch, VCVSposNode);
|
||||
TSTALLOC(VCVSibrNegPtr, VCVSbranch, VCVSnegNode);
|
||||
TSTALLOC(VCVSibrContPosPtr, VCVSbranch, VCVScontPosNode);
|
||||
TSTALLOC(VCVSibrContNegPtr, VCVSbranch, VCVScontNegNode);
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -37,10 +37,10 @@ VSRCacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
acImag = here->VSRCacImag;
|
||||
}
|
||||
|
||||
*(here->VSRCposIbrptr) += 1.0 ;
|
||||
*(here->VSRCnegIbrptr) -= 1.0 ;
|
||||
*(here->VSRCibrPosptr) += 1.0 ;
|
||||
*(here->VSRCibrNegptr) -= 1.0 ;
|
||||
*(here->VSRCposIbrPtr) += 1.0 ;
|
||||
*(here->VSRCnegIbrPtr) -= 1.0 ;
|
||||
*(here->VSRCibrPosPtr) += 1.0 ;
|
||||
*(here->VSRCibrNegPtr) -= 1.0 ;
|
||||
*(ckt->CKTrhs + (here->VSRCbranch)) += acReal;
|
||||
*(ckt->CKTirhs + (here->VSRCbranch)) += acImag;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,15 +55,15 @@ typedef struct sVSRCinstance {
|
|||
|
||||
double VSRCr; /* pwl repeat */
|
||||
double VSRCrdelay; /* pwl delay period */
|
||||
double *VSRCposIbrptr; /* pointer to sparse matrix element at
|
||||
double *VSRCposIbrPtr; /* pointer to sparse matrix element at
|
||||
* (positive node, branch equation) */
|
||||
double *VSRCnegIbrptr; /* pointer to sparse matrix element at
|
||||
double *VSRCnegIbrPtr; /* pointer to sparse matrix element at
|
||||
* (negative node, branch equation) */
|
||||
double *VSRCibrPosptr; /* pointer to sparse matrix element at
|
||||
double *VSRCibrPosPtr; /* pointer to sparse matrix element at
|
||||
* (branch equation, positive node) */
|
||||
double *VSRCibrNegptr; /* pointer to sparse matrix element at
|
||||
double *VSRCibrNegPtr; /* pointer to sparse matrix element at
|
||||
* (branch equation, negative node) */
|
||||
double *VSRCibrIbrptr; /* pointer to sparse matrix element at
|
||||
double *VSRCibrIbrPtr; /* pointer to sparse matrix element at
|
||||
* (branch equation, branch equation) */
|
||||
unsigned VSRCdcGiven :1 ; /* flag to indicate dc value given */
|
||||
unsigned VSRCacGiven :1 ; /* flag to indicate ac keyword given */
|
||||
|
|
|
|||
|
|
@ -40,10 +40,10 @@ VSRCload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for (here = model->VSRCinstances; here != NULL ;
|
||||
here=here->VSRCnextInstance) {
|
||||
|
||||
*(here->VSRCposIbrptr) += 1.0 ;
|
||||
*(here->VSRCnegIbrptr) -= 1.0 ;
|
||||
*(here->VSRCibrPosptr) += 1.0 ;
|
||||
*(here->VSRCibrNegptr) -= 1.0 ;
|
||||
*(here->VSRCposIbrPtr) += 1.0 ;
|
||||
*(here->VSRCnegIbrPtr) -= 1.0 ;
|
||||
*(here->VSRCibrPosPtr) += 1.0 ;
|
||||
*(here->VSRCibrNegPtr) -= 1.0 ;
|
||||
if( (ckt->CKTmode & (MODEDCOP | MODEDCTRANCURVE)) &&
|
||||
here->VSRCdcGiven ) {
|
||||
/* load using DC value */
|
||||
|
|
|
|||
|
|
@ -29,18 +29,18 @@ VSRCpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
if (!(here->VSRCacGiven)) {
|
||||
/*a dc source*/
|
||||
/*the connecting nodes are shorted*/
|
||||
*(here->VSRCposIbrptr) += 1.0 ;
|
||||
*(here->VSRCnegIbrptr) += -1.0 ;
|
||||
*(here->VSRCibrPosptr) += 1.0 ;
|
||||
*(here->VSRCibrNegptr) += -1.0 ;
|
||||
*(here->VSRCposIbrPtr) += 1.0 ;
|
||||
*(here->VSRCnegIbrPtr) += -1.0 ;
|
||||
*(here->VSRCibrPosPtr) += 1.0 ;
|
||||
*(here->VSRCibrNegPtr) += -1.0 ;
|
||||
} else {
|
||||
/*an ac source*/
|
||||
/*no effective contribution
|
||||
*diagonal element made 1
|
||||
*/
|
||||
*(here->VSRCposIbrptr) += 1.0 ;
|
||||
*(here->VSRCnegIbrptr) += -1.0 ;
|
||||
*(here->VSRCibrIbrptr) += 1.0 ;
|
||||
*(here->VSRCposIbrPtr) += 1.0 ;
|
||||
*(here->VSRCnegIbrPtr) += -1.0 ;
|
||||
*(here->VSRCibrIbrPtr) += 1.0 ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,11 +42,11 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
return(E_NOMEM);\
|
||||
} } while(0)
|
||||
|
||||
TSTALLOC(VSRCposIbrptr, VSRCposNode, VSRCbranch);
|
||||
TSTALLOC(VSRCnegIbrptr, VSRCnegNode, VSRCbranch);
|
||||
TSTALLOC(VSRCibrNegptr, VSRCbranch, VSRCnegNode);
|
||||
TSTALLOC(VSRCibrPosptr, VSRCbranch, VSRCposNode);
|
||||
TSTALLOC(VSRCibrIbrptr, VSRCbranch, VSRCbranch);
|
||||
TSTALLOC(VSRCposIbrPtr, VSRCposNode, VSRCbranch);
|
||||
TSTALLOC(VSRCnegIbrPtr, VSRCnegNode, VSRCbranch);
|
||||
TSTALLOC(VSRCibrNegPtr, VSRCbranch, VSRCnegNode);
|
||||
TSTALLOC(VSRCibrPosPtr, VSRCbranch, VSRCposNode);
|
||||
TSTALLOC(VSRCibrIbrPtr, VSRCbranch, VSRCbranch);
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -49,10 +49,10 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
return(E_NOMEM);\
|
||||
} } while(0)
|
||||
|
||||
TSTALLOC(VSRCposIbrptr, VSRCposNode, VSRCbranch);
|
||||
TSTALLOC(VSRCnegIbrptr, VSRCnegNode, VSRCbranch);
|
||||
TSTALLOC(VSRCibrNegptr, VSRCbranch, VSRCnegNode);
|
||||
TSTALLOC(VSRCibrPosptr, VSRCbranch, VSRCposNode);
|
||||
TSTALLOC(VSRCposIbrPtr, VSRCposNode, VSRCbranch);
|
||||
TSTALLOC(VSRCnegIbrPtr, VSRCnegNode, VSRCbranch);
|
||||
TSTALLOC(VSRCibrNegPtr, VSRCbranch, VSRCnegNode);
|
||||
TSTALLOC(VSRCibrPosPtr, VSRCbranch, VSRCposNode);
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
Loading…
Reference in New Issue