Skip to content
Bryan W. Weber edited this page Feb 22, 2020 · 5 revisions

Google Summer of Code 2020 Ideas List

Introduction

The page contains a list of ideas for students applying to Google Summer of Code 2020. Cantera is participating under the NumFOCUS umbrella, so students should apply to the NumFOCUS organization. The NumFOCUS organization has several tips for your application, see here. Please note that you MUST apply through the NumFOCUS page on the Summer of Code website.

Tips for Students

Project Ideas

The following ideas are not organized in any particular fashion at the moment and we think any of these ideas would make a good GSoC project. The particular project that you choose for your application will not affect our evaluation of your application; your application will be evaluated on its own strength, taking into account how well you address whichever project you choose.

Each idea below gives short description of the project, our best estimate at the difficulty, any required basic knowledge, and the project mentors you should contact regarding the project. We strongly encourage any interested students to reach out to the mentors by posting on our mailing list and/or emailing them directly by the email linked in their GitHub profiles.

Please feel free to propose your own project if you like. If you want to propose your own project, please follow the template from the ideas below and definitely post on the mailing list with your idea so that we can discuss and help refine it.


Re-implement the Matlab interface

Idea

We currently have a Matlab interface to the C++ core library, based on the mex extension interface, but it is difficult to maintain. We would like to look at ways of replacing this interface. Options under consideration include using the loadlibrary interface to more directly call Cantera's C wrapper functions, or by using Matlab to import/call the Python interface, or by using the direct C++ support in MATLAB (added in R2019a, https://www.mathworks.com/help/releases/R2019a/matlab/call-cpp-library-functions.html).

Difficulty

Hard

Required Knowledge

C/C++/Matlab or Matlab/Python, depending on which option is pursued

Mentors

Implement GPU solver for reactor simulations using SUNDIALS 3.1 interface

Idea

The matrices representing the systems of equations in Cantera are generally solved using SUNDIALS. Newer versions of SUNDIALS have a better interface to integrate with heterogeneous computing environments. This project will add GPU support to Cantera for reactor network integration.

Difficulty

Medium

Required Knowledge

C++, CUDA/OpenCL

Mentors

Implement GPU solver for 1D flame simulations

Idea

Solving 1D flame problems in Cantera requires the solution of linear systems with large, banded matrices. This problem is well-suited to GPUs, but current GPU libraries do not implement algorithms for this particular matrix structure. This project involves the implementation of standard algorithms for solving such systems on the GPU, and then using this algorithm within Cantera's 1D flame solver.

Difficulty

Hard

Required knowledge

C++, CUDA/OpenCL, Linear algebra/matrix computations

Mentors

Implement an interface to the CoolProp library

Idea

Cantera currently provides equations of state for a limited number of pure substances covering the liquid/vapor/supercritical regions. The goal of this project would be to introduce a new class to wrap the CoolProp library and provide access to its large range of equations of state within Cantera.

Difficulty

Medium

Required Knowledge

C++

Mentors

Implement wrapped versions of Cantera classes that support units

Idea

Nearly all calculations in Cantera are done in SI units (K, Pa, kg, kmol), and the units of quantities available to the user are also in SI units. Although this is the most useful general case, it would be helpful if users could input other units to Cantera functions and the conversion to SI is done internally before conducting calculations. This project would implement a wrapper around Cantera classes and/or functions to enable the use of alternative units transparently. See also: https://github.com/Cantera/enhancements/issues/3

Difficulty

Medium-Easy

Required Knowledge

Python

Mentors

Improve CI Infrastructure support for Cantera

Idea

Cantera uses Travis CI and Appveyor as our primary CI providers connected to our repositories on GitHub. However, we have identified several sore spots with these services, namely:

  • Appveyor is limited to one build running at a time
  • Travis CI experiences random failures due to build timeouts/errors for dependencies installed using Homebrew
  • In some ways, these services duplicate our existing CI infrastructure provided via our BuildBot instance

Aside from these issues, we have identified several additional capabilities that would improve our productivity:

  • Integrate build and running of our samples in the source repository as a regression test
  • Integrate running our Jupyter Notebook samples, maintained in a separate repository, as a regression test
  • More frequently run builds of our packaging infrastructure for conda, macOS, and Windows installer packages
  • Test the install scripts on platforms that our core contributors don't use as frequently (Linux distributions other than Ubuntu, primarily)

This project will investigate, suggest, and implement improvements such as those listed above in our CI infrastructure.

Difficulty

Easy

Required Knowledge

Experience with CI services preferred, although not required

Mentors