Metadata-Version: 2.1
Name: SymCircuit
Version: 0.1.0
Summary: Symbolic electronic circuit analysis
Home-page: https://github.com/martok/py-symcircuit
Author: Martok
Author-email: martok@martoks-place.de
License: MIT
Project-URL: Bug Tracker, https://github.com/martok/py-symcircuit/issues
Description: # SymCircuit
        
        Provides classes to do electronic circuit analysys using symbolic equations. For example,
        it is possible to automatically find equations using Kirchhoff's laws and solve them for specific
        properties.
        
        As a bonus, the equation solving part can be used independently of the rest.
        
        ## Installation
        
        Minimal install using pip (just the equation solver):
        
        ```pip install SymCircuit```
        
        Full install using pip:
        
        ```pip install SymCircuit[EE]```
        
        
        ## Usage
        
        For more detailed examples, see the files in directory `examples/`.
        
        Example of using a netlist for a random arrangement of elements:
        
        ```python
        from io import StringIO
        
        import plotkit.plotkit as pk
        
        from symcircuit.bode import plot_system
        from symcircuit.spice import Circuit
        from symcircuit.system import SymbolicSystem
        
        circ = Circuit()
        circ.parse_spice_netlist(StringIO(r"""
        * examples\network1.asc
        R1 N001 0 1k
        R2 N002 0 3k
        C1 N002 0 50Âµ
        L1 N001 N002 120Âµ
        V1 N001 0 AC 1
        .ac dec 30 10 10000
        .backanno
        .end
        """))
        
        # translate to equation system
        s = SymbolicSystem(circ.to_system_description())
        
        # Add "measurement" characteristics
        s.extend(SymbolicSystem("""
        Zsys == V1 / i_V1
        """))
        print(s.info())
        
        # find transfer function
        impedance = s.focus("Zsys")["Zsys"]
        print("System Impedance = ", impedance)
        # System Impedance =  -R1*(C1*L1*R2*s**2 + L1*s + R2)/(C1*L1*R2*s**2 + L1*s + R1*(C1*R2*s + 1) + R2)
        
        # plot parameterised transfer function
        v = dict(
            R1=1e3,
            R2=3e3,
            C1=50e-6,
            L1=120e-6,
        )
        fig = plot_system(impedance, 10, 50000, values=v, amplitude_linear=True, return_fig=True)
        pk.finalize(fig)
        ```
        Result:
        ![Example Output](https://raw.githubusercontent.com/martok/py-symcircuit/main/doc/impedance_plot.png)
        
        ## Credits:
        
        * [NetworkX](https://networkx.org/) is used for graph analysis
        * The `focus` and `seek` methods are based on the implementation proposed by Christopher Smith @smichr in [a sympy issue](https://github.com/sympy/sympy/issues/2720#issuecomment-312437508).
        
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Framework :: Matplotlib
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Developers
Classifier: Topic :: Scientific/Engineering :: Visualization
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Provides-Extra: EE
