Software

Open-source tools built for computational work that needs to scale

My software work is shaped by a simple requirement: the methods need to survive contact with real models, real data volumes, and real users. That means balancing algorithmic ambition with interface design, testing, and performance engineering.

GridapROMs.jl screenshot

Author

GridapROMs.jl

A Julia package for efficient reduced-order modeling of parameterized PDEs, designed for flexible use across steady, transient, linear, nonlinear, single-field, and multi-field systems.

  • Includes POD, Tucker, tensor-train, interpolation, and localized subspace strategies.
  • Supports distributed-memory snapshot generation for expensive offline stages.
  • Designed around a high-level API that stays readable and extensible.
MeteoModels.jl screenshot

Author

MeteoModels.jl

A Julia package for data assimilation and uncertainty quantification in dynamical systems, with particular emphasis on weather and geophysical workflows.

  • Supports KF, EKF, UKF, EnKF, and DEnKF workflows.
  • Targets interpretable, modular forecasting pipelines rather than opaque wrappers.
  • Future work extends toward reduced-basis and large-scale assimilation strategies.

How I design software

  • Interfaces should expose mathematical structure clearly enough that users can reason about them.
  • Performance work should be measurable, so profiling and benchmarking are part of normal development.
  • Reproducibility matters: environment management, tested examples, and documented workflows reduce friction for collaborators.
  • Packages should be useful both to researchers prototyping methods and to engineers integrating them into bigger pipelines.

Why software matters

For computational methods, software quality is not presentation. It is part of the method itself, because it determines whether the idea can be trusted, reused, and scaled