Browse Prior Art Database

# Algorithm for Processing Storing of the Circuit Matrix in APL for Interactive Circuit Analysis

IP.com Disclosure Number: IPCOM000083076D
Original Publication Date: 1975-Mar-01
Included in the Prior Art Database: 2005-Feb-28
Document File: 3 page(s) / 50K

IBM

## Related People

Brennan, PA: AUTHOR [+3]

## Abstract

In simulating the DC or transient behavior of circuits by using a computer-aided circuit analysis program, there are two distinct phases, viz. the setup phase (wherein equations are generated from the topology of the circuit) followed by the execution phase (wherein the circuit equations are solved). In this latter phase, the major amount of processing time is spent in generating and inverting the matrix formed from the circuit equations.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 49% of the total text.

Page 1 of 3

Algorithm for Processing Storing of the Circuit Matrix in APL for Interactive Circuit Analysis

In simulating the DC or transient behavior of circuits by using a computer- aided circuit analysis program, there are two distinct phases, viz. the setup phase (wherein equations are generated from the topology of the circuit) followed by the execution phase (wherein the circuit equations are solved). In this latter phase, the major amount of processing time is spent in generating and inverting the matrix formed from the circuit equations.

As is apparent from Fig. 1, this circuit matrix is assembled several times for each solution. The algorithm described here presents an efficient method for generating the circuit matrix in an interactive, vector-oriented environment, viz. APL. In the following, the nodal [1] or modified nodal [2] formulation for the circuit equations are assumed.

The sparse circuit matrix is always stored as a vector where only non-zero elements are stored and processed for efficiency. In the general case for transient analysis the matrix is comprised of three numerical value types, viz. constant, time dependent and nonlinear. The constant type maintains its value throughout the analysis. The values for time-dependent elements are updated at each time step taken during the transient analysis, while the nonlinear element values are updated for each Newton-Ralphson iteration inside the time loop.

There is no loss in generality in assuming that only constant and non-linear types are in the matrix for simplicity. Then for each non-zero location in the matrix where there is more than one constant-type term, these terms can be added together during the setup phase so that one numerical value results for each corresponding location. Thus, if the vector of nodal matrix elements are denoted as MAT and the location vector in MAT for constant terms is defined as LOC1 and its value vector as VAL1, then the way to update the circuit matrix due to constant types is simply (in APL): MAT[LOC1] <-- MAT[LOC1] <-- + VAL1 (1)

The nonlinear type terms are evaluated individually for each nonlinear circuit element in the execution phase, so that it is a straightforward matter to generate a vector of values (VAL2) to store all the terms. The location vector (LOC2) corresponding to VAL2 can be computed during the setup phase but the nonlinear terms cannot be processed in the same way as Eq. (1), because there are many multiple entries for the same location in the matrix MAT coming from VAL 2. An alternative to Eq. (1) is to process each term of VAL2 in a loop, but this is very time consuming in a vector-oriented system such as APL.

The algorithm used in the ICD program [3] to process the nonlinear terms is discussed now. In the setup phase first extract from LOC2 (which has a one-to- one correspondence with the value vector VAL2) a discrete location vector D1, which contains all the locations in LOC2 but excludes repetitions. Then compute the...