SciML Symbolic-Numeric Computing Projects – Google Summer of Code

Automated Model Order Reduction

Model order reduction is a technique for automatically finding a small model which approximates the large model but is computationally much cheaper. We plan to use the infrastructure built by ModelingToolkit.jl to implement a litany of methods and find out the best way to accelerate differential equation solves.

Recommended Skills: A basic background in differential equations and the ability to use numerical ODE solver libraries. Background in the numerical analysis of differential equation solvers is not required.

Expected Results: Efficient and high-quality implementations of model order reduction methods.

Mentors: Chris Rackauckas and Oscar Smith

Expected Project Size: 350 hour.

Difficulty: Medium to Hard depending on the chosen subtasks.

Automated symbolic manipulations of differential equation systems

Numerically solving a differential equation can be difficult, and thus it can be helpful for users to simplify their model before handing it to the solver. Alas this takes time... so let's automate it! ModelingToolkit.jl is a project for automating the model transformation process. Various parts of the library are still open, such as:

Recommended Skills: A basic background in differential equations and the ability to use numerical ODE solver libraries. Background in the numerical analysis of differential equation solvers is not required.

Expected Results: Efficient and high-quality implementations of model transformation methods.

Mentors: Chris Rackauckas and Yingbo Ma

Expected Project Size: 350 hour.

Difficulty: Medium to Hard depending on the chosen subtasks.

Acausal Modeling Compiler Optimizations for ModelingToolkit.jl

ModelingToolkit.jl is an acausal modeling compiler that transforms high-level component-based physical models into efficient numerical code. This project focuses on implementing new compiler passes and optimizations that improve the robustness, performance, and capabilities of the compilation pipeline. Possible subtasks include:

These optimizations are motivated by the needs of industrial-scale acausal models (e.g., hydraulic systems, HVAC, battery models) as taught in MIT's 18.S191 ModelingToolkit course.

Recommended Skills: Background in compiler design or symbolic computation, familiarity with differential-algebraic equations, and the ability (or eagerness to learn) to write Julia code. Experience with ModelingToolkit.jl or Modelica is helpful but not required.

Expected Results: Production-quality implementations of two or more compiler optimizations as pull requests to ModelingToolkit.jl, with tests demonstrating correct behavior on representative acausal models.

Mentors: Chris Rackauckas and Aayush Sabharwal

Expected Project Size: 350 hour.

Difficulty: Medium to Hard depending on the chosen subtasks.

Symbolic Transformations for Analysis and Uncertainty Quantification

ModelingToolkit.jl's symbolic representation of differential equation systems opens the door to powerful automated transformations that go beyond basic model simplification. This project focuses on implementing transformations that enable new analysis capabilities:

Recommended Skills: Background in differential equations and numerical analysis. Some familiarity with sensitivity analysis, uncertainty quantification, or transform methods is helpful. Ability to write Julia code.

Expected Results: Production-quality implementations of one or more symbolic transformations in ModelingToolkit.jl, with documentation and tests on standard models.

Mentors: Chris Rackauckas and Aayush Sabharwal

Expected Project Size: 350 hour.

Difficulty: Medium to Hard depending on the chosen subtasks.

Symbolic Code Generation and Domain-Specific Transformations

The symbolic representations built by Symbolics.jl and ModelingToolkit.jl can be compiled into efficient code targeting different backends and application domains. This project covers extending the code generation capabilities and adding domain-specific symbolic transformations:

Recommended Skills: Background in symbolic computation or code generation. Domain knowledge in one of the application areas (control systems, optimization, multibody dynamics) is helpful but not required. Ability to write Julia code.

Expected Results: Production-quality implementations of one or more code generation or transformation features, with tests and documentation.

Mentors: Chris Rackauckas and Aayush Sabharwal

Expected Project Size: 350 hour.

Difficulty: Medium to Hard depending on the chosen subtasks.

Symbolic Analysis and Transformations of Chemical Reaction Networks

Catalyst.jl provides the ability to create symbolic models of chemical reaction networks, generate symbolic differential equation and stochastic process models from them. There are a variety of ways Catalyst.jl's core capabilities could be expanded, including adding

Recommended Skills: Very strong understanding of ODE models for chemical systems and Julia open-source programming particularly Symbolics.jl and ModelingToolkit.jl. Abstract algebra and graph theory for the network analysis components. Stochastic chemical kinetics and Gillespie method experience for the τ-leaping projects.

Expected Results: Extend Catalyst with one or more of the preceding features, with corresponding ModelingToolkit updates, enabling users to build, analyze, and simulate Catalyst-derived models incorporating the new components.

Mentors: Samuel Isaacson and Chris Rackauckas.

Expected Project Size: 350 hour.

Difficulty: Hard, generally requires significant mathematical and/or theoretical chemistry background beyond beginning undergraduate classes and/or a deep understanding of ModelingToolkitBase. Only recommended for advanced undergraduates and/or graduate students. Not a project that AIs can handle without substantial, informed supervision and planning.