# SLiCAPprotos.py

SLiCAP module with basic SLiCAP classes and functions.

class Snippet(snippet: str = '', format: None | str = None, mode='w')

  Text snippet created by the formatters.

  property format

    Will be set by the formatter method.

  save(filenameOrPath: str | Path)

    Saves the snippet.

    If the path is absolute, it saves it in that location. Otherwise, the preffix and suffix are added according to format:

    - latex

      - prefix: project folder -> SLiCAP.ini -> [projectpaths] -> tex_snippets

      - suffix: ‘.tex’

    - rst

      - prefix: project folder -> SLiCAP.ini -> [projectpaths] -> rst_snippets

      - suffix: ‘.rst’

      - expressions and inline equations are appended to the file as:

        |<variable name>| = <expr>|<inline equation>

    - myst

      - prefix: project folder -> SLiCAP.ini -> [projectpaths] -> myst_snippets

      - suffix: ‘.md’

    - html

      - prefix: project folder -> SLiCAP.ini -> [projectpaths] -> html_snippets

      - suffix: ‘.html

    - md

      - prefix: project folder -> SLiCAP.ini -> [projectpaths] -> md_snippets

      - suffix: ‘.md’

  property snippet

    Will be set by the formatter method.

class circuit

  Prototype (sub)circuit object.

  circuits

    (dict) with key-value pairs:

    - key: Name (str) of a subcircuit.

    - value: Associated circuit object (SLiCAPprotos.circuit).

  controlled

    (list) with reference designators (str) of controlled sources.

  defPar(parName, parValue, units=None)

    Updates or adds a parameter definition and updates the list SLiCAPprotos.circuit.params with names (sympy.Symbol) of undefined parameters.

    Parameters:

      - parName (str, sympy.Symbol) – Name of the parameter.

      - parValue (str, sympy.Symbol, sympy.Expr, int, float) – Value of the parameter.

      - units (str, sympy.Symbol) – Value of the parameter, defaults to None

    Returns:

      None

    Return type:

      NoneType

  defPars(parDict)

    Adds or modifies multiple parameter definitions and updates the list circuit.params with names (sympy.Symbol) of undefined parameters.

    Params parDict:

      Dictionary with key-value pairs:

      - key: parName (str, sympy.Symbol): name of the parameter.

      - value: parValue (str, float, int, sympy object): value or expression of the parameter.

    Returns:

      None

    Return type:

      None

  delPar(parName)

    Deletes a parameter definition and updates the list SLiCAPprotos.circuit.params with names (sympy.core.symbol.Symbol) of undefined parameters.

    Parameters:

      parName (str, sympy.core.symbol.Symbol) – Name of the parameter.

    Returns:

      None

    Return type:

      NoneType

  depVars()

    Returns the list with valid detectors.

    Returns:

      list with valid detectors

    Return type:

      list

  dep_vars

    (list) with names (str) of independent variables:

    - nodal voltages:

      A nodal voltage will be named as: ‘V_<node name>’. The reference node ‘V_0’ is also listed, but it cannot be used as detector. use circuit.dep_vars() to obtain the list of valid detectors.

    - branch currents. Branch current will be named ad follows:

      - Current through a two-terminal element:

        - Vxxx: ‘I_Vxxx’

        - Rxxx with model ‘r’: ‘I_Rxxx’

        - Lxxx: ‘I_Lxxx’

      - Currents through the input port or the output port of controlled sources:

        - Exxx output port: ‘Io_Exxx’

        - Fxxx input port: ‘Ii_Fxxx’

        - Gxxx, model = ‘G’, output port: ‘Io_Gxxx’

        - Hxxx, input port: ‘Ii_Hxxx’, output port: ‘Io_xxx’

  detector

    Signal detector None if not defined, or a list with two names of dependent variales or one name and ‘None’.

  elements

    (dict) with key-value pairs:

    - key: Reference designator (str) of the element.

    - value: Element object (SLiCAPprotos.element)

  errors

    Number (int) of errors found during checking of the circuit. Defaults to 0.

  file

    Name (str) of the netlist file. Defaults to None.

  getElementValue(elementID, param='value', substitute=True, numeric=False)

    Returns the value or expression of one or more circuit elements.

    If instruction.numeric == True it will perform a full recursive substitution of all circuit parameter definitions.

    This method is called by instruction.circuit.getElementValue() with keyword arg numeric = True if instruction.simType is set to ‘numeric’.

    Parameters:

      - elementID (str, list) – name(s) of the element(s)

      - param (str) –

        name of the parameter (equal for all elements):

        - ’value’: Laplace value

        - ’dc’: DC value (independent sources only)

        - ’noise’: Noise spectral density (independent sources only)

        - ’dcvar’: DC variance (independent sources only)

        Defaults to ‘value’

      - substitute (Bool) –

        - True: circuit parameters will be recursively substituted

        - False: Element values or expressions will be returned as defined

        Defaults to True

      - numeric (Bool) –

        - True: Numeric values of functions and constants will be evaluated and rational numbers will be converted to sympy.Float.

        - False: No numeric evaluation of functions and constants

        Defaults to False

    Returns:

      if type(parNames) == list:

      return value = dict with key-value pairs: key (sympy.core.symbol.Symbol): name of the parameter, value (int, float, sympy expression): value of the parameter

      else: value or expression

    Return type:

      dict, sympy.Float, sympy.Expr

  getParValue(parNames, substitute=True, numeric=False)

    Returns the value or expression of one or more parameters.

    If substitute == True, recursive substitution of all circuit parameters will be applied.

    If numeric == True, numeric values of functions wand constants will be evaluated and converted to sympy.Floats

    Parameters:

      - parNames (str, sympy.Symbol, list) – name(s) of the parameter(s)

      - substitute (Bool) –

        - True: circuit parameters will be recursively substituted

        - False: Parameter values or expressions will be returned as defined

        Defaults to True

      - numeric (Bool) –

        - True: Numeric values of functions and constants will be evaluated and rational numbers will be converted to sympy.Float

        - False: No numeric evaluation of functions and constants

        Defaults to False

    Returns:

      - If type(parNames) == list: a dict with key-value pairs:

        - key (sympy.Symbol): name of the parameter

        - value (sympy.Float, sympy.Expr): value of the parameter

      - Else: value or expression (sympy.Float or sympy.Expr).

    Return type:

      dict, sympy.Float, sympy.Expr

  indepVars

    (list) with reference designators (str) of independent variables:

    - independent voltage sources

    - independent current sources.

  lgRef

    Loopgain reference: None if not defined ,or a list with two identifies controlled sources or one idenfifier and ‘None’.

  libs

    (list) with names (str) of library files found in netlist lines starting with ‘,lib’ or ‘.inc’.

  modelDefs

    (dict) with key-value pairs:

    - key: Name (sympy.core.symbol.Symbol) of a model.

    - value: Associated model object (SLiCAPprotos.model).

  netlist

    Netlist (str) that will be created with the self.createNetlist() methos.

  nodes

    (list) with names (str) of circuit nodes.

  parDefs

    (dict) with key-value pairs:

    - key: Name (sympy.core.symbol.Symbol) of a circuit parameter.

    - value: Value (sympy object, float, int) of the parameter.

  parUnits

    (dict) with key-value pairs:

    - key: Name (sympy.core.symbol.Symbol) of a circuit parameter.

    - value: Units (str) of the parameter.

  params

    - If SLiCAPcircuit.subCKT == True:

      (dict) with key-value pairs:

      - key: Name (sympy.core.symbol.Symbol) of a parameter that can be passed to the sub circuit.

      - value: Default value (sympy object, float, int) of the parameter.

    - Else:

      - (list) with names (sympy.core.symbol.Symbol) of undefined parameters.

  references

    (list) with reference designators (str) of referenced elements.

  source

    Signal source: None if not defined, or a list with two identifies of independent sources or one idenfifier and ‘None’.

  subCKT

    (bool) True if the circuit is a sub circuit. Defaults to False.

  title

    Title (str) of the circuit. Defautls to None.

  updateParams()

    Updates self.params (list with undefined parameters) after modification of parameter definitions in self.parDefs.

class element

  Prototype circuit element object.

  model

    Name (str) of the model of the element.

  nodes

    (list) with names (str) of the nodes to which the element is connected.

  params

    (dict) with key-value pairs:

    - key (sympy.core.symbol.Symbol): Name of an element parameter.

    - value (sympy object, float, int): Value of the parameter.

  refDes

    Element reference designator (str), defaults to ‘’.

  refs

    (list) with reference designators of elements (str) that are referenced to by the element.

  type

    Element type: First letter of refdes (str).

class modelDef

  Protpotype for model definitions that can be added to SLiCAP.

  name

    Name (str) of the model.

  params

    (dict) with key-value pairs:

    - key (str): Model parameter name

    - value (sympy object, float, int): Value or expression

  type

    Name (str) of the built-in model type that should be used for this model.