GSoC 2026 Application Introduction - Clean multi-step configuration - Shuvro

Hi preCICE team,

My name is Shuvro, and I am very excited to apply for GSoC 2026. I am particularly interested in the “Clean multi-step configuration” project. Below are my details and motivation:

Motivation for GSoC: I am deeply passionate about scientific computing and software architecture. Instead of a traditional internship, I want to spend my summer contributing to an open-source project like preCICE because it allows me to work on high-impact code that solves real-world multiphysics problems. GSoC provides the perfect structured environment to learn from world-class mentors.

Interests in preCICE: I am fascinated by how preCICE handles the complexity of coupling different solvers. The “Clean multi-step configuration” project caught my eye because I enjoy refactoring and architectural challenges. Moving from a rigid XML parsing structure to a structured AST (Abstract Syntax Tree) is a sophisticated way to improve code maintainability and user experience.

Commitments: I will be fully committed to this project over the summer. I have no other study or work commitments during the GSoC period and plan to dedicate 30–35 hours per week to reach the 175h goal.

Technical Experience:

  • C++: I have a solid foundation in C++ and am comfortable navigating large codebases. I enjoy the logic involved in structural refactoring.

  • Git/GitHub: I am proficient with Git (branching, merging, diffing) and the GitHub workflow.

Entry Test Results: To familiarize myself with the configuration logic, I completed the entry task by identifying a cryptic error message and improving it. I modified src/mesh/config/MeshConfiguration.cpp so that users receive actionable advice when a data name is used by a mesh but not defined.

I have verified the fix by building the library and running the elastic-tube-1d tutorial with a broken configuration.

My git diff for this change:

--- a/src/mesh/config/MeshConfiguration.cpp
+++ b/src/mesh/config/MeshConfiguration.cpp
@@ -81,8 +81,10 @@ void MeshConfiguration::xmlTagCallback(
      }
      PRECICE_CHECK(found,
                    "Data with name \"{}\" used by mesh \"{}\" is not defined. "
-                   "Please define a data tag with name=\"{}\".",
-                   name, _meshes.back()->getName(), name);
+                   "Check your configuration file: every <use-data> tag inside a <mesh> "
+                   "must have a corresponding <data:scalar> or <data:vector> defined "
+                   "at the top of the file.",
+                   name, _meshes.back()->getName());
    }
  }

Next Step: I’ve completed this improvement to the error reporting. Should I submit this as a formal Pull Request on GitHub to show my workflow, or is providing the diff here sufficient for the entry test?

I look forward to discussing the AST refactoring further with Frédéric Simonis!

Best regards,

Shuvro