Browse Source

Fixed VBIC model for KLU

Fixed SMPfindElt messages
pre-master-46
Francesco Lannutti 3 years ago
committed by Holger Vogt
parent
commit
d68e83be78
  1. 5
      src/maths/KLU/klusmp.c
  2. 12
      src/spicelib/devices/vbic/vbicbindCSC.c
  3. 4
      src/spicelib/devices/vbic/vbicdefs.h

5
src/maths/KLU/klusmp.c

@ -1727,8 +1727,8 @@ SMPfindElt (SMPmatrix *eMatrix, int Row, int Col, int CreateIfMissing)
Row = Row - 1 ; Row = Row - 1 ;
Col = Col - 1 ; Col = Col - 1 ;
if ((Row < 0) || (Col < 0)) {
printf ("Information: Cannot find an element with row '%d' and column '%d' in the KLU matrix\n", Row, Col) ;
if (Col < 0) {
// printf ("Information: Cannot find an element with row '%d' and column '%d' in the KLU matrix\n", Row, Col) ;
return NULL ; return NULL ;
} }
for (i = eMatrix->SMPkluMatrix->KLUmatrixAp [Col] ; i < eMatrix->SMPkluMatrix->KLUmatrixAp [Col + 1] ; i++) { for (i = eMatrix->SMPkluMatrix->KLUmatrixAp [Col] ; i < eMatrix->SMPkluMatrix->KLUmatrixAp [Col + 1] ; i++) {
@ -1738,6 +1738,7 @@ SMPfindElt (SMPmatrix *eMatrix, int Row, int Col, int CreateIfMissing)
} else if (eMatrix->SMPkluMatrix->KLUmatrixIsComplex == KLUMatrixComplex) { } else if (eMatrix->SMPkluMatrix->KLUmatrixIsComplex == KLUMatrixComplex) {
return (SMPelement *) &(eMatrix->SMPkluMatrix->KLUmatrixAxComplex [2 * i]) ; return (SMPelement *) &(eMatrix->SMPkluMatrix->KLUmatrixAxComplex [2 * i]) ;
} else { } else {
printf ("Information: Cannot find an element with row '%d' and column '%d' in the KLU matrix\n", Row, Col) ;
return NULL ; return NULL ;
} }
} }

12
src/spicelib/devices/vbic/vbicbindCSC.c

@ -89,13 +89,17 @@ VBICbindCSC (GENmodel *inModel, CKTcircuit *ckt)
CREATE_KLU_BINDING_TABLE(VBICbaseBPtempPtr, VBICbaseBPtempBinding, VBICbaseBPNode, VBICtempNode); CREATE_KLU_BINDING_TABLE(VBICbaseBPtempPtr, VBICbaseBPtempBinding, VBICbaseBPNode, VBICtempNode);
CREATE_KLU_BINDING_TABLE(VBICemitEItempPtr, VBICemitEItempBinding, VBICemitEINode, VBICtempNode); CREATE_KLU_BINDING_TABLE(VBICemitEItempPtr, VBICemitEItempBinding, VBICemitEINode, VBICtempNode);
CREATE_KLU_BINDING_TABLE(VBICsubsSItempPtr, VBICsubsSItempBinding, VBICsubsSINode, VBICtempNode); CREATE_KLU_BINDING_TABLE(VBICsubsSItempPtr, VBICsubsSItempBinding, VBICsubsSINode, VBICtempNode);
CREATE_KLU_BINDING_TABLE(VBICtempCollPtr, VBICtempCollBinding, VBICtempNode, VBICcollNode);
CREATE_KLU_BINDING_TABLE(VBICtempCollCIPtr, VBICtempCollCIBinding, VBICtempNode, VBICcollCINode); CREATE_KLU_BINDING_TABLE(VBICtempCollCIPtr, VBICtempCollCIBinding, VBICtempNode, VBICcollCINode);
CREATE_KLU_BINDING_TABLE(VBICtempCollCXPtr, VBICtempCollCXBinding, VBICtempNode, VBICcollCXNode); CREATE_KLU_BINDING_TABLE(VBICtempCollCXPtr, VBICtempCollCXBinding, VBICtempNode, VBICcollCXNode);
CREATE_KLU_BINDING_TABLE(VBICtempBaseBIPtr, VBICtempBaseBIBinding, VBICtempNode, VBICbaseBINode); CREATE_KLU_BINDING_TABLE(VBICtempBaseBIPtr, VBICtempBaseBIBinding, VBICtempNode, VBICbaseBINode);
CREATE_KLU_BINDING_TABLE(VBICtempBasePtr, VBICtempBaseBinding, VBICtempNode, VBICbaseNode);
CREATE_KLU_BINDING_TABLE(VBICtempBaseBXPtr, VBICtempBaseBXBinding, VBICtempNode, VBICbaseBXNode); CREATE_KLU_BINDING_TABLE(VBICtempBaseBXPtr, VBICtempBaseBXBinding, VBICtempNode, VBICbaseBXNode);
CREATE_KLU_BINDING_TABLE(VBICtempBaseBPPtr, VBICtempBaseBPBinding, VBICtempNode, VBICbaseBPNode); CREATE_KLU_BINDING_TABLE(VBICtempBaseBPPtr, VBICtempBaseBPBinding, VBICtempNode, VBICbaseBPNode);
CREATE_KLU_BINDING_TABLE(VBICtempEmitPtr, VBICtempEmitBinding, VBICtempNode, VBICemitNode);
CREATE_KLU_BINDING_TABLE(VBICtempEmitEIPtr, VBICtempEmitEIBinding, VBICtempNode, VBICemitEINode); CREATE_KLU_BINDING_TABLE(VBICtempEmitEIPtr, VBICtempEmitEIBinding, VBICtempNode, VBICemitEINode);
CREATE_KLU_BINDING_TABLE(VBICtempSubsPtr, VBICtempSubsBinding, VBICtempNode, VBICsubsNode); CREATE_KLU_BINDING_TABLE(VBICtempSubsPtr, VBICtempSubsBinding, VBICtempNode, VBICsubsNode);
CREATE_KLU_BINDING_TABLE(VBICtempSubsSIPtr, VBICtempSubsSIBinding, VBICtempNode, VBICsubsSINode);
CREATE_KLU_BINDING_TABLE(VBICtempTempPtr, VBICtempTempBinding, VBICtempNode, VBICtempNode); CREATE_KLU_BINDING_TABLE(VBICtempTempPtr, VBICtempTempBinding, VBICtempNode, VBICtempNode);
} }
} }
@ -182,13 +186,17 @@ VBICbindCSCComplex (GENmodel *inModel, CKTcircuit *ckt)
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICbaseBPtempPtr, VBICbaseBPtempBinding, VBICbaseBPNode, VBICtempNode); CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICbaseBPtempPtr, VBICbaseBPtempBinding, VBICbaseBPNode, VBICtempNode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICemitEItempPtr, VBICemitEItempBinding, VBICemitEINode, VBICtempNode); CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICemitEItempPtr, VBICemitEItempBinding, VBICemitEINode, VBICtempNode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICsubsSItempPtr, VBICsubsSItempBinding, VBICsubsSINode, VBICtempNode); CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICsubsSItempPtr, VBICsubsSItempBinding, VBICsubsSINode, VBICtempNode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempCollPtr, VBICtempCollBinding, VBICtempNode, VBICcollNode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempCollCIPtr, VBICtempCollCIBinding, VBICtempNode, VBICcollCINode); CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempCollCIPtr, VBICtempCollCIBinding, VBICtempNode, VBICcollCINode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempCollCXPtr, VBICtempCollCXBinding, VBICtempNode, VBICcollCXNode); CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempCollCXPtr, VBICtempCollCXBinding, VBICtempNode, VBICcollCXNode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempBaseBIPtr, VBICtempBaseBIBinding, VBICtempNode, VBICbaseBINode); CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempBaseBIPtr, VBICtempBaseBIBinding, VBICtempNode, VBICbaseBINode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempBasePtr, VBICtempBaseBinding, VBICtempNode, VBICbaseNode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempBaseBXPtr, VBICtempBaseBXBinding, VBICtempNode, VBICbaseBXNode); CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempBaseBXPtr, VBICtempBaseBXBinding, VBICtempNode, VBICbaseBXNode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempBaseBPPtr, VBICtempBaseBPBinding, VBICtempNode, VBICbaseBPNode); CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempBaseBPPtr, VBICtempBaseBPBinding, VBICtempNode, VBICbaseBPNode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempEmitPtr, VBICtempEmitBinding, VBICtempNode, VBICemitNode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempEmitEIPtr, VBICtempEmitEIBinding, VBICtempNode, VBICemitEINode); CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempEmitEIPtr, VBICtempEmitEIBinding, VBICtempNode, VBICemitEINode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempSubsPtr, VBICtempSubsBinding, VBICtempNode, VBICsubsNode); CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempSubsPtr, VBICtempSubsBinding, VBICtempNode, VBICsubsNode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempSubsSIPtr, VBICtempSubsSIBinding, VBICtempNode, VBICsubsSINode);
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempTempPtr, VBICtempTempBinding, VBICtempNode, VBICtempNode); CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(VBICtempTempPtr, VBICtempTempBinding, VBICtempNode, VBICtempNode);
} }
} }
@ -275,13 +283,17 @@ VBICbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICbaseBPtempPtr, VBICbaseBPtempBinding, VBICbaseBPNode, VBICtempNode); CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICbaseBPtempPtr, VBICbaseBPtempBinding, VBICbaseBPNode, VBICtempNode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICemitEItempPtr, VBICemitEItempBinding, VBICemitEINode, VBICtempNode); CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICemitEItempPtr, VBICemitEItempBinding, VBICemitEINode, VBICtempNode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICsubsSItempPtr, VBICsubsSItempBinding, VBICsubsSINode, VBICtempNode); CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICsubsSItempPtr, VBICsubsSItempBinding, VBICsubsSINode, VBICtempNode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempCollPtr, VBICtempCollBinding, VBICtempNode, VBICcollNode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempCollCIPtr, VBICtempCollCIBinding, VBICtempNode, VBICcollCINode); CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempCollCIPtr, VBICtempCollCIBinding, VBICtempNode, VBICcollCINode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempCollCXPtr, VBICtempCollCXBinding, VBICtempNode, VBICcollCXNode); CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempCollCXPtr, VBICtempCollCXBinding, VBICtempNode, VBICcollCXNode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempBaseBIPtr, VBICtempBaseBIBinding, VBICtempNode, VBICbaseBINode); CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempBaseBIPtr, VBICtempBaseBIBinding, VBICtempNode, VBICbaseBINode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempBasePtr, VBICtempBaseBinding, VBICtempNode, VBICbaseNode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempBaseBXPtr, VBICtempBaseBXBinding, VBICtempNode, VBICbaseBXNode); CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempBaseBXPtr, VBICtempBaseBXBinding, VBICtempNode, VBICbaseBXNode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempBaseBPPtr, VBICtempBaseBPBinding, VBICtempNode, VBICbaseBPNode); CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempBaseBPPtr, VBICtempBaseBPBinding, VBICtempNode, VBICbaseBPNode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempEmitPtr, VBICtempEmitBinding, VBICtempNode, VBICemitNode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempEmitEIPtr, VBICtempEmitEIBinding, VBICtempNode, VBICemitEINode); CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempEmitEIPtr, VBICtempEmitEIBinding, VBICtempNode, VBICemitEINode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempSubsPtr, VBICtempSubsBinding, VBICtempNode, VBICsubsNode); CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempSubsPtr, VBICtempSubsBinding, VBICtempNode, VBICsubsNode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempSubsSIPtr, VBICtempSubsSIBinding, VBICtempNode, VBICsubsSINode);
CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempTempPtr, VBICtempTempBinding, VBICtempNode, VBICtempNode); CONVERT_KLU_BINDING_TABLE_TO_REAL(VBICtempTempPtr, VBICtempTempBinding, VBICtempNode, VBICtempNode);
} }
} }

4
src/spicelib/devices/vbic/vbicdefs.h

@ -321,13 +321,17 @@ typedef struct sVBICinstance {
BindElement *VBICbaseBPtempBinding ; BindElement *VBICbaseBPtempBinding ;
BindElement *VBICemitEItempBinding ; BindElement *VBICemitEItempBinding ;
BindElement *VBICsubsSItempBinding ; BindElement *VBICsubsSItempBinding ;
BindElement *VBICtempCollBinding ;
BindElement *VBICtempCollCIBinding ; BindElement *VBICtempCollCIBinding ;
BindElement *VBICtempCollCXBinding ; BindElement *VBICtempCollCXBinding ;
BindElement *VBICtempBaseBIBinding ; BindElement *VBICtempBaseBIBinding ;
BindElement *VBICtempBaseBinding ;
BindElement *VBICtempBaseBXBinding ; BindElement *VBICtempBaseBXBinding ;
BindElement *VBICtempBaseBPBinding ; BindElement *VBICtempBaseBPBinding ;
BindElement *VBICtempEmitBinding ;
BindElement *VBICtempEmitEIBinding ; BindElement *VBICtempEmitEIBinding ;
BindElement *VBICtempSubsBinding ; BindElement *VBICtempSubsBinding ;
BindElement *VBICtempSubsSIBinding ;
BindElement *VBICtempTempBinding ; BindElement *VBICtempTempBinding ;
#endif #endif

Loading…
Cancel
Save