unify cpl (append Ptr)

This commit is contained in:
rlar 2016-06-18 21:16:14 +02:00
parent 044d9087c0
commit 9e208d6a05
3 changed files with 77 additions and 77 deletions

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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++) {