[en] This TFG aims to significantly enhance PETGEM, an open-source 3D electromagnetic modeler, by incorporating new features and implementing object-oriented programming (OOP) principles. Conducted in collaboration with the Universitat Politècnica de Catalunya and the Barcelona Supercomputing Center, this project addresses the evolving requirements of geophysical research. PETGEM, a state-of-the-art tool for solving Maxwell's equations using a high-order vector finite element method, is crucial for geophysical modeling. However, to meet the advancing needs of the field, this thesis focuses on several key enhancements: comprehensive code refactoring and transitioning to an OOP paradigm. The first objective involves a detailed analysis of the existing PETGEM codebase to identify areas for improvement. Refactoring the code will enhance its readability and maintainability, making it easier to integrate new features and functionalities. By reorganizing and modularizing the code, this project aims to create a more efficient and manageable codebase. The second major focus is transitioning PETGEM to an object-oriented programming approach. Encapsulating related functionalities into classes and objects will improve code organization and design. Implementing OOP principles such as inheritance, polymorphism, and encapsulation will create a more robust and extensible codebase, facilitating future development and maintenance. The outcome of this thesis is a significantly improved and well-documented version of PETGEM, offering a more robust and efficient workflow for electromagnetic modeling in geophysics. This work not only advances the field of geophysics but also serves as an exemplary case study in software engineering and scientific computing, showcasing the benefits of OOP and HPC integration in scientific applications.

[es] Este TFG tiene como objetivo mejorar significativamente PETGEM, un modelador electromagnético 3D de código abierto, mediante la incorporación de nuevas características y la implementación de principios de programación orientada a objetos (POO). Realizado en colaboración con la Universitat Politècnica de Catalunya y el Barcelona Supercomputing Center, este proyecto aborda los requisitos cambiantes de la investigación geofísica. PETGEM, una herramienta de vanguardia para resolver las ecuaciones de Maxwell utilizando un método de elementos finitos vectorial de alto orden, es crucial para la modelización geofísica. Sin embargo, para satisfacer las crecientes necesidades del campo, esta tesis se centra en varias mejoras clave: la refactorización integral del código y la transición a un paradigma de POO. El primer objetivo implica un análisis detallado del código existente de PETGEM para identificar áreas de mejora. La refactorización del código mejorará su legibilidad y mantenibilidad, facilitando la integración de nuevas características y funcionalidades. Al reorganizar y modularizar el código, este proyecto pretende crear una base de código más eficiente y manejable. El segundo enfoque principal es la transición de PETGEM a un enfoque de programación orientada a objetos. Encapsular las funcionalidades relacionadas en clases y objetos mejorará la organización y el diseño del código. La implementación de principios de POO como la herencia, el polimorfismo y la encapsulación creará una base de código más robusta y extensible, facilitando el desarrollo y mantenimiento futuros. El resultado de esta tesis es una versión significativamente mejorada y bien documentada de PETGEM, que ofrece un flujo de trabajo más robusto y eficiente para la modelización electromagnética en geofísica. Este trabajo no solo avanza en el campo de la geofísica, sino que también sirve como un caso de estudio ejemplar en ingeniería de software y computación científica, mostrando los beneficios de la POO y la integración de HPC en aplicaciones científicas.