Code#
I am passionate about writing robust yet intuitive, user-friendly and extensible code to solve scientific and mathematical problems. My public repositories are hosted on my GitHub page, as well as being mirrored to my Codeberg page. I am guided by the principles that research codes should be open-source, reproducible and freely-available available to the scientific community [1] [2] [3].
LUCiFEx 😈#
Linearized Underground Convection in FEniCSx . The goal of LUCiFEx was to bring greater flexibility to solving time-dependent problems with the open-source finite element solver FEniCS. In particular, I wanted finite differences in time to not be hard-coded but abstracted out by the implementation of finite difference operators acting on time-dependent quantities. Another design goal was to permit as far as possible abstraction over the partial differential equations’ domain, initial conditions, boundary conditions and constitutive relations in order to have extensible, modular and reusable code.
CRoCoDiL 🐊#
Convection-Reaction of Carbon Diodixe in LUCiFEx . This package implements the direct numerical simulations and simplified analytical models investigated in my PhD thesis.
CaRBoNN 🪨#
Convection and Reaction in a Box or Neural Network . A high-performance backend, implemented in both Fortran and JAX, complemented by a user-friendly Python API for simulating high Rayleigh number porous convection in a 2D rectangle or 3D box. Currently under early development so not yet publicly shared.