I develop, optimize, and maintain scientific software spanning Earth System Models (EC-Earth4, OpenIFS, NEMO/PISCES), HPC orchestration on MareNostrum 5, and reproducible computational workflows. My work focuses on numerical precision, declarative metadata schemas, and deterministic CI verification for climate science.
Curated workflows, data preprocessing pipelines, and infrastructure patterns for climate computing at BSC. Implements schema-validated tasks (JSON Schema) and deterministic CI verification.
Core technical contributions to the European Earth System Model. Focus on OpenIFS integration, OASIS3-MCT coupling, and CMIP7 preparation.
Modular framework for preprocessing and interpolating climate datasets (EN4, ERA5, ORAS5) for climate predictions.
A tool for managing EC-Earth4 experiment configuration files with a modular YAML overlay system on MareNostrum 5.
Global finite difference solver for barotropic ocean tides on a rotating sphere. Discretizes 2D shallow water equations with astronomical tidal forcing and bottom friction on a spherical staggered grid.
Coupled finite difference solver for global barotropic and internal baroclinic ocean tides. Implements Sturm-Liouville vertical eigenvalue modal decomposition under continuous ocean stratification.
Declarative initial conditions generator and remapping engine for the PISCES biogeochemical model in NEMO and EC-Earth4. Decouples raw observational packages from model targets via catalog schemas.
Computational Methods & Mathematical Solvers
Global Barotropic & Internal Tide Solvers (baro_tides_fd & internal_tides_fd)
In geophysical fluid dynamics, tidal energy dissipation plays a governing role in deep ocean mixing and thermohaline circulation. Our Fortran solvers discretize the governing shallow-water wave equations and stratified internal wave dynamics on global spherical grids:
Barotropic Global Tides: Solves the 2D depth-integrated shallow-water equations with astronomical equilibrium tide forcing $\bar{\eta}$ and bottom friction: $$\frac{\partial \mathbf{u}}{\partial t} + f \mathbf{k} \times \mathbf{u} = -g \nabla (\eta - \bar{\eta}) - \frac{r}{h}\mathbf{u}$$ $$\frac{\partial \eta}{\partial t} + \nabla \cdot (h \mathbf{u}) = 0$$ where $\eta$ is sea-surface elevation, $h$ is bathymetric depth, $f = 2\Omega \sin\theta$ is the Coriolis parameter, and $\bar{\eta}$ represents tidal generating potential.
Internal Baroclinic Wave Modal Decomposition: Resolves the vertical structure of internal waves generated as barotropic tides flow across steep underwater topography. Vertical normal modes $\Phi_n(z)$ satisfy the Sturm-Liouville eigenvalue problem under continuous Brunt-Väisälä buoyancy frequency $N^2(z) = -\frac{g}{\rho_0}\frac{d\rho_0}{dz}$: $$\frac{d}{dz}\left( \frac{1}{N^2(z)} \frac{d\Phi_n}{dz} \right) + \frac{1}{c_n^2} \Phi_n = 0, \quad \left.\frac{d\Phi_n}{dz}\right|{z=0} = \left.\frac{d\Phi_n}{dz}\right|{z=-H} = 0$$ yielding modal phase speeds $c_n$ and vertical shear profiles that dictate energy transfer to turbulent mixing.
Declarative Metadata Catalogs for Biogeochemical Models (pisces-inidata)
Traditional ocean and biogeochemical initialization pipelines rely on fragile, hard-coded shell scripts and NetCDF variable paths that break when upstream observational providers rename variables or when targeting different model releases.
In pisces-inidata, we decoupled the pipeline using a declarative metadata catalog schema:
- Source Catalog (
catalog.yaml): Declaratively specifies observational packages (GLODAP, WOA, benchmark outputs), file naming conventions, coordinate systems, and unit conversions. - Target Model Conventions: Dynamically maps fields to differing target model standards (e.g.,
nemo4_ece4vs.nemo5) using pure Python resolvers (pisces_inidata.catalog), eliminating hard-coded filenames and variable name overrides from bash execution scripts. - Deterministic Verification: Validates grid coordinates and spatial conservation invariants before writing final initial state NetCDF fields for EC-Earth4.
Numerical Simulations & HPC Highlights
A visual collection of high-resolution climate, sea-ice, and fluid dynamics simulations executed on Tier-0 supercomputing systems including MareNostrum 5.

High-Resolution Sea Ice Dynamics (ICON)
High-resolution Arctic sea-ice integration resolving fracturing, ridging, and drift velocities under atmospheric wind stress and oceanic drag.

Global Ocean Tide Simulation
Global propagation of barotropic surface tides and conversion into internal baroclinic wave modes over steep midocean ridges and continental slopes.

MareNostrum 5 Deployment: EC-Earth4
Coupled atmosphere-ocean production deployment on Tier-0 supercomputer MareNostrum 5, benchmarking simulated years per day (SYPD) across 112-core Sapphire Rapids nodes.
Active Development
Climate Commons: A living documentation system for BSC climate workflows
Vladimir Lapin, climate modeller
Global Biogeochemical Initial Conditions Generator for PISCES and EC-Earth4
A/B performance benchmark for ScriptEngine on HPC (Lustre)
For a full list of my code contributions, visit my GitHub profile.
