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.

BSC / Climate Computing · MIT

Curated workflows, data preprocessing pipelines, and infrastructure patterns for climate computing at BSC. Implements schema-validated tasks (JSON Schema) and deterministic CI verification.

Deterministic CI Python Bash Schemas AI Adoption
EC-Earth Consortium · Apache-2.0

Core technical contributions to the European Earth System Model. Focus on OpenIFS integration, OASIS3-MCT coupling, and CMIP7 preparation.

Fortran C++ HPC OASIS3-MCT
BSC Earth Sciences · Apache-2.0

Modular framework for preprocessing and interpolating climate datasets (EN4, ERA5, ORAS5) for climate predictions.

Python CDO Data Engineering Predictions
MareNostrum 5 Tooling · MIT

A tool for managing EC-Earth4 experiment configuration files with a modular YAML overlay system on MareNostrum 5.

Python YAML Slurm EC-Earth
Geophysical Fluid Dynamics · MIT

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.

Fortran Numerical Modeling Fluid Dynamics Tides
Geophysical Fluid Dynamics · MIT

Coupled finite difference solver for global barotropic and internal baroclinic ocean tides. Implements Sturm-Liouville vertical eigenvalue modal decomposition under continuous ocean stratification.

Fortran Internal Tides Geophysical Flows Eigenvalue Solvers
NEMO / EC-Earth4 · Apache-2.0

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.

Python Biogeochemistry NetCDF 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_ece4 vs. 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.

Active Development

Climate Commons: A living documentation system for BSC climate workflows

vlap.github.io PostScript

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.