GSoC/GCI Archive
Google Summer of Code 2012


Web Page:

Mailing List:

ASCEND is a free open-source software program for solving small to very large mathematical models. ASCEND can solve systems of non-linear equations, linear and nonlinear optimisation problems, and dynamic systems expressed in the form of differential/algebraic equations.

There is an ASCEND Overview with more information about ASCEND capabilities. Alternatively, you can look at some screenshots or some example problems solved using ASCEND.


  • Canvas Based Modelling and Gui Improvements. The basic aim of this project will be to improve the current PyGtk Gui by implementing new features, adding custom icons for blocks in canvas based modeller and solving bugs in the current codebase.
  • Dynamic modelling improvements The goal of the project is to add new syntax for derivatives which will improve the capabilities of ASCEND in dynamic modelling and increase usability. Corresponding changes to the solver API would need to be made. This work should be done in such a way so that in future adding the support for processing partial and higher order derivatives would be possible and would build on the changes made within the bounds of this project.
  • FPROPS and ASCEND: Exceeding Expectations This proposal outlines my goals for the FPROPS package for GSOC 2012. I hope to add new functionality, as well as finish implementation of the EOS in the pipeline. I will place a strong emphasis on testing and evaluation of the code to produce a robust, trustworthy product. My educational pursuits and endeavors are discussed as well as goals and the time line for deliverables.
  • GUI Improvements and Bug Squashing The project is about improving/developing the current implementation of ASCEND's GUI, which is in PyGTK, by referring to the older, more stable Tcl/Tk implementation. There is also some amount of bug fixing that needs to be done to the PyGTK implementation.
  • Packaging for Mac Porting to Mac OS ASCEND. Portability Give this to the project and improve service levels to users at all platforms.
  • Python bindings rewrite Now ASCEND is mainly use the PYGTK to present the GUI. But the base of ASCEND is built upon C/C++ which provide efficiencies. While it is hard to code python modules from scratch, ASCEND chose SWIG to bridge C/C++ and Python which is used by PYGTK. In ASCEND, we use SWIG to build a core PYTHON extension module called “ascpy” which is the adapter between the core calculation engine ( and PYGTK-based user interface. This core adapter is mainly described by a SWIG interface file which currently contains lots of C++ style wrappers which make this SWIG interface file too long and not so easy for understanding. So the target is to makes these SWIG interface files “leaner and meaner”. This target can be achieved by clearing the C++ style wrappers in SWIG interface files and replacinge them with C wrappers contained by several SWIG interface files. The other possible way is to use CYTHON rewriting the interface between C/C++ and PYTHON. Anyway, no matter which method we choose, we should move on to make the GUI layer still works well because we actually changed the core adapter for PYTHON to use the core calculation engine.