ahkab.utilities¶
This module holds miscellaneous utility functions.
Module reference¶

EPS
= 2.2204460492503131e16¶ The machine epsilon, the upper bound on the relative error due to rounding in floating point arithmetic.

check_circuit
(circ)[source]¶ Performs some easy sanity checks.
Checks performed:
 Has the circuit more than one node?
 Has the circuit a connection to ground?
 Has the circuit more than two elements?
 Are there no two elements with the same
part_id
?
Parameters:
 circ : circuit instance
 The circuit to be checked.
Returns:
 chk : boolean
 The logical
and()
of the answer to the above questions.  msg : string
 A message describing the error, if any.

check_file
(filename)[source]¶ Checks whether the supplied path refers to a valid file.
Parameters:
 filename : string
 The file name.
Returns:
 chk : boolean
 A value of
True
iffilename
is found and it is a file.
Raises: IOError – if no such file exists or if the supplied file is a directory.

check_ground_paths
(mna, circ, reduced_mna=True, verbose=3)[source]¶ Checks that every node has a DC path to ground
The path to ground might be through nonlinear elements.
Note
 This does not ensure that the circuit will have a DC solution.
 A node without DC path to ground would be rescued (likely) by GMIN so (for the time being at least) we do not halt the execution.
 Also, two series capacitors always fail this check (GMIN saves us)
Bottom line: if there is no DC path to ground, there is probably a mistake in the netlist. Print a warning.
Returns:
 chk : boolean
 A boolean set to true if there is a DC path to ground from all nodes in the circuit.

check_step_and_points
(step=None, points=None, period=None, default_points=100)[source]¶ Sets consistently the step size and the number of points
The calculation is done according to the given period.
Parameters:
 step : scalar, optional
 The discretization step.
 points : int, optional
 The number of points to be used in the discretization.
 period : scalar, optional
 The length of the interval to be discretized. Not setting
this parameter will result in a
ValueError
.  default_points : int, optional
 The default number of points.
Returns:
 (points, step) : tuple
 The adjusted number of points and step value.

class
combinations
(L, k)[source]¶ This class is an iterator that returns all the kcombinations _without_repetition_ of the elements of the supplied list.
Each combination is made of a subset of the list, consisting of k elements.
Parameters:
 L : list
 The set from which the elements are taken.
 k : int
 The size of the subset, the number of elements to be taken

convergence_check
(x, dx, residuum, nv_minus_one, debug=False)[source]¶ Perform a convergence check
Parameters:
 x : arraylike
 The results to be checked.
 dx : arraylike
 The last increment from a NewtonRhapson iteration, solving
F(x) = 0
.  residuum : arraylike
 The remaining error, ie
F(x) = residdum
 nv_minus_one : int
 Number of voltage variables in x. If
nv_minus_one
is equal ton
, it meansx[:n]
are all voltage variables.  debug : boolean, optional
 Whether extra information is needed for debug purposes. Defaults to
False
.
Returns:
 chk : boolean
 Whether the check was passed or not.
True
means ‘convergence!’.  rbn : ndarray
 The convergence check results by node, if
debug
was set toTrue
, elseNone
.

current_convergence_check
(x, dx, residuum, debug=False)[source]¶ Perform a convergence check for current variables
Parameters:
 x : arraylike
 The results to be checked.
 dx : arraylike
 The last increment from a NewtonRhapson iteration, solving
F(x) = 0
.  residuum : arraylike
 The remaining error, ie
F(x) = residdum
 debug : boolean, optional
 Whether extra information is needed for debug purposes. Defaults to
False
.
Returns:
 chk : boolean
 Whether the check was passed or not.
True
means ‘convergence!’.  rbn : ndarray
 The convergence check results by node, if
debug
was set toTrue
, elseNone
.

custom_convergence_check
(x, dx, residuum, er, ea, eresiduum, debug=False)[source]¶ Perform a custom convergence check
Parameters:
 x : arraylike
 The results to be checked.
 dx : arraylike
 The last increment from a NewtonRhapson iteration, solving
F(x) = 0
.  residuum : arraylike
 The remaining error, ie
F(x) = residdum
 ea : float
 The value to be employed for the absolute error.
 er : float
 The value for the relative error to be employed.
 eresiduum : float
 The maximum allowed error for the residuum (left over error).
 debug : boolean, optional
 Whether extra information is needed for debug purposes. Defaults to
False
.
Returns:
 chk : boolean
 Whether the check was passed or not.
True
means ‘convergence!’.  rbn : ndarray
 The convergence check results by node, if
debug
was set toTrue
, elseNone
.

expand_matrix
(matrix, add_a_row=False, add_a_col=False)[source]¶ Append a row and/or a column to the given matrix
Parameters:
 matrix : ndarray
 The matrix to be manipulated.
 add_a_row : boolean, optional
 If set to
True
a row is appended to the supplied matrix.  add_a_col : boolean
 If set to
True
a column is appended.
Returns:
 matrix : ndarray
 A reference to the same matrix supplied.

class
lin_axis_iterator
(min, max, points)[source]¶ This iterator provides the values for a linear sweep.
Parameters:
 min : float
 The minimum value, also the start point of the axis.
 max : float
 The maximum value, also the end point of the axis.
 num : int
 The number of samples to generate. In general, this should be greater than 1.
A value of 1 is accepted only if
min == max
, in which case, only one value is returned by the iterator:min
.
Start and end points are always included.
Notice that, differently from numpy’s
linspace()
, the values are only computed at access time, and hence the memory footprint of the iterator is low.Raises: ValueError – if the number points
is either negative or does notrespect the conditions above.

class
log_axis_iterator
(min, max, points)[source]¶ This iterator provides the values for a base10 logarithmic sweep.
Parameters:
 min : float
 The minimum value, also the start point of the axis.
 max : float
 The maximum value, also the end point of the axis.
 points : int
 The number of points which will be used to discretize the
max
min
interval.
Notice that, differently from numpy’s
logspace()
, the values are only computed at access time, and hence the memory footprint of the iterator is low.Start and end values are always included.

memoize
(f)[source]¶ Memoization decorator
Parameters:
 f : function
 The function to apply memoization to.
Returns:
 fm : function
 The function with added memoization.
Implementation:
Originally from this post, it has been modified to provide a cache of size
options.cache_len
.Note
The size of the cache is per model instance and per function. If you have one model, shared by several elements, you probably prefer to have a big cache.

remove_row
(matrix, rrow=0)[source]¶ Removes a row from a matrix
Parameters:
 matrix : ndarray
 The matrix to be modified.
 rrow : int or None, optional
 The index of the row to be removed. If set to
None
, no row will be removed. By default the first row is removed.
Note
No size checking is done.
Returns:
 matrix : ndarray
 A reference to the modified matrix.

remove_row_and_col
(matrix, rrow=0, rcol=0)[source]¶ Removes a row and/or a column from a matrix
Parameters:
 matrix : ndarray
 The matrix to be modified.
 rrow : int or None, optional
 The index of the row to be removed. If set to
None
, no row will be removed. By default the first row is removed.  rcol : int or None, optional
 The index of the row to be removed. If set to
None
, no row will be removed. By default the first column is removed.
Note
No size checking is done.
Returns:
 matrix : ndarray
 A reference to the modified matrix.

set_submatrix
(row, col, dest_matrix, source_matrix)[source]¶ Copies a source matrix into another matrix
 row, col : ints
 The coordinates of the upper left corner in the destination matrix where the source matrix will be copied.
 dest_matrix : ndarray
 The matrix to be copied to.
 source_matrix : ndarray
 The matrix to be copied from.
Returns:
 dest_matrix : ndarray
 A reference to the modified destination matrix.

voltage_convergence_check
(x, dx, residuum, debug=False)[source]¶ Perform a convergence check for voltage variables
Parameters:
 x : arraylike
 The results to be checked.
 dx : arraylike
 The last increment from a NewtonRhapson iteration, solving
F(x) = 0
.  residuum : arraylike
 The remaining error, ie
F(x) = residdum
 debug : boolean, optional
 Whether extra information is needed for debug purposes. Defaults to
False
.
Returns:
 chk : boolean
 Whether the check was passed or not.
True
means ‘convergence!’.  rbn : ndarray
 The convergence check results by node, if
debug
was set toTrue
, elseNone
.