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.
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:
Support for DAEs, DDEs, and SDEs
Pantelides algorithm for DAE index reduction
Lamperti transforms
Automatic construction of adjoint solutions
Tearing in nonlinear solvers
Solving distributed delay equations
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.
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:
Pryce's algorithm for DAE index reduction: Implement Pryce's structural analysis as an alternative to the Pantelides algorithm, providing a different approach to determining the index of DAE systems and performing index reduction. See also this analysis for a comparison of the two approaches.
Inline integration: Implement inline integration, a technique from the Modelica community where certain fast subsystems are integrated analytically during the compilation phase, allowing larger time steps in the numerical solver without loss of accuracy.
Automated detection of events from discontinuities: Automatically detect discontinuities (e.g., if statements, abs, min, max) in ODE/DAE definitions and generate appropriate event (callback) functions, improving solver robustness for models with switching behavior.
Specialized nonlinear solvers based on strongly connected components: After tearing, the remaining nonlinear systems can be decomposed into strongly connected components (SCCs). Implement specialized solution strategies that solve each SCC independently, reducing the size of the nonlinear systems and improving convergence.
Common subexpression elimination in symbolic code generation: Improve the generated code by detecting and eliminating common subexpressions across the system equations, reducing redundant computation in the generated ODE/DAE right-hand side functions.
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.
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:
Symbolic generation of sensitivity analysis equations: Automatically derive the forward sensitivity equations directly from the symbolic IR, avoiding the overhead of numerical differentiation. This produces exact sensitivity systems that can be compiled alongside the original model. See ModelingToolkit.jl issue #39.
Polynomial chaos expansions for fast uncertainty quantification: Implement symbolic generation of polynomial chaos expansion systems from a stochastic ODE/DAE model, transforming uncertain parameters into a deterministic system of equations for the expansion coefficients, enabling fast uncertainty propagation without Monte Carlo sampling.
Automated Laplace and Fourier transforms: Implement symbolic Laplace and Fourier transforms operating on ModelingToolkit systems, enabling transfer function analysis, frequency-domain modeling, and automatic conversion between time-domain and frequency-domain representations of linear and linearized systems.
Automated function transformation of observables: Implement automated variable transformations (e.g., log-transform states to enforce positivity, logit-transform for bounded variables) at the symbolic level, automatically deriving the transformed equations via the chain rule and maintaining correct observable mappings. See also the Lamperti transformation for SDEs.
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.
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:
Extendable C code generation from Symbolics.jl: Extend the Symbolics.jl code generation infrastructure with a plugin-based C code generation system, allowing users to register custom C implementations for domain-specific symbolic operations and generating standalone C code for deployment on embedded systems or integration with C/C++ simulation environments.
Disciplined convex programming (DCP) for OptimizationSystem: Implement DCP analysis on ModelingToolkit's OptimizationSystem, automatically verifying convexity of optimization problems and transforming them into standard convex form for efficient solution by convex solvers like ECOS, SCS, or Clarabel.jl.
Direct-quadrature-zero (DQZ) transformation for multibody systems: Implement the DQZ transformation as a symbolic pass in ModelingToolkit, automatically transforming three-phase electrical or mechanical systems into decoupled direct, quadrature, and zero components for more efficient simulation of multibody systems and robotics.
Automated conversion of distributed delay equations into ODEs: Implement the linear chain trick and related methods to symbolically convert distributed delay differential equations into equivalent expanded ODE systems that can be solved with standard ODE solvers. See ModelingToolkit.jl issue #45.
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.
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
[ADVANCED LEVEL] completing / polishing tooling for chemical reaction network analysis in CatalystNetworkAnalysis.jl, and expanding the network analysis capabilities.
[ADVANCED LEVEL] support for elimination of aliased species between different Catalyst model components to enable more modular composition of Catalyst-based models.
[ADVANCED LEVEL] spatial model representations in Catalyst combined with code generation for PDE libraries (such as Ferrite).
[MODERATE LEVEL] new ModelingToolkit-based systems to represent τ-leaping and/or abstract master equation representations, along with translation layers to generate such systems from Catalyst reaction network models.
[ADVANCED/MODERATE LEVEL] support for delays in ODE/SDE models and their propagation through ModelingToolkitBase to generate concrete models.
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.