Penguin.jl: a Julia code for cut-cell finite-volume PDEs discretization with sharp interfaces
Penguin.jl : un code Julia pour la discrétisation d'EDPs par une méthode volume fini "cut-cell" à interface franche
Abstract
Penguin.jl is an experimental Julia code for constructing and testing conser- vative Cartesian cut-cell finite-volume discretizations for PDEs on embedded ge- ometries and sharp interfaces. It targets heat/mass transfer and incompressible- flow configurations where complex boundaries and material interfaces are rep- resented on non-conforming Cartesian grids, avoiding body-fitted meshing. At its core, Penguin.jl provides a cut-cell operator pipeline that assembles discrete divergence, gradient, and advection operators from a minimal geometric description: phase-restricted cell volumes, face apertures, and a small set of low- order geometric moments. This information is sufficient to generate compact stencils and to enforce Dirichlet/Neumann/Robin boundary conditions as well as sharp-interface jump relations directly in the algebraic system. The package includes solvers for scalar advection–diffusion, Darcy flow, and coupled Stokes/Navier–Stokes equations (time-advanced with an unsteady θ- scheme), with support for single- and two-phase setups. Beyond static embedded boundaries, Penguin.jl supports prescribed or free interface motion via height- function utilities and Lagrangian front tracking, enabling Stefan-type problems and moving solid/liquid configurations within the same cut-cell framework. Lin- ear systems are handled through the Julia ecosystem (e.g., LinearSolve.jl), and post-processing/visualization is supported via CairoMakie.jl. We illustrate the approach on canonical verification problems and multi- physics benchmarks, reporting mesh-refinement trends and conservation diag- nostics that demonstrate robust coupling across sharp interfaces on complex embedded geometries.
| Origin | Files produced by the author(s) |
|---|---|
| Licence |