Juliacon 2024

ProcessSimulator.jl: A Differentiable Chemical Process Simulator
07-10, 16:10–16:20 (Europe/Amsterdam), Else (1.3)

ProcessSimulator.jl provides a tool for chemical process modeling - a key workflow in chemical engineering. Built upon ModelingToolkit.jl that enables writing compact representations of physical phenomena occurring in the unit operations, it supports steady-state (with NonlinearSolve.jl) and dynamic simulation (with DifferentialEquations.jl). It interfaces with Clapeyron.jl and various automatic differentiation packages. ProcessSimulator will be made open-source through the SciML organization.


Process simulation involves connecting multiple unit operation models (such as reactors, separation units, heat exchangers, mixers and splitters etc.) that in sum are involved in the conversion of a feed chemical stream to a product stream. Current commercial tools tend to be siloed, operate as blackboxes and do not provide the functionality of a full-fledged programming language. In addition, supporting next generation workflows requires leveraging recent advances in symbolic-numeric programming and scientific machine learning. ProcessSimulator.jl provides the functionality of both dynamic and steady-state process simulation (process flowsheeting) by making use of the flexibility of
ModelingToolkit.jl (MTK) to allow seamless transition between these two modes. While this package is still under active development, the following unique features are highlighted:

  1. Robust process flowsheeting leveraging symbolic transformations and automatic differentiation (AD)
    - Process flowsheeting involves the construction and solution of a nonlinear equation system put together by combining descriptive equation models of each of the unit operations involved. Declarative symbolic modeling languages such as MTK allow library developers and users to write compact high-level representations and let the compiler do the work of simplifying and translating these to efficient numerical routines.
    - In addition, the generation of exact derivatives for instance by making use of existing AD packages (ForwardDiff.jl, ReverseDiff.jl, Zygote.jl, Enzyme.jl) is key to robust, fast and accurate process simulation.

  2. Interface with Clapeyron.jl - an open-source and extensible thermodynamic property package

  3. System-level Superstructure Optimization
    - The package provides an interface to the Julia Math Programming ecosystem (MathOptInterface.jl and JuMP.jl) to provide a large suite of tools for mixed-integer and nonlinear optimization.

  4. Interface with the SciML and DifferentialEquations.jl for dynamic simulation.

Software Engineer - Simulation, Control and Optimization at JuliaHub

This speaker also appears in:

Postdoctoral researcher at NTNU working with process systems engineering at the department of chemical engineering.