My main topic of research is the development of methods to solve inverse problems in geophysics. For example, estimating density anomalies in the subsurface from measured disturbances in gravity or the direction of magnetization of a buried structure from the anomalies that it produces in the Earth's magnetic field. Most methods are applied to potential field methods (gravity and magnetics) but I'm also interested in seismology and geodesy. Central to all of my projects is the open-source software upon which I implement the new methods.
I have an open by default policy for my research and teaching output. Pretty much everything I do is freely available online, usually on Github.
As a geophysicist, my ultimate goal is to infer the physical properties of the inner Earth and its processes from surface observations. This is an ill-posed inverse problem, to which a solution might not exist or be non-unique and unstable. I develop methods for solving different kinds of inverse problems using several sets of constraints to overcome the instability of the solution.
A key component for solving an inverse problem is first solve the "forward problem". This is jargon for predicting data given a set of model parameters. One of the first research problems on which I worked was developing a method for forward modeling gravitational fields caused by a tesseroid (a spherical prism). I'm still doing work related to this theme.
There is no turning back from the machine learning frenzy that has taken over the world. Geoscientists have been doing similar things for decades but with different names and objectives. One of these things is called the "equivalent layer technique" in gravity and magnetics. Similar methods in different fields have many different names, for example radial basis functions or Green's functions interpolation. All of these methods are linear regressions in which we fit a linear model to some data and then use the model to predict new data. The difference with standard machine learning is that the linear model we use has physical meaning. For gravity data, the model is the gravitational attraction of point sources, whereas for GPS data, the model is the elastic deformation of medium. Given the many similarities, I have been very interested in applying other machine learning techniques, like model selection, to these geophysical problems.
Programming is a requirement for method development. By definition, there is no existing software that implements your new method. I program mostly in Python but I'm also proficient in C. All of my software contributions are open-source and hosted on Github.
I'm the creator and/or maintainer of the following projects:
Command-line programs for gravity forward modeling. This was my first software project. I started working on Tesseroids in 2008 for my Bachelor's thesis project and continued in collaboration with Professor Carla Braitenberg from the University of Trieste. The paper "Tesseroids: forward modeling gravitational fields in spherical coordinates" describes the algorithms behind version 1.2.0 of the software, which ended up becoming a chapter of my PhD thesis.
Fatiando is a Python library for modeling and inversion in geophysics. The name is Portuguese for "slicing the Earth" (like a loaf of bread). I started development of Fatiando in 2010 while working on my Masters degree. I now use it regularly for my research and also for much of my teaching material. My Geophysics classes at UERJ used Fatiando and Jupyter notebooks to provide students with interactive examples and synthetic data. Most recent papers published by the PINGA lab use it in some way. Fatiando was featured in the 89th Boletim SBGf (PDF in Portuguese).
Recently, I started work to convert Fatiando into several independent packages. The first one to come out is Verde, a library for gridding and spatial data processing.
A modern Python interface for the Generic Mapping Tools. I started building GMT/Python in 2017 as part of my postdoc at the University of Hawaii with Professor Paul Wessel. Work is still in early stages but there is a minimum working example on the website. GMT/Python was used to generate the bathymetry and topography banner images for this website.