Student Projects
From ASCEND
Here are some possible projects for students wanting to participate in the ASCEND project. These could be suitable for final-year theses in Engineering studies, research projects, etc.
Contents |
[edit] Non-proprietary Optimisation
ASCEND is a free/open source software package licensed under the GPL. We have a number of Solvers in our software, including a wrapper for the excellent optimisation solver CONOPT. Unfortunately, however, this solver is expensive commercial software and can not be distributed freely as part of ASCEND. The lack of a good (free) optimisation solver limits the utility of ASCEND for many users.
This project would involve linking the IPOPT solver (or possibly some other suitable alternative, if any exists) to ASCEND, allowing us to run complex optimisation problems in ASCEND. Some work would be required to give ASCEND the ability to evaluate Hessian matrices (second derivatives of object functions), then tying it all together so that ASCEND can pass values and parameters etc through to the IPOPT solver.
Further work on this project could include development of a benchmarking suite using various standard sets of optimisation problems such as CUTEr.
[edit] Improved ODE/DAE support
ASCEND currently has a system for allowing users to model dynamic systems. You can specify variables that are the derivatives of other variables, and then use a special Integrator to solve for time-varying behaviour of your model. We support a number of Integrators, including IDA, LSODE and DOPRI5.
Unfortunately, however, the ASCEND syntax for dynamic models is very clumsy, and this makes it hard to write compact, readable models for such systems.
This project would involve implementing proposed LINK semantics for ASCEND (in itself a value enhancement to the ASCEND language), then, upon that, building a new ODE/DAE syntax so that dynamic models could be succinctly expressed with the ASCEND modelling language. This would require you to become familiar with the Flex and Bison tools, which are used to implement the ASCEND language parser, so that you could then extend out language grammar with the necessary additional language constructs.
Further work on this project could include enhancing the reporting from External Integrators including perhaps a live graphical plot of progress or improvements to the Data reader to allow arbitrary input data to be fed into a simulation.
[edit] Parallelising ASCEND computations
There is the potential for large speedups in ASCEND by implementing parallel evaluation of equation residuals. For systems with a large number of equations in a single block, this could give very large improvements. This project would involve writing a new Solver based on QRSlv that incorporated message passing using OpenMP or similar.
[edit] Improvements to the Conditional Modelling syntax
ASCEND provides support for Conditional modelling in the form of language constructs and a solver called CMSlv. Unfortunately the syntax available for conditional modelling is unintuitive. It could be improved by a student willing to delve into the dark corners of the ASCEND compiler and willing to learn about the Flex and Bison parser/compiler tools. Further work on this project could include a rigorous test-suite to demonstrate that all aspects of the conditional model parser and corresponding solver are working OK. Additional further might include enhancements to the graphical interface to make it more obvious to the user when parts of the model are switched on and off as a result of changes in IF or WHEN statements, or alternatively completion of the conditional modelling support for the dynamic modelling solver IDA.
[edit] Reaction kinetics data support
Currently, reaction rate models in ASCEND are done on an ad hoc basis. Assorted tools, notably CHEMKIN, define and support a widely used text input format for describing chemical reaction rate equations. This project would include:
- creating or adapting an open-source parser of the CHEMKIN data format to generate a data representation suitable for machine transformations.
- defining a transformation instance that maps the equations into ASCEND equation code.
- defining a transformation instance that maps the equations into python, C or C++ code for performance comparisons.
- demonstrating the use of the tool on test problems related to renewable energy systems: H2-air or methane-water.
[edit] Thermophysical properties database
ASCEND includes a set of native ASCEND models that provide support for thermodynamic property correlations of a number of types. The current system is fully open and extensible, but its use of native ASCEND syntax makes it difficult to maintain, and difficult to browse the list of available chemical species. It also makes it difficult for users to work out how to add support for new substances. This project would involve migrating the chemical property data to a separate data file (perhaps via an SQLite and then implementing a suitable interface between ASCEND and that database so that chemical property formulations could be loaded from the database by a suitable statement in the ASCEND model file. A range of tests would need to be developed to prove that the property formulations worked as expected. It might be possible to investigate other freely-available sources of chemical property data, and import that data if suitable. In performing this work, it would be desirable to consider the edicts of the CAPE-OPEN project, which specifies a possible API for accessing chemical property data in a platform-agnostic way.
[edit] Porting to Mac
We have made some initial investigations about the possibility of running ASCEND on Mac. The core ASCEND 'engine' runs with pure C so there shouldn't be any problem with that side of it. But the main current ASCEND GUI runs with PyGTK, and we're not sure how acceptable that would be to Mac users. This project would involve modifying ASCEND so that the current GUI would work on Mac *in addition to* the platforms it currently supports. This project seems as thought it may be a bit small so perhaps it could be enlarged to include some other GUI enhancements, such as printing support.
[edit] Your Own Ideas
There are many other areas of possible work on ASCEND, including those from our long list of current and future Development Activities. Feel free to discuss other possible ideas with us, see Support for contact details.

