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 fully differentiable, high-performance simulator for single-phase, multiphase, and compositional flow in porous media. It solves mass-conservation equations with Darcy-type fluxes and includes closures for relative permeabilities, capillary pressure, and thermodynamic phase behavior.
- Fimbul.jl is a geothermal simulator that augments Darcy flow with an energy-conservation equation. Heat is transported by advection and conduction, with closures for effective heat capacity, thermal conductivity, and fluid enthalpy models.
- Mocca.jl is a simulator for adsorption and carbon-capture processes. It couples mass conservation in fluid phases with solid-phase adsorption models, using either algebraic equilibrium isotherms or kinetic rate laws to represent sorption and mass transfer.
- BattMo.jl is a simulator for batteries and electrochemical systems. It solves ionic-species conservation and charge conservation in porous electrodes using Nernst–Planck fluxes and Butler–Volmer electrode kinetics, and optionally includes thermal coupling to model heat generation and transport.
- VOCSim.jl is a simulator for emissions of methane and volatile organic compounds (VOCs). It models mass transfer between liquid and vapor phases during the storage and handling of hydrocarbons, relying on thermodynamic and transport closures to represent flashing, dissolution, and volatilization.
Jutul is publicly available under the permissive MIT License on GitHub.