/********** Copyright 1990 Regents of the University of California. All rights reserved. Author: 1987 Gary W. Ng **********/ #include "ngspice/ngspice.h" #include "ngspice/cktdefs.h" /* * NInzIter (ckt, posDrive, negDrive) * * This routine solves the adjoint system. It assumes that the matrix has * already been loaded by a call to NIacIter, so it only alters the right * hand side vector. The unit-valued current excitation is applied * between nodes posDrive and negDrive. */ void NInzIter(CKTcircuit *ckt, int posDrive, int negDrive) { int i; /* clear out the right hand side vector */ for (i = 0; i <= SMPmatSize(ckt->CKTmatrix); i++) { *((ckt->CKTrhs) + i) = 0.0; *((ckt->CKTirhs) + i) = 0.0; } *((ckt->CKTrhs) + posDrive) = 1.0; /* apply unit current excitation */ *((ckt->CKTrhs) + negDrive) = -1.0; SMPcaSolve(ckt->CKTmatrix, ckt->CKTrhs, ckt->CKTirhs, ckt->CKTrhsSpare, ckt->CKTirhsSpare); *ckt->CKTrhs = 0.0; *ckt->CKTirhs = 0.0; }