avatar

Carlos Brito-Pacheco

Chercheur post-doctoral
UPPA
carlos.brito-pacheco[at]univ-pau.fr


About me


I am currently a post-doctoral researcher at the Université de Pau et des Pays de l’Adour in the LMAP. My research focuses on numerical methods for shape and topology optimization on curved meshes and is supervised by Fabien Caubet and Charles Pierre.

Before that, I was a research engineer at INRIA Paris working on cardiac hemodynamics, where I worked on numerical methods for cardiac hemodynamics in collaboration with Oscar Ruz, and the COMMEDIA team.

I did my Ph.D. at the Laboratoire Jean Kuntzmann in Grenoble under the supervision of Charles Dapogny, Eric Bonnetier and Rafael Estevez, where I developed numerical methods for surface shape and topology optimization and created a C++ finite element code called Rodin.

Broadly, my work sits at the interface between shape and topology optimization, differential geometry and scientific computing. I am interested in problems where the geometry itself is the unknown: how to represent an evolving shape (level sets, body-fitted meshes), how to differentiate a physical quantity with respect to it (shape and topological derivatives), and how to turn both into robust numerical algorithms. On the computational side, I care about writing finite element software that stays readable and fast, and that people other than its author can actually use.

News


Supervision


J.W.

Jiajun Wang (M2, 2026) — co-encadrement with Clément Moreau.
Level-Set Shape Optimization for Hydrodynamic Resistance in Stokes Flow.

Publications


  1. O. Ruz, C. Brito-Pacheco, M. Vidrascu, D. Chapelle, MA. Fernández



  2. JACT
    Carlos Brito-Pacheco, Carlos Brito-Loeza, Anabel Martin-Gonzalez

Software


Rodin logo

Rodin is a modern C++20 finite element library for shape and topology optimization, providing the functionalities needed by such algorithms — from refining and remeshing the underlying shape to specifying and solving variational problems. It is named after Auguste Rodin, considered the founder of modern sculpture, and is distributed under the Boost Software License.

Variational formulations are written directly in C++20, close to their mathematical statement. Given a domain \( \Omega \) with boundary \( \Gamma := \partial \Omega \), the Poisson problem

\[\left\{ \begin{aligned} -\Delta u &= f && \text{in } \Omega \\ u &= 0 && \text{on } \Gamma \ , \end{aligned} \right.\]

has the associated weak formulation

\[\text{find } u \in H^1_0(\Omega) \quad \text{s.t.} \quad \forall v \in H^1_0(\Omega), \quad \int_\Omega \nabla u \cdot \nabla v \ dx = \int_\Omega f v \ dx ,\]

with \( H^1_0(\Omega) := { v \in H^1(\Omega) \mid v = 0 \text{ on } \Gamma } \), which is implemented in a few lines of code:

#include <Rodin/Types.h>
#include <Rodin/Solver.h>
#include <Rodin/Geometry.h>
#include <Rodin/Assembly.h>
#include <Rodin/Variational.h>
#include <Rodin/IO/XDMF.h>

using namespace Rodin;
using namespace Rodin::Solver;
using namespace Rodin::Geometry;
using namespace Rodin::Variational;

int main(int, char**)
{
  Mesh mesh;
  mesh = mesh.UniformGrid(Polytope::Type::Triangle, { 16, 16 });
  mesh.getConnectivity().compute(1, 2); // Compute the boundary

  P1 vh(mesh);

  TrialFunction u(vh);
  TestFunction  v(vh);

  RealFunction f = 1;

  Problem poisson(u, v);
  poisson = Integral(Grad(u), Grad(v))
          - Integral(f, v)
          + DirichletBC(u, Zero());
  CG(poisson).solve();

  // Export for ParaView
  IO::XDMF xdmf("Poisson");
  xdmf.grid().setMesh(mesh).add("u", u.getSolution());
  xdmf.write().flush();
  xdmf.close();

  return 0;
}

Beyond the form language, Rodin offers:

The repository ships examples ranging from level-set shape optimization (cantilevers, arches, eigenvalue problems) and optimization of regions supporting boundary conditions (acoustic cloaking, clamp locators, surface cooling) to Stokes and Navier-Stokes flows, fluid-structure interaction, nonlinear solid mechanics, Eikonal solvers and cardiac hemodynamics. The project is under active development, and every commit is built, tested, benchmarked and documented in CI. See the repository, the documentation or the getting started guide.

Thesis


My thesis is available here.

It focused on the optimization of regions embedded within surfaces in \( \mathbb{R}^d \). It revisited classical shape optimization tools—such as Hadamard’s boundary variation technique and the topological derivative—and adapted them to a novel differential geometry framework tailored for surface-based problems.

A significant contribution was the development of a numerical strategy based on the level set method combined with precise geometric meshing, allowing for the tracking of evolving regions on curved surfaces under complex velocity fields, including large deformations and topological changes.

The work addressed the optimization of regions supporting specific boundary conditions (Dirichlet, Neumann, Robin) in PDE-constrained physical models. Applications included:

To support these developments, an open-source C++20 library was implemented for surface-based shape optimization. The thesis discussed the library’s design principles, syntax, and implementation examples, along with directions for future improvements.

Conference talks


Other talks


Research Interests



Powered by Jekyll and Minimal Light theme.