To main content

Jutul

Experimental Julia framework for fully differentiable multiphysics simulators based on implicit finite-volume methods with automatic differentiation.

Contact person

Jutul

Julia is a high-performance programming language specifically designed for numerical and scientific computing, offering a unique blend of speed and ease of use. With a syntax that is both concise and expressive, Julia empowers researchers, engineers, and data scientists to efficiently tackle complex computational tasks and accelerate innovation in various domains.

Jutul was originally designed as a highly optimized computational test bench for differential programming to be used in  complement to MRST to enable high-performance testing of numerical algorithms for flow in porous media.  Combining a highly optimized automatic differentiation library, which uses static, hard-coded stencils to ensure fast assembly of linearized systems, with state-of-the-art linear solvers ensures that simulators written with Jutul have performance that compares very well with established simulators written in compiled languages. In addition, Jutul guarantees that simulators are differentiable and can deliver parameter sensitivities with high computational efficiency.

The primary Jutul.jl package serves as a common infrastructure for several simulation projects:

  • JutulDarcy.jl is a high performance Darcy-flow simulator and the main demonstrator application for the software. The simulator is capable of simulating advanced models of immiscible, black-oil, and equation-of-state compositional flow, partially based on the MRST framework for input processing.
  • BattMo.jl is a battery simulator that implements a subset of the MATLAB-based BattMo toolbox in Julia for improved performance.
  • Jutul.jl also powers a simulator that implements vacuum swing adsorption and direct air capture (DAC) processes for the capture of CO2. This application is currently not public.

Jutul is publicly available under the permissive MIT License on GitHub.