Petr Karnakov

Research scientist developing software and numerical algorithms for simulation, control, and design of complex physical systems. Interests ranging from classical numerical methods to data-driven techniques and machine learning, with a focus on software engineering and high-performance computing. List of publications.

Currently working at Harvard University in Cambridge, MA, United States.

Skills

Skills grouped by activities

Programming
C++, Python, JavaScript, OpenGL, Fortran, x86 assembly

High Performance Computing
MPI, OpenMP, OpenCL, CUDA, HDF5, vectorization

Mathematics
Numerical methods, linear algebra, optimization

Machine Learning
TensorFlow, JAX, reinforcement learning, stochastic methods, Bayesian inference

Visualization & Simulation
Matplotlib, ParaView, Ansys Fluent, COMSOL

Development Tools
Git, Unix shell, CMake, Docker, CI/CD

Presentation & Publishing
LaTeX, HTML, Keynote, reveal.js

Research Projects

ODIL

ODIL (Optimizing a DIscrete Loss) is a method and Python framework for solving inverse problems for partial differential equations, which is orders of magnitude faster than PINN (physics-informed neural networks). Article about the method.

Inverse design: body from flow
Demo: Poisson
Demo: Wave
Demo: Heat

Aphros

Distributed multiphysics solver in C++ with MPI for simulating multiphase flow with bubbles and electrochemical reactors. The solver performed the largest simulations of foaming by breakup and mixing of air in water. Article about foam simulations.

Bubble coalescence
Cheerios effect
Bubble splitting device
Foaming by mixing of air in water
Water electrolysis: multiphysics model
Demo: Drops
Demo: Electrolysis
Demo: Gallery

Other Projects

autodiff

Automatic differentiation framework in C++ with GPU support through OpenCL.

Reverse mode

AM205

Visual materials for a class on numerical methods that I lectured in 2022.

Removing day-night cycle from video using PCA | slide
Sound of the wave equation | slide

ptoy

Game with particles and portals in C++.

Web version

TinyOS

Prototype operating system in x86 assembly for a school competition in 2008.

Screencast