Summer of Code - Getting Started: Difference between revisions

mNo edit summary
Line 335: Line 335:
=== Interface to Electronic Circuit Simulator ===
=== Interface to Electronic Circuit Simulator ===


[http://sourceforge.net/projects/qucs/ Qucs] is a C++ based circuit simulation package. This project aims to create an interface to the Qucs algorithms to allow the transient, i.e. time series, simulation of circuits in Octave within a larger ODE system simulation, and possibly make other analysis types available directly from Octave. The C++ interface would be based on handle class syntax currently in development in the <code>classdef</code> branch of the repository. This method has already been successfully tested on other projects, and examples of this type of interface are available (e.g. [https://sourced.ecdf.ed.ac.uk/projects/see/xfemm here] and [https://www.mathworks.com/matlabcentral/fileexchange/38964-example-matlab-class-wrapper-for-a-c++-class here]).
[http://sourceforge.net/projects/qucs/ Qucs] is a C++ based circuit simulation package. This project aims to improve the interface to the Qucs algorithms to allow the transient, i.e. time series, simulation of circuits in Octave within a larger ODE system simulation driven by Octave. Other possible goals would be to make other analysis types available directly from Octave. There is an existing C++ interface which is based on handle class syntax available in the development version of Octave. The Qucs interface is intended to have two modes, synchronous and asynchronous. The asynchronous mode uses qucs to solve a circuit between two given time steps (internally taking as many smaller time steps as required), returning only the final result. This method is well developed. The alternative synchronous mode is intended to give full control of the time steps to Octave, and it is this mode which requires more work. A simple synchronous interface exists which can be built upon.


'''Required skills''': C++ and m-file scripting. Familiarity with new classdef syntax would be useful. May require some modification/adaptation of the Qucs sources. Familiarity with the Octave ODE solvers useful but not essential.
'''Required skills''': C++ and m-file scripting. Familiarity with new classdef syntax would be useful. May require some modification/adaptation of the Qucs sources. Familiarity with the Octave ODE solvers useful but not essential. Ability to compile Octave from the development sources.


'''Difficulty''': medium.
'''Difficulty''': medium.
Line 344: Line 344:


'''Main Goals'''
'''Main Goals'''
* Create an Octave circuit class which can load and parse a Qucs circuit netlist
* Improve the functionality of the transient solver interface by implementing a robust synchronous simulation mode that integrates well with Octave ode solvers, particularly those from the odepkg package from OctaveForge.
* Create class methods with functionality similar to the <code>trsolver</code> C++ class methods in Qucs, i.e with the ability to call the DC solution code, and transient solution code at each time step.
* Create interface to other analysis types (AC, DC, S-Parameter and Harmonic Balance)
* Create a method of accessing the current circuit solution values in Octave at each time step.
* Packaging the interface for Octave
'''Bonus Goals'''
* Create new circuit elements which allow Octave to apply voltages and currents during a circuit simulation.


=== Color management functions in image package ===
=== Color management functions in image package ===
39

edits