unify cpl (append Ptr)
This commit is contained in:
parent
044d9087c0
commit
9e208d6a05
|
|
@ -35,22 +35,22 @@ typedef struct sCPLinstance {
|
|||
char **in_node_names;
|
||||
char **out_node_names;
|
||||
|
||||
double **CPLibr1Ibr1;
|
||||
double **CPLibr2Ibr2;
|
||||
double **CPLposIbr1;
|
||||
double **CPLnegIbr2;
|
||||
double **CPLibr1Ibr1Ptr;
|
||||
double **CPLibr2Ibr2Ptr;
|
||||
double **CPLposIbr1Ptr;
|
||||
double **CPLnegIbr2Ptr;
|
||||
/* trial */
|
||||
double **CPLposPos;
|
||||
double **CPLnegNeg;
|
||||
double **CPLposNeg;
|
||||
double **CPLnegPos;
|
||||
double **CPLposPosPtr;
|
||||
double **CPLnegNegPtr;
|
||||
double **CPLposNegPtr;
|
||||
double **CPLnegPosPtr;
|
||||
|
||||
double ***CPLibr1Pos;
|
||||
double ***CPLibr2Neg;
|
||||
double ***CPLibr1Neg;
|
||||
double ***CPLibr2Pos;
|
||||
double ***CPLibr1Ibr2;
|
||||
double ***CPLibr2Ibr1;
|
||||
double ***CPLibr1PosPtr;
|
||||
double ***CPLibr2NegPtr;
|
||||
double ***CPLibr1NegPtr;
|
||||
double ***CPLibr2PosPtr;
|
||||
double ***CPLibr1Ibr2Ptr;
|
||||
double ***CPLibr2Ibr1Ptr;
|
||||
|
||||
unsigned CPLibr1Given : 1;
|
||||
unsigned CPLibr2Given : 1;
|
||||
|
|
|
|||
|
|
@ -80,10 +80,10 @@ CPLload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
for(m = 0 ; m < noL ; m++) /* dc solution */
|
||||
{
|
||||
*here->CPLposPos[m] += gmin;
|
||||
*here->CPLnegNeg[m] += gmin;
|
||||
*here->CPLnegPos[m] += gmin;
|
||||
*here->CPLposNeg[m] += gmin;
|
||||
*here->CPLposPosPtr[m] += gmin;
|
||||
*here->CPLnegNegPtr[m] += gmin;
|
||||
*here->CPLnegPosPtr[m] += gmin;
|
||||
*here->CPLposNegPtr[m] += gmin;
|
||||
}
|
||||
|
||||
if (cond1 || cp->vi_head == NULL) continue;
|
||||
|
|
@ -158,13 +158,13 @@ CPLload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
if (here->CPLlengthGiven)
|
||||
g = model->Rm[resindex] * here->CPLlength;
|
||||
else g = model->Rm[resindex] * here->CPLmodPtr->length;
|
||||
*(here->CPLposIbr1[m]) += 1.0;
|
||||
*(here->CPLnegIbr2[m]) += 1.0;
|
||||
*(here->CPLibr1Ibr1[m]) += 1.0;
|
||||
*(here->CPLibr1Ibr2[m][m]) += 1.0;
|
||||
*(here->CPLibr2Pos[m][m]) += 1.0;
|
||||
*(here->CPLibr2Neg[m][m]) -= 1.0;
|
||||
*(here->CPLibr2Ibr1[m][m]) -= g;
|
||||
*(here->CPLposIbr1Ptr[m]) += 1.0;
|
||||
*(here->CPLnegIbr2Ptr[m]) += 1.0;
|
||||
*(here->CPLibr1Ibr1Ptr[m]) += 1.0;
|
||||
*(here->CPLibr1Ibr2Ptr[m][m]) += 1.0;
|
||||
*(here->CPLibr2PosPtr[m][m]) += 1.0;
|
||||
*(here->CPLibr2NegPtr[m][m]) -= 1.0;
|
||||
*(here->CPLibr2Ibr1Ptr[m][m]) -= g;
|
||||
resindex = resindex + noL - m;
|
||||
}
|
||||
continue;
|
||||
|
|
@ -267,20 +267,20 @@ CPLload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
|
||||
for (m = 0; m < noL; m++) {
|
||||
*(here->CPLibr1Ibr1[m]) = -1.0;
|
||||
*(here->CPLibr2Ibr2[m]) = -1.0;
|
||||
*(here->CPLibr1Ibr1Ptr[m]) = -1.0;
|
||||
*(here->CPLibr2Ibr2Ptr[m]) = -1.0;
|
||||
}
|
||||
|
||||
for (m = 0; m < noL; m++) {
|
||||
*(here->CPLposIbr1[m]) = 1.0;
|
||||
*(here->CPLnegIbr2[m]) = 1.0;
|
||||
*(here->CPLposIbr1Ptr[m]) = 1.0;
|
||||
*(here->CPLnegIbr2Ptr[m]) = 1.0;
|
||||
}
|
||||
|
||||
for (m = 0; m < noL; m++) {
|
||||
for (p = 0; p < noL; p++) {
|
||||
*(here->CPLibr1Pos[m][p]) =
|
||||
*(here->CPLibr1PosPtr[m][p]) =
|
||||
cp->h1t[m][p]->aten + h1 * cp->h1C[m][p];
|
||||
*(here->CPLibr2Neg[m][p]) =
|
||||
*(here->CPLibr2NegPtr[m][p]) =
|
||||
cp->h1t[m][p]->aten + h1 * cp->h1C[m][p];
|
||||
}
|
||||
}
|
||||
|
|
@ -302,14 +302,14 @@ CPLload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
if (cp->h3t[m][p][q]) {
|
||||
f = ratio[q] * (h1 * cp->h3C[m][p][q] +
|
||||
cp->h3t[m][p][q]->aten);
|
||||
*(here->CPLibr1Neg[m][p]) = -f;
|
||||
*(here->CPLibr2Pos[m][p]) = -f;
|
||||
*(here->CPLibr1NegPtr[m][p]) = -f;
|
||||
*(here->CPLibr2PosPtr[m][p]) = -f;
|
||||
}
|
||||
if (cp->h2t[m][p][q]) {
|
||||
f = ratio[q] * (h1 * cp->h2C[m][p][q] +
|
||||
cp->h2t[m][p][q]->aten);
|
||||
*(here->CPLibr1Ibr2[m][p]) = -f;
|
||||
*(here->CPLibr2Ibr1[m][p]) = -f;
|
||||
*(here->CPLibr1Ibr2Ptr[m][p]) = -f;
|
||||
*(here->CPLibr2Ibr1Ptr[m][p]) = -f;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -195,21 +195,21 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
here->CPLibr1 = TMALLOC(int, noL);
|
||||
here->CPLibr2 = TMALLOC(int, noL);
|
||||
|
||||
VECTOR_ALLOC(here->CPLibr1Ibr1, noL);
|
||||
VECTOR_ALLOC(here->CPLibr2Ibr2, noL);
|
||||
VECTOR_ALLOC(here->CPLposIbr1, noL);
|
||||
VECTOR_ALLOC(here->CPLnegIbr2, noL);
|
||||
VECTOR_ALLOC(here->CPLposPos, noL);
|
||||
VECTOR_ALLOC(here->CPLnegNeg, noL);
|
||||
VECTOR_ALLOC(here->CPLnegPos, noL);
|
||||
VECTOR_ALLOC(here->CPLposNeg, noL);
|
||||
VECTOR_ALLOC(here->CPLibr1Ibr1Ptr, noL);
|
||||
VECTOR_ALLOC(here->CPLibr2Ibr2Ptr, noL);
|
||||
VECTOR_ALLOC(here->CPLposIbr1Ptr, noL);
|
||||
VECTOR_ALLOC(here->CPLnegIbr2Ptr, noL);
|
||||
VECTOR_ALLOC(here->CPLposPosPtr, noL);
|
||||
VECTOR_ALLOC(here->CPLnegNegPtr, noL);
|
||||
VECTOR_ALLOC(here->CPLnegPosPtr, noL);
|
||||
VECTOR_ALLOC(here->CPLposNegPtr, noL);
|
||||
|
||||
MATRIX_ALLOC(here->CPLibr1Pos, noL, noL);
|
||||
MATRIX_ALLOC(here->CPLibr2Neg, noL, noL);
|
||||
MATRIX_ALLOC(here->CPLibr1Neg, noL, noL);
|
||||
MATRIX_ALLOC(here->CPLibr2Pos, noL, noL);
|
||||
MATRIX_ALLOC(here->CPLibr1Ibr2, noL, noL);
|
||||
MATRIX_ALLOC(here->CPLibr2Ibr1, noL, noL);
|
||||
MATRIX_ALLOC(here->CPLibr1PosPtr, noL, noL);
|
||||
MATRIX_ALLOC(here->CPLibr2NegPtr, noL, noL);
|
||||
MATRIX_ALLOC(here->CPLibr1NegPtr, noL, noL);
|
||||
MATRIX_ALLOC(here->CPLibr2PosPtr, noL, noL);
|
||||
MATRIX_ALLOC(here->CPLibr1Ibr2Ptr, noL, noL);
|
||||
MATRIX_ALLOC(here->CPLibr2Ibr1Ptr, noL, noL);
|
||||
|
||||
|
||||
branchname = TMALLOC(char *, here->dimension);
|
||||
|
|
@ -259,23 +259,23 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
}
|
||||
|
||||
for (m = 0; m < here->dimension; m++) {
|
||||
TSTALLOC(CPLibr1Ibr1[m],CPLibr1[m],CPLibr1[m]);
|
||||
TSTALLOC(CPLibr2Ibr2[m],CPLibr2[m],CPLibr2[m]);
|
||||
TSTALLOC(CPLposIbr1[m],CPLposNodes[m],CPLibr1[m]);
|
||||
TSTALLOC(CPLnegIbr2[m],CPLnegNodes[m],CPLibr2[m]);
|
||||
TSTALLOC(CPLposPos[m],CPLposNodes[m],CPLposNodes[m]);
|
||||
TSTALLOC(CPLnegNeg[m],CPLnegNodes[m],CPLnegNodes[m]);
|
||||
TSTALLOC(CPLnegPos[m],CPLnegNodes[m],CPLposNodes[m]);
|
||||
TSTALLOC(CPLposNeg[m],CPLposNodes[m],CPLnegNodes[m]);
|
||||
TSTALLOC(CPLibr1Ibr1Ptr[m],CPLibr1[m],CPLibr1[m]);
|
||||
TSTALLOC(CPLibr2Ibr2Ptr[m],CPLibr2[m],CPLibr2[m]);
|
||||
TSTALLOC(CPLposIbr1Ptr[m],CPLposNodes[m],CPLibr1[m]);
|
||||
TSTALLOC(CPLnegIbr2Ptr[m],CPLnegNodes[m],CPLibr2[m]);
|
||||
TSTALLOC(CPLposPosPtr[m],CPLposNodes[m],CPLposNodes[m]);
|
||||
TSTALLOC(CPLnegNegPtr[m],CPLnegNodes[m],CPLnegNodes[m]);
|
||||
TSTALLOC(CPLnegPosPtr[m],CPLnegNodes[m],CPLposNodes[m]);
|
||||
TSTALLOC(CPLposNegPtr[m],CPLposNodes[m],CPLnegNodes[m]);
|
||||
|
||||
for (p = 0; p < here->dimension; p++) {
|
||||
|
||||
TSTALLOC(CPLibr1Pos[m][p],CPLibr1[m],CPLposNodes[p]);
|
||||
TSTALLOC(CPLibr2Neg[m][p],CPLibr2[m],CPLnegNodes[p]);
|
||||
TSTALLOC(CPLibr1Neg[m][p],CPLibr1[m],CPLnegNodes[p]);
|
||||
TSTALLOC(CPLibr2Pos[m][p],CPLibr2[m],CPLposNodes[p]);
|
||||
TSTALLOC(CPLibr1Ibr2[m][p],CPLibr1[m],CPLibr2[p]);
|
||||
TSTALLOC(CPLibr2Ibr1[m][p],CPLibr2[m],CPLibr1[p]);
|
||||
TSTALLOC(CPLibr1PosPtr[m][p],CPLibr1[m],CPLposNodes[p]);
|
||||
TSTALLOC(CPLibr2NegPtr[m][p],CPLibr2[m],CPLnegNodes[p]);
|
||||
TSTALLOC(CPLibr1NegPtr[m][p],CPLibr1[m],CPLnegNodes[p]);
|
||||
TSTALLOC(CPLibr2PosPtr[m][p],CPLibr2[m],CPLposNodes[p]);
|
||||
TSTALLOC(CPLibr1Ibr2Ptr[m][p],CPLibr1[m],CPLibr2[p]);
|
||||
TSTALLOC(CPLibr2Ibr1Ptr[m][p],CPLibr2[m],CPLibr1[p]);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -305,22 +305,22 @@ CPLunsetup(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
noL = here->dimension;
|
||||
|
||||
VECTOR_FREE(here->CPLibr1Ibr1);
|
||||
VECTOR_FREE(here->CPLibr2Ibr2);
|
||||
VECTOR_FREE(here->CPLposIbr1);
|
||||
VECTOR_FREE(here->CPLnegIbr2);
|
||||
VECTOR_FREE(here->CPLposPos);
|
||||
VECTOR_FREE(here->CPLnegNeg);
|
||||
VECTOR_FREE(here->CPLnegPos);
|
||||
VECTOR_FREE(here->CPLposNeg);
|
||||
VECTOR_FREE(here->CPLibr1Ibr1Ptr);
|
||||
VECTOR_FREE(here->CPLibr2Ibr2Ptr);
|
||||
VECTOR_FREE(here->CPLposIbr1Ptr);
|
||||
VECTOR_FREE(here->CPLnegIbr2Ptr);
|
||||
VECTOR_FREE(here->CPLposPosPtr);
|
||||
VECTOR_FREE(here->CPLnegNegPtr);
|
||||
VECTOR_FREE(here->CPLnegPosPtr);
|
||||
VECTOR_FREE(here->CPLposNegPtr);
|
||||
|
||||
|
||||
MATRIX_FREE(here->CPLibr1Pos, noL, noL);
|
||||
MATRIX_FREE(here->CPLibr2Neg, noL, noL);
|
||||
MATRIX_FREE(here->CPLibr1Neg, noL, noL);
|
||||
MATRIX_FREE(here->CPLibr2Pos, noL, noL);
|
||||
MATRIX_FREE(here->CPLibr1Ibr2, noL, noL);
|
||||
MATRIX_FREE(here->CPLibr2Ibr1, noL, noL);
|
||||
MATRIX_FREE(here->CPLibr1PosPtr, noL, noL);
|
||||
MATRIX_FREE(here->CPLibr2NegPtr, noL, noL);
|
||||
MATRIX_FREE(here->CPLibr1NegPtr, noL, noL);
|
||||
MATRIX_FREE(here->CPLibr2PosPtr, noL, noL);
|
||||
MATRIX_FREE(here->CPLibr1Ibr2Ptr, noL, noL);
|
||||
MATRIX_FREE(here->CPLibr2Ibr1Ptr, noL, noL);
|
||||
|
||||
|
||||
for (m = 0; m < noL; m++) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue