Skip to content

Code

Open-source packages for computational electromagnetics, numerical methods and scientific computing.

Activity

Commits, issues and reviews across my public repositories over the past year.

NovDecJanFebMarAprMayJunJulAugSepOctMonWedFriNo contributions on 26 Oct 20253 contributions on 27 Oct 2025No contributions on 28 Oct 202510 contributions on 29 Oct 20253 contributions on 30 Oct 20255 contributions on 31 Oct 2025No contributions on 1 Nov 2025No contributions on 2 Nov 2025No contributions on 3 Nov 2025No contributions on 4 Nov 20252 contributions on 5 Nov 2025No contributions on 6 Nov 2025No contributions on 7 Nov 2025No contributions on 8 Nov 2025No contributions on 9 Nov 2025No contributions on 10 Nov 2025No contributions on 11 Nov 2025No contributions on 12 Nov 20251 contribution on 13 Nov 20253 contributions on 14 Nov 2025No contributions on 15 Nov 2025No contributions on 16 Nov 2025No contributions on 17 Nov 2025No contributions on 18 Nov 20251 contribution on 19 Nov 20253 contributions on 20 Nov 2025No contributions on 21 Nov 2025No contributions on 22 Nov 2025No contributions on 23 Nov 2025No contributions on 24 Nov 2025No contributions on 25 Nov 2025No contributions on 26 Nov 2025No contributions on 27 Nov 2025No contributions on 28 Nov 2025No contributions on 29 Nov 2025No contributions on 30 Nov 2025No contributions on 1 Dec 2025No contributions on 2 Dec 2025No contributions on 3 Dec 20251 contribution on 4 Dec 20251 contribution on 5 Dec 2025No contributions on 6 Dec 2025No contributions on 7 Dec 20251 contribution on 8 Dec 2025No contributions on 9 Dec 2025No contributions on 10 Dec 20258 contributions on 11 Dec 20251 contribution on 12 Dec 2025No contributions on 13 Dec 2025No contributions on 14 Dec 2025No contributions on 15 Dec 2025No contributions on 16 Dec 2025No contributions on 17 Dec 2025No contributions on 18 Dec 2025No contributions on 19 Dec 20252 contributions on 20 Dec 2025No contributions on 21 Dec 2025No contributions on 22 Dec 2025No contributions on 23 Dec 2025No contributions on 24 Dec 2025No contributions on 25 Dec 2025No contributions on 26 Dec 2025No contributions on 27 Dec 2025No contributions on 28 Dec 2025No contributions on 29 Dec 2025No contributions on 30 Dec 2025No contributions on 31 Dec 2025No contributions on 1 Jan 2026No contributions on 2 Jan 2026No contributions on 3 Jan 2026No contributions on 4 Jan 2026No contributions on 5 Jan 2026No contributions on 6 Jan 2026No contributions on 7 Jan 2026No contributions on 8 Jan 2026No contributions on 9 Jan 2026No contributions on 10 Jan 2026No contributions on 11 Jan 2026No contributions on 12 Jan 2026No contributions on 13 Jan 2026No contributions on 14 Jan 2026No contributions on 15 Jan 20261 contribution on 16 Jan 2026No contributions on 17 Jan 2026No contributions on 18 Jan 2026No contributions on 19 Jan 2026No contributions on 20 Jan 20264 contributions on 21 Jan 20261 contribution on 22 Jan 20267 contributions on 23 Jan 2026No contributions on 24 Jan 2026No contributions on 25 Jan 2026No contributions on 26 Jan 2026No contributions on 27 Jan 2026No contributions on 28 Jan 20263 contributions on 29 Jan 2026No contributions on 30 Jan 2026No contributions on 31 Jan 2026No contributions on 1 Feb 2026No contributions on 2 Feb 2026No contributions on 3 Feb 20261 contribution on 4 Feb 2026No contributions on 5 Feb 2026No contributions on 6 Feb 2026No contributions on 7 Feb 2026No contributions on 8 Feb 2026No contributions on 9 Feb 20263 contributions on 10 Feb 20265 contributions on 11 Feb 20262 contributions on 12 Feb 2026No contributions on 13 Feb 20261 contribution on 14 Feb 2026No contributions on 15 Feb 202639 contributions on 16 Feb 20263 contributions on 17 Feb 2026No contributions on 18 Feb 20263 contributions on 19 Feb 2026No contributions on 20 Feb 2026No contributions on 21 Feb 2026No contributions on 22 Feb 2026No contributions on 23 Feb 2026No contributions on 24 Feb 2026No contributions on 25 Feb 2026No contributions on 26 Feb 2026No contributions on 27 Feb 2026No contributions on 28 Feb 2026No contributions on 1 Mar 2026No contributions on 2 Mar 2026No contributions on 3 Mar 20269 contributions on 4 Mar 202616 contributions on 5 Mar 20264 contributions on 6 Mar 2026No contributions on 7 Mar 2026No contributions on 8 Mar 2026No contributions on 9 Mar 20267 contributions on 10 Mar 20262 contributions on 11 Mar 20267 contributions on 12 Mar 2026No contributions on 13 Mar 2026No contributions on 14 Mar 2026No contributions on 15 Mar 2026No contributions on 16 Mar 20261 contribution on 17 Mar 2026No contributions on 18 Mar 2026No contributions on 19 Mar 2026No contributions on 20 Mar 202614 contributions on 21 Mar 20262 contributions on 22 Mar 2026No contributions on 23 Mar 2026No contributions on 24 Mar 20266 contributions on 25 Mar 20263 contributions on 26 Mar 2026No contributions on 27 Mar 2026No contributions on 28 Mar 2026No contributions on 29 Mar 2026No contributions on 30 Mar 2026No contributions on 31 Mar 20266 contributions on 1 Apr 20261 contribution on 2 Apr 2026No contributions on 3 Apr 2026No contributions on 4 Apr 2026No contributions on 5 Apr 2026No contributions on 6 Apr 2026No contributions on 7 Apr 2026No contributions on 8 Apr 2026No contributions on 9 Apr 2026No contributions on 10 Apr 2026No contributions on 11 Apr 2026No contributions on 12 Apr 2026No contributions on 13 Apr 2026No contributions on 14 Apr 2026No contributions on 15 Apr 2026No contributions on 16 Apr 2026No contributions on 17 Apr 2026No contributions on 18 Apr 2026No contributions on 19 Apr 2026No contributions on 20 Apr 2026No contributions on 21 Apr 2026No contributions on 22 Apr 2026No contributions on 23 Apr 2026No contributions on 24 Apr 2026No contributions on 25 Apr 2026No contributions on 26 Apr 2026No contributions on 27 Apr 2026No contributions on 28 Apr 2026No contributions on 29 Apr 2026No contributions on 30 Apr 2026No contributions on 1 May 20264 contributions on 2 May 2026No contributions on 3 May 2026No contributions on 4 May 2026No contributions on 5 May 2026No contributions on 6 May 2026No contributions on 7 May 2026No contributions on 8 May 2026No contributions on 9 May 2026No contributions on 10 May 2026No contributions on 11 May 2026No contributions on 12 May 2026No contributions on 13 May 2026No contributions on 14 May 2026No contributions on 15 May 2026No contributions on 16 May 2026No contributions on 17 May 2026No contributions on 18 May 20269 contributions on 19 May 20263 contributions on 20 May 202625 contributions on 21 May 2026No contributions on 22 May 2026No contributions on 23 May 2026No contributions on 24 May 2026No contributions on 25 May 2026No contributions on 26 May 2026No contributions on 27 May 2026No contributions on 28 May 202613 contributions on 29 May 2026No contributions on 30 May 2026No contributions on 31 May 20262 contributions on 1 Jun 20266 contributions on 2 Jun 2026No contributions on 3 Jun 2026No contributions on 4 Jun 2026No contributions on 5 Jun 2026No contributions on 6 Jun 2026No contributions on 7 Jun 20264 contributions on 8 Jun 20261 contribution on 9 Jun 2026No contributions on 10 Jun 2026No contributions on 11 Jun 20261 contribution on 12 Jun 2026No contributions on 13 Jun 2026No contributions on 14 Jun 20261 contribution on 15 Jun 2026No contributions on 16 Jun 2026No contributions on 17 Jun 2026No contributions on 18 Jun 20262 contributions on 19 Jun 2026No contributions on 20 Jun 2026No contributions on 21 Jun 2026No contributions on 22 Jun 20268 contributions on 23 Jun 2026No contributions on 24 Jun 202615 contributions on 25 Jun 2026No contributions on 26 Jun 2026No contributions on 27 Jun 2026No contributions on 28 Jun 20263 contributions on 29 Jun 2026No contributions on 30 Jun 20262 contributions on 1 Jul 20266 contributions on 2 Jul 20261 contribution on 3 Jul 2026No contributions on 4 Jul 2026No contributions on 5 Jul 2026No contributions on 6 Jul 2026No contributions on 7 Jul 20263 contributions on 8 Jul 2026No contributions on 9 Jul 2026No contributions on 10 Jul 2026No contributions on 11 Jul 2026No contributions on 12 Jul 2026No contributions on 13 Jul 2026No contributions on 14 Jul 20264 contributions on 15 Jul 20261 contribution on 16 Jul 2026No contributions on 17 Jul 2026No contributions on 18 Jul 2026No contributions on 19 Jul 2026No contributions on 20 Jul 20263 contributions on 21 Jul 2026No contributions on 22 Jul 20264 contributions on 23 Jul 2026No contributions on 24 Jul 2026No contributions on 25 Jul 2026No contributions on 26 Jul 2026No contributions on 27 Jul 2026No contributions on 28 Jul 2026No contributions on 29 Jul 2026No contributions on 30 Jul 2026No contributions on 31 Jul 2026No contributions on 1 Aug 2026No contributions on 2 Aug 2026No contributions on 3 Aug 2026No contributions on 4 Aug 2026No contributions on 5 Aug 20267 contributions on 6 Aug 202616 contributions on 7 Aug 2026No contributions on 8 Aug 2026No contributions on 9 Aug 20263 contributions on 10 Aug 2026No contributions on 11 Aug 2026No contributions on 12 Aug 2026No contributions on 13 Aug 2026No contributions on 14 Aug 2026No contributions on 15 Aug 2026No contributions on 16 Aug 202618 contributions on 17 Aug 202612 contributions on 18 Aug 20268 contributions on 19 Aug 202612 contributions on 20 Aug 20267 contributions on 21 Aug 202611 contributions on 22 Aug 202619 contributions on 23 Aug 2026No contributions on 24 Aug 2026No contributions on 25 Aug 20262 contributions on 26 Aug 20264 contributions on 27 Aug 2026No contributions on 28 Aug 2026No contributions on 29 Aug 2026No contributions on 30 Aug 202610 contributions on 31 Aug 2026No contributions on 1 Sept 20262 contributions on 2 Sept 2026No contributions on 3 Sept 202615 contributions on 4 Sept 202612 contributions on 5 Sept 2026No contributions on 6 Sept 20264 contributions on 7 Sept 2026No contributions on 8 Sept 2026No contributions on 9 Sept 20266 contributions on 10 Sept 20266 contributions on 11 Sept 202616 contributions on 12 Sept 202618 contributions on 13 Sept 20266 contributions on 14 Sept 2026No contributions on 15 Sept 2026No contributions on 16 Sept 2026No contributions on 17 Sept 20261 contribution on 18 Sept 2026No contributions on 19 Sept 2026No contributions on 20 Sept 2026No contributions on 21 Sept 2026No contributions on 22 Sept 202612 contributions on 23 Sept 20265 contributions on 24 Sept 20264 contributions on 25 Sept 2026No contributions on 26 Sept 2026No contributions on 27 Sept 20262 contributions on 28 Sept 202612 contributions on 29 Sept 202612 contributions on 30 Sept 20268 contributions on 1 Oct 202651 contributions on 2 Oct 202610 contributions on 3 Oct 202622 contributions on 4 Oct 202611 contributions on 5 Oct 20266 contributions on 6 Oct 20262 contributions on 7 Oct 2026No contributions on 8 Oct 2026No contributions on 9 Oct 2026No contributions on 10 Oct 2026No contributions on 11 Oct 20262 contributions on 12 Oct 2026No contributions on 13 Oct 202610 contributions on 14 Oct 20265 contributions on 15 Oct 202623 contributions on 16 Oct 20266 contributions on 17 Oct 202628 contributions on 18 Oct 202622 contributions on 19 Oct 20261 contribution on 20 Oct 20268 contributions on 21 Oct 202611 contributions on 22 Oct 20263 contributions on 23 Oct 2026No contributions on 24 Oct 2026No contributions on 25 Oct 2026No contributions on 26 Oct 2026
Contributions
808
Active days
111
Longest streak
10
GitHub and GitLab, last 12 months (updated 26 Oct 2026)

Packages

Solvers and tools I develop, most of them behind the papers.

  • gsimGDSFactory plugin for electromagnetic simulation. Takes a layout from GDS to S-parameters with the Palace (FEM), Meep and GDSFactory FDTD solvers.github.com/gdsfactory/gsimPython
  • gyptisComputational photonics with the finite element method. Solves Maxwell's equations with FEniCS, with ready-made models for scattering, gratings and modal analysis.Live notebookgitlab.com/gyptis/gyptisPython
  • nannosFourier modal method for multilayer metamaterials. Several FMM formulations, automatic differentiation and GPU acceleration.Live notebookgitlab.com/nannos/nannosPython
  • protisPlane wave expansion method for photonic crystals, with automatic differentiation and GPU acceleration.Live notebookgitlab.com/protis/protisPython
  • pytmodSolver for materials with time-modulated properties. Computes scattering and eigenmodes of time-modulated slabs.github.com/benvial/pytmodPython
  • pylattNumerical models of mechanical lattices (truss and frame structures). Computes phononic band diagrams and supports automatic differentiation for metamaterial optimization.gitlab.com/benvial/pylattPython
  • kloveWaves on thin elastic plates (Kirchhoff-Love theory). Multiple scattering by pins, masses and resonators, gratings, quasi-normal modes and band diagrams, all differentiable.gitlab.com/benvial/klovePython
  • ashxHelpers for FEniCSx finite element simulations. Converts gmsh meshes to DOLFINx and provides geometry definition and integration helpers.gitlab.com/benvial/ashxPython
  • geoliaGeometry and mesh helpers built on the Gmsh Python API. Reads meshes with their physical domains (meshio) and interpolates from unstructured to structured grids.gitlab.com/benvial/geoliaPython
  • refidxRetrieves the refractive index of a material at a given wavelength from the refractiveindex.info database.gitlab.com/benvial/refidxPython
  • coaxtractPermittivity extraction for multilayer stacks using an open-ended coaxial probe.gitlab.com/benvial/coaxtractPython
  • cpwxtractExtracts material properties from coplanar waveguide measurements.gitlab.com/benvial/cpwxtractPython
  • tdsxtractExtracts permittivity from terahertz time-domain spectroscopy measurements.github.com/tdsxtract/tdsxtractPython
  • prismoFree-form doping design of silicon PN phase shifters. Gradient-based optimization of the full doping field, coupling carrier transport and optical mode solvers. Grand Prize at the Tesseract Hackathon 2026.github.com/benvial/prismoPython
  • tetrachotomyFinds the poles and zeros of a function of a complex variable, with their residues.github.com/benvial/tetrachotomyPython
  • pygetdpPython frontend for the GetDP finite element solver.gitlab.com/benvial/pygetdpPython

Notebooks

Worked examples you can edit and re-run in the browser, on a live kernel.

Solver wheels

Pip-installable builds of established simulation codes, with every native dependency inside the wheel.

  • palace-solverThe Palace 3D finite element electromagnetics solver as a binary wheel for Linux (x86-64, arm64) and Apple Silicon macOS. One pip install, no conda, Docker, compiler or MPI setup.github.com/benvial/palace-solverPython
  • dolfinx-solverDOLFINx (FEniCSx) as a Linux binary wheel, with complex-scalar PETSc and SLEPc built in.github.com/benvial/dolfinx-solverPython

conda-forge

Feedstocks I maintain on conda-forge.

  • gyptis-feedstockconda-forge recipe for the gyptis finite element photonics package.github.com/conda-forge/gyptis-feedstock
  • nannos-feedstockconda-forge recipe for the nannos Fourier modal method package.github.com/conda-forge/nannos-feedstock
  • protis-feedstockconda-forge recipe for the protis plane wave expansion package.github.com/conda-forge/protis-feedstock
  • tmm-feedstockconda-forge recipe for tmm, the transfer matrix method for multilayer optics.github.com/conda-forge/tmm-feedstock
  • autograd-feedstockconda-forge recipe for autograd, automatic differentiation of native Python and NumPy code.github.com/conda-forge/autograd-feedstock