ahkab.utilities¶
This module holds miscellaneous utility functions.
Module reference¶
-
EPS
= 2.2204460492503131e-16¶ 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 non-linear 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 k-combinations _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 : array-like
- The results to be checked.
- dx : array-like
- The last increment from a Newton-Rhapson iteration, solving
F(x) = 0
. - residuum : array-like
- 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 : array-like
- The results to be checked.
- dx : array-like
- The last increment from a Newton-Rhapson iteration, solving
F(x) = 0
. - residuum : array-like
- 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 : array-like
- The results to be checked.
- dx : array-like
- The last increment from a Newton-Rhapson iteration, solving
F(x) = 0
. - residuum : array-like
- 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 base-10 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 : array-like
- The results to be checked.
- dx : array-like
- The last increment from a Newton-Rhapson iteration, solving
F(x) = 0
. - residuum : array-like
- 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
.