Development activities
This page outlines the range of tasks being tackled by the ASCEND team. Current tasks are near the top of the page, with older and dormant tasks further down the page.
Current focus of development effort
- Bugfixing and enhancement of PyGTK GUI (Mahesh Narayanamurthi)
- Integration of Conditional Models. We will implement this as part of the IDA integrator (John Pye)
- Dynamic modelling using LINK semantics (John Pye, Ben Allan)
- Continuing work on the canvas-based modeller for ASCEND (User:Arijit)
- Removing global variables (Ben Allan)
- Porting to Mac. (John Pye)
- Controlling the solvers from within METHODS (John Pye)
- FPROPS: accurate physical properties based on helmholtz equations (John Pye, Krishnan Chittur)
- Steam properties: support for IAPWS-IF97 in ASCEND. This is all working, but we continue to ponder possible improvements that might make use of conditional modelling features in ASCEND. (John Pye)
- Some discussions about possible next-generation ASCEND syntax (Ben Allan)
- Energy system modelling with ASCEND (John Pye)
- Developer's Manual - always ongoing! (everyone!)
- See also our Student Projects list.
GSOC 2009
We recently completed five exciting Google Summer of Code projects. Here is a list of our , and their assigned tasks. We're gradually merging these projects into our trunk.
- <a href="/LINK_semantics" title="LINK semantics" class="mw-redirect">LINK semantics</a> This is adding a LINK command to ASCEND, which will give us the ability to express links between elements in a model. The initial purpose for this would be as a way of defining derivative-of relationships, but it might be found to need further extension upon that.
- <a href="/NonproprietaryOptimization" title="NonproprietaryOptimization" class="mw-redirect">NonproprietaryOptimization</a> Add an optimization capability that does not require the use of proprietary software. We have identified the free open source solver IPOPT as a candidate package.
- fix current segfaults in asc_ipopt.c
- fix IPOPT to work with numerically-approximated second derivatives
- <a href="/Energy_system_modelling_with_ASCEND" title="Energy system modelling with ASCEND">Energy system modelling with ASCEND</a>
- Interfacing <a href="/Real-time_ASCEND" title="Real-time ASCEND">real-time data acquisition hardware</a> with ASCEND
- Ideas for a <a href="/Canvas-based_modeller_for_ASCEND" title="Canvas-based modeller for ASCEND">Canvas-based modeller for ASCEND</a>
Experimental features
Please try out the that are under development. Let us know what you find.
Longer-term and backburner projects
Core architecture and design
- Grey-box Models John Pye and Ben Allan have been talking about this. A way to write equations without all of the variables being added to the system Jacobian.
- SyntaxImprovement Of course this one is here. It is a fun part to thinking about ASCEND, but it takes a lot of very careful thought.
- ComponentizingAscend Convert ASCEND into components. For example make a component out of the compiler that can create input from the ASCEND input language into data files that solvers could use as input. Another would be to make a component out of the solver. Jon Shao is working on aspects of this task
- Conditional modelling This is a continuation of Vicente Rico-Ramirez' doctoral work that would allow ASCEND to dynamically change the model as the solving/optimizing proceeds.
- External libraries Ben Allan and John Pye are working on rejuvenating ASCEND's support for external functions, so that things like weather data and perhaps water/steam properties can accessed from a simulation.
- DOPRI5 Integrator. John Pye is adding support for this ODE solver.
- Parallelize solvers 8-core machines are now routine for engineering compute work. Take an ascend solver (or several) and parallelize (openmp or directives) the evaluation of jacobians and rhs calculations. This step should provide a big bang in performance terms. In conjunction with ascend's C-compiled equation code, it could produce something like a 100x speedup in rhs evaluation for large equation systems.
- Establishing the Coding style for ASCEND is something we want to do before the current GSOC starts.
Porting, building, testing
- TestSuite Set up a test suite that all developers can use when making modifications to ASCEND.
- Model Self-testing Add the capability for ASCEND models to report when they have been broken, by instrumenting them with a self_test method for use with automated tools.
- PythonGUIOnWindows You can run the new PyGTK GUI under Windows. We're working on expanding this GUI and making it easier to install
- BuildBot Nightly testing for regression, coverage, results from the model library,...
- CoverageTesting Analyse the ASCEND codebase and ensure that as much of the code as possible has been run and performed as expected.
- DebuggingAscend Yes, just plain debugging and bug reporting database.
- Tcl-config, a script for robust detection of Tcl/Tk on different platforms: Ubuntu, Fedora, Mandriva, Windows and hopefully Mac.
Interfacing with other systems
- Radiation View Factors - we can import view factor data from the View3D program.
- Can we implement a CAPE-OPEN interface for thermodynamic properties and/or flowsheet components?
- AgentBasedOptimization Very long term - have ASCEND create agents for John Siirola's agent-based system.
- OpenGL visualisation - we have some models that use OpenGL to visualise networks of 3D points
- We have thought about interfacing with Cairo as an animation engine for dynamic models...
Developing the user interface
- Graphical block debugging. John Pye proposes to provide output of relationships between variables and relations within a block in the PyGTK GUI using GraphViz to represent the directed acyclic incidence graph. Possibly it will be made cyclic by reversing the direction of arrows from relations to on-diagonal variables. This would be part of the current Diagnose tool
- DesktopIntegration. John Pye has contributed some files that help to integrate ASCEND into the GNOME/KDE desktop, including syntax highlight definitions for the 'gedit' editor in GNOME. See [1].
- PlottingInAscend. Getting the plot packages to plot on both linux and windows.
- PythonWrapper. John Pye has been working on SWIG wrappers for ASCEND which will allow ASCEND to be called from range of other scripting languages including Python, Ruby, C# and Java. There is also a new GUI underway implemented with PyGTK.
- Useful resources. A list of reference materials likely to be of use when building ASCEND models.
- Python console support. Adding a way for the user to run scripting commands on their models via the PyGTK GUI.
- Syntax highlighting for various tools.
- Spreadsheet interface (not started) This should be a fun project. The idea is to develop a spreadsheet style of interactive user interface for ASCEND. Programming is by knowing where things are rather than by knowing what one has named them - as when programming a spreadsheet model.
- Controlling the solvers from within METHODS, a new idea that John Pye is working on.
Specific applications
- ReferencedExamples. A number of the models in our ModelLibrary are implementations of models discussed in published papers and theses. This page will contain a list of such models.
- ModelLibrary. As well as being useful as part of the core TestSuite, the ASCEND Model Library serves to demonstrate the use of ASCEND for several important chemical engineering problems, and hopefully others too, as we expand on them.
General Information
- DocumentingAscend Conversion of the legacy in-source documentation to doxygen format, and appropriate upgrades & extensions thereto.
- CHM version of ASCEND manual needs to be created
- AscendCapabilities A list of the (hopefully growing) core features of the ASCEND modelling system
- HelpfulTools Here are a few helpful tools to use when working with ASCEND.
- OtherModellingTools Notes about related modelling tools that we've come across, how ASCEND is different, features that we've seen elsewhere that we'd like to emulate, things that we do better and worse. Emphasis on FOSS alternatives.
- ModellingTechniques A brief catalog of some of the mathematical techniques and algorithms commonly used in the field of modelling and simulation of non-linear systems.
- WebPages This one is essentially finished. Art Westerberg converted many of the pages to have a common formatting, updated the list of developers, and moved everything from the CS computer environment to the PSE computer, our new home for this project.
- UserModelDebugging Wiki page to aid users to debug a model - perhaps in form of FAQ page.