My research touches a wide variety of applications: from biomolecular physics, to fluids, to electromagnetic scattering. I tackle these problems from a numerical modeling perspective, using boundary element methods, fast algorithms and high performance computing. Next, I give details of some of these applications.

This research has been funded by CONICYT, through their FONDECYT and FONDEF programs, and USM, by means of internal funding from the DGIP (Office of Research and Postgraduate programs). Their support is highly appreciated.

Biomolecular physics

My main research line is in the development of computer codes to simulate protein solvation with continuum electrostatic models (ie. considering the solvent as a dielectric region). This yields system of PDEs where the Poisson and Poisson-Boltzmann equations are coupled on the molecular surface, which we represent with boundary integral equations. We solve this numerically using boundary element methods, accelerated with fast methods that run on GPUs.

I have mostly worked on a code called PyGBe, which we have used to study solvation, binding, and adsorption, among other things.

Left: Electrostatic potential on the molecular surface of a HIV-1 protease-substrate complex. Right: BEM mesh for lysozyme.

Electromagnetic scattering

Lately, I have become interested in modeling electromagnetic scattering with application to sensors — more specifically, nanoscale biosensors and ferromagnetic microwire-based stress sensors in polymers. I also use BEM for these simulations, through PyGBe and the neat library BEM++.

Mesh of a polymer matrix with inclusions of ferromagnetic microwires.

Fast algorithms

One of the main disadvantages of BEM is that it generates dense matrices, yielding a O(N^2) scaling in memory and computer time that limits its applicability. Because of this, I’m very interested in developing algorithms that improve this scaling to O(NlogN) or even O(N). More specifically, I’ve mostly worked with the treecode algorithm, which accelerates N-body problems to O(NlogN) by approximating far-away interactions to centers of expansion.

Sketch of the treecode far-field approximation. White dots are ‘targets’ and black dots ‘sources’ of mass.

High performance computing

Many real-life applications are just too big to model on a single CPU, and we require parallel processing and modern hardware to tackle them in reasonable time. Most of my work has been based in the use of GPUs for numerical algorithms, and recently I’ve been exploring to extend those algorithms to use multiple CPUs and GPUs.