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.

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