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
Trueiffilenameis 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_oneis 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.
Truemeans ‘convergence!’. - rbn : ndarray
- The convergence check results by node, if
debugwas 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.
Truemeans ‘convergence!’. - rbn : ndarray
- The convergence check results by node, if
debugwas 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.
Truemeans ‘convergence!’. - rbn : ndarray
- The convergence check results by node, if
debugwas 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
Truea row is appended to the supplied matrix. - add_a_col : boolean
- If set to
Truea 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 pointsis 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-mininterval.
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.
Truemeans ‘convergence!’. - rbn : ndarray
- The convergence check results by node, if
debugwas set toTrue, elseNone.