Google Summer of Code 2026 - gismo/gismo GitHub Wiki

The Geometry + Simulation Modules (pronounced gismo or gizmo) is an organization developing open-source software for Isogeometric Analysis (IGA), which aims to bridge Computer-Aided Design with Finite Element Analysis. The library is written in C++ with interfaces to C, Python and Julia.

The G+Smo community consists of an active group of researchers from academia (e.g., Inria Sophia-Antipolis, TU Delft, TU Eindhoven, JKU Linz, University of Pavia) and industry (e.g., MTU Aero Engines), which organizes an annual event and which meets frequently in online meetings.


Guidelines (Contributor Guidance)

In our Ideas List we provide some ideas for possible projects participating in the Google Summer of Code 2026. These projects are indicative and broadly defined, leaving some room for adaptation to your personal profile and curiosities.

Potential Mentors

For every idea we list the mentors involved. These mentors (indicated with a Static Badge badge) are G+Smo contributors from any level, coming from academic or industrial partners of the library. To guarantee organization-wide knowledge transfer and coordination, every project is associated to a project administrator and main developer of G+Smo (indicated with a Static Badge badge).

Topics

Every idea comes with a list of topics. These topics represent "keywords" commonly used in the academic and software engineering communities to classify a topic.

Required Skills

For every idea we list a set of required skills. These skills typically consist of experience with programming languages, and sometimes also skills of academic nature, like Isogeometric Analysis, Computer-Aided Design or Numerical Simulation. The latter skills are typically optional, as we expect the contributors to get familiar with them while "learning on the job", which is common in our academic community.

Expected Outcome

For each project we provide a brief expected outcome. This outcome is an indication, which depends on the level of skill of the contributor, as well as their (academic) background.

Difficulty

An indication of the difficulty is provided for every proposed project idea. This difficulty is an estimate, provided the required skills of the project are met.

Hours

The size of each project is indicated in an estimated number of hours. A small project is estimated 90 hours, a medium project 175 hours and a large project 350. Even though the number of hours is an indication of the project duration, it serves as the basis for the planning of the projects.

Related materials

For every idea we provide some links to webpages and academic articles. We do not expect you to study this in detail, but rather provide them to give you an idea or where we are on the topic, and where we would like to go.

What do we want to know from you?

  1. Provide a brief motivation why you are interested in G+Smo
  2. Provide details on your earlier experience with Computer-Aided Design and Computer-Aided Analysis (e.g., FEM, CFD)
  3. Tell us which project you are interested in (see the Ideas List).
  4. Tell us how your skills relate to the skills required by the proposed project.

Ideas List

All proposed projects are tasks that can boost your skills, and also the capabilities of G+Smo, and may of them are related to academic topics of interest of different members of the organization. Therefore, you are going to be contributing potentially to ongoing research, supervised by members of our community who have extensive experience with student supervision across all levels. All developments will be made available open-source within the gismo organization, and possibly in open-access academic publications.

Project 1: GPU acceleration of G+Smo

Push core functionalities of G+Smo to the GPU! Spline evaluation, fitting routines, parametrization or assembly of Partial Differential Equations (PDEs); we would like to see where we can GPU-accelerate our library.

In this project, you will develop GPU routines for the G+Smo library using Kokkos, for example for spline evaluation, fast formation and solution of linear systems and post-processing of spline results. Besides writing code, you will focus of the design of the gsKokkos for user-friendliness, extensibility and compatibility with the main G+Smo library and its optional modules.

Potential Mentors: Static Badge Static Badge Static Badge

Topics: GPU acceleration, isogeometric analysis, fast assembly

Required skills: Fluency with C++, Parallel computing (CPU), Parallel computing (GPU, optional), Kokkos (optional)

Expected outcome: The design of a submodule for easy implementation of the assembly and solution of partial differential equations using Kokkos, accompanied with a few examples.

Difficulty: Medium

Hours: 350

Related material: We have started the gsKokkos module where we interface with Kokkos. You'll be actively contributing to this module!

Project 2: Distributed computing with G+Smo

We'd like to see how big G+Smo can grow. Can we distribute computations on 10 nodes, 100 nodes, 1000...? What are the limits, and why?

G+Smo's assembly has been shared-memory parallel for a long time (using OpenMP). In the last two years, we have interfaced the library with PETSc for distributed linear algebra. Furthermore, we have started implementation of domain-decomposition methods for isogeometric analysis. In this project, we want to find the limits of our parallelism. Therefore, you will critically evaluate the domain-decomposition methods, the PETSc interface and run the code on High-Performance Computing (HPC) architectures (primarily CPU). Based on the bottlenecks, you will contribute to make the library more scalable.

Mentors: Static Badge Static Badge

Topics: Distributed computing computing, isogeometric analysis

Required skills: Fluency with C++, Parallel computing (CPU), PETSc (optional), Finite Element Assembly (optional)

Expected outcome: A scaling analysis of the distributed parallel assembly algorithms in G+Smo applied to different physical problems, with suggestions for improvement (of which some might be worked out).

Difficulty: Medium

Hours: 175-350

Related material:

  • This PR in the main G+Smo library added the decompose method to the domain representation, allowing to distribute subdomains over different compute nodes.
  • The gsPetsc module which interfaces PETSc to G+Smo.

Project 3: Interface modularity

The G+Smo project has interfaces from C++ to Python, Julia and Matlab. However, interfacing its modules is still an open problem. Could you help us managing these dependencies?

The main repository of G+Smo, gismo is interfaced from C++ to Python and to Julia and MATLAB (experimental) via C. However, to exploit the modularity of G+Smo in the other languages, we want to develop a clever design which allows optional modules to be fetched independently in the other languages. This requires a reduction code inter-dependencies as well us modernisation of the CMake scripts.

Potential Mentors: Static Badge Static Badge Static Badge

Topics: Package management, basics of shared libraries

Required skills: Package management, C++, C, Python, Julia, MATLAB (optional)

Expected outcome: Working infrastructure for the management of separate sub-modules in the Python and Julia interfaces of G+Smo (MATLAB optional).

Difficulty: Hard

Hours: 350

Project 4: G+Smo for engineering education

G+Smo is widely used by academics, but not so much in teaching. We would like to build a series of interactive web-based tools (applets, notebooks, etc) in various programming languages which can be used in engineering education.

In this project, we build on top of our try gismo repository. The repository currently involves basic notebooks about splines, hosted by Binder, which we like to expand towards more complicated examples involving simulation, optimization, etc. In this project, you will collaborate with developers/educators from our community to set-up several examples in Python and Julia, wrapped into notebooks hosted Binder or Google Collab. The project is a combination between theory, education and visualization. Optionally, we will expand the project towards self-hosting of notebooks for educational institutions.

Potential Mentors: Static Badge Static Badge Static Badge Static Badge

Topics: Engineering education, Isogeometric Analysis, Applied Geometry

Required skills: Jupyter notebooks, Python, Julia

Expected outcome: A series of explanatory Jupyter notebooks to be used inside Binder and Google Colab, related either to applied geometry (spline fundamentals, surface reconstruction, etc.) or the numerical solution of partial differential equations using Isogeometric Analysis.

Difficulty: Easy

Hours: 175

Related material: Check out the Binder notebooks in our try gismo repository.

Project 5: Adaptive spline parameterization tools

Since G+Smo bridges CAD and FEA, the community is leader in parametrization methods for isogeometric analysis. This includes adaptive refinement, adaptive mesh deformation and mesh re-parametrization.

This project aims to develop adaptive spline parameterization tools in G+Smo that systematically improve geometry mappings and analysis suitability, learing to robust and accurate Isogeometric Analysis. The focus is on r-adaptive methods and mesh deformation (updating control points while preserving spline topology), mesh-quality metrics, and indicator-driven adaptation loops, with particular attention to multi-patch interfaces and continuity constraints. If time permits, the algorithms are exposed to Python, Julia or MATLAB to enable fast prototyping and educational use.

Mentors: Static Badge Static Badge

Topics: Applied geometry, isogeometric analysis, computer-aided geometric design, spline parametrization

Required skills: C++, Python, basics of numerical analysis and applied geometry (optonal)

Expected outcome: A working and extensible prototype performing indicator-driven r-adaptivity on multi-patch geometries.

Difficulty: Hard

Hours: 350

Related material:

Project 6: Interface G+Smo to an open-source CAD system

If you have programmed in BRL-CAD or Blender, e.g. at a past GSoC, you might be the right person for this task! You will gain insight on how a plugin mechanism works and how different open-source pieces of software can work together.

This idea regards the bi-directional communication between G+Smo and CAD/CAM software. In particular, we aim at developing a plugin for open-source CAD applications. Promising possibilities include BRL-CAD and Blender.

We are looking for students that have successfully worked in the past with other open-source projects and have experience with them. However, the source code should be developed in the G+Smo repository, use the API of the CAD system and linked dynamically with it after compilation.

Mentors: Static Badge Static Badge Static Badge

Topics: Graphical user interface, interactive programming, operating systems

Required skills: Requires skills: CAD kernels, GUI development

Expected outcome: Expected outcome: A graphical interface for functionalities in a third party opensource system

Difficulty: Medium

Hours: 350

Project 7: Develop a plugin for ParaView

If you like computer graphics and have a knowledge of OpenGL, VTK or even ParaView, then this can be an exciting project for you. You will gain insight on how a plugin mechanism works and on employing different open-source pieces of software to provide software solutions.

ParaView is an open-source data analysis and visualization application, built on top of the VTK library. It is a standard tool for visualization in the numerical simulation community, e.g. for displaying the solution of finite element analysis, creating animations for time-dependent phenomena, processing volumetric data, and so on . However, it lacks built-in support for B-spline geometry representation (curves, surfaces, tri-variate volumes). Certainly, one can generate a mesh out of a B-spline geometry and create a ParaView input file. This is how G+Smo currently outputs visualization data to ParaView.

This project aims at implementing a plugin (dynamic library) for inputting and processing G+Smo data to ParaView. The first step is the development of a plugin that contains a Reader for '''G+Smo''''s spline data file format. Apart from visualizing the spline geometry, one could display the control net of a B-spline geometry and also visualize the parameter domain together with the knot-lines or knot-planes, using ParaView filters. Finally, a writer will allow us to write back spline data from within ParaView. The final goal would be to contribute this plugin to ParaView.

Mentors: Static Badge Static Badge Static Badge

Topics: Graphical output, visualization, GUI programming

Required skills: VTK, C++, ParaView programming

Expected outcome: A cross-platform, interactive plugin for ParaView

Difficulty: Medium

Hours: 350

Project 8: Half-face and V-rep data structures

This project requires some knowledge on geometric modeling, mesh processing and CAD data structures! You will get to work in central parts of a modeling kernel, and obtaining hands on experience in how CAM/CAD works.

A half-edge data structure is an efficient structure for representing the incidence information about the vertices, edges and faces of a mesh. For 3D meshes, a generalization to a half-face data structure is needed. We would like to develop a general purpose half-face data structure implementation within G+Smo; use this structure to improve the efficiency and reduce code redundancy of 3D topology operations.

This project will also upgrade the B-rep class of G+Smo. In particular, the class should be rebuild over the half-edge data structure. As a second step, a B-rep representation may be upgraded to a V-rep representation, that will enable analysis-suitable geometric models.

Mentors: Static Badge Static Badge Static Badge

Topics: 3D mesh generation, mesh processing

Required skills: C++ programming, geometric algorithms

Expected outcome: A robust data-structure for volumetric meshes, along with required topology iterators and operations

Difficulty: Hard

Hours: 350

Project 9: Web database of Geometric models and benchmark simulation problems

If you are font of web and server scripting, web development and design, then this task is for you! You will gain experience in working on a web-portal and in combining different web technologies.

This project regards the setup of a web database of geometry and simulation data. The core task is the setup of a setup a suitable CMS (Content Management System) and SQL database to support the website. The data processing will be done by a running G+Smo process in the background, providing thumbnail generation, real-time computations and visualization and conversion of uploaded data.

There is already an interesting collection of isogeometric data sets, including B-spline planar domains, surfaces, multi-patch volumetric data, boundary-represented solids, PDE benchmarks, boundary value problems with manufactured solutions, and so on, that we aim at adding to the database. In addition, the visitors of the web portal will be able to contribute data, uploaded in various file formats. The internal representation and download format will be the open-source XML format of G+Smo.

Mentors: Static Badge Static Badge

Topics: Geometry processing, web databases, metadata

Required skills: Required skills: CAD data exchange, file formats, web programming, webGL

Expected outcome: A web portal along with a benchmark database, with proper metadata management and a search engine

Difficulty: Medium

Hours: 350


Our Team

Project admins

Angelos Mantzaflaris Static Badge - Centre Inria at the Université Côte d'Azur, Sophia-Antipolis, France. Angelos Mantzaflaris is a researcher in the team Aromath of Inria. I has expertise in pure and applied mathematics combined with advanced skills in computer science, ranging from complexity and computational issues, to scientific computing and software development.

Hugo Verhelst Static Badge - TU Eindhoven, Eindhoven, The Netherlands. Hugo Verhelst is a post-doctoral researcher in mechanical engineering at TU Eindhoven. His research interests are the nonlinear mechanics of solid and shell structures (buckling, wrinkling, fracture), phase-field problems(phase-field fracture, mixture equations), high-performance compution for Isogometric Analysis (GPU-programming, distributed computing) and uncertainty quantification and reduced-order modeling in the Bayesian framework.

Project mentors

Ye Ji Static Badge - TU Delft, Delft, The Netherlands. Ye Ji is a post-doctoral researcher at TU Delft, focusing on geometric modeling and isogeometric analysis. His works focus on mesh quality optimization, relocation-based adaptivity and structural analysis.

Jingya Li Static Badge - TU Delft, Delft, The Netherlands. Jingya Li is a PhD student at TU Delft focusing on coupled problems. In particular, her research involves coupled simulation of structures and fluids on the interface between water and air. She therefore focuses on the coupling of mechanics and fluid solvers within G+Smo and beyond, using the preCICE ecosystem.

Michelangelo Marsala Static Badge - Centre Inria at the Université Côte d'Azur, Sophia-Antipolis, France. Michelangelo Marsala is a post-doctoral researcher in the team Aromath of Inria. His research focuses on the construction of smooth spline constructions for multi-patch isogeometric analysis, based on subdivision surfaces.

Dimitrios Tolis Static Badge - Centre Inria at the Université Côte d'Azur, Sophia-Antipolis, France. Dimitrios Tolis is a PhD student in AROMATH team in Inria at Université Côte d'Azur. His reasearch focuses on geometrically continuous spline approximations from meshes and their applications in isogeometric analysis.

Georgios Marmarou Static Badge - University of Pavia, Pavia, Italy. Georgios Marmarou is a PhD student at the University of Pavia, focusing on fast formation methods for Isogeometric Analysis. His research involves efficient matrix-free assembly using GPU architectures for explicit dynamics.

Alberto Biliotti Static Badge - University of Florence, Florence, Italy. Alberto Biliotti is a PhD student at the University of Florence, focusing on efficient methods for spline fitting. His research focuses on the application of refinement schemes and deep learning to accelerate conventional fitting schemes. In addition, he contributes to the exposure of G+Smo in Python and Julia.

Pascal Weinmüller Static Badge - MTU Aero Engines, Munich, Germany. Pascal Weinmüller is currently a software developer in the geometry group at MTU Aero Engines. He obtained his PhD from Johannes Kepler University Linz, where he focused on smooth spline constructions for complex multi‑patch geometries in Isogeometric Analysis. His research interests include subdivision methods, advanced smooth geometry representations, and the numerical solution of fourth‑order partial differential equations.

Maarten Hodzelmans Static Badge - TU Eindhoven, Eindhoven, The Netherlands. Maarten Hodzelmans is a PhD researcher at TU Eindhoven, focused on modeling seismic wave propagation using Isogeometric Analysis. His work involves fast simulation of coupled poroelastic equations, hence he is involved in the development of multi-field assembly algorithms, preferably for GPU architectures.