Litho
Una librería en Python para modelos termomecánicos de la litósfera andina. Su rediseño en torno a operaciones con arreglos hizo cada ejecución 30 veces más rápida.
- Asistente de investigación y desarrollador principal
- 2018–2022

Litho modela la temperatura y la resistencia mecánica de la litósfera bajo los Andes, desde la fosa hasta el antepaís, a partir de la geometría 3D de sus principales límites. Se desarrolló durante cuatro años en el grupo de investigación del Dr. Andrés Tassara (Universidad de Concepción), donde fui su desarrollador principal: escribí la mayor parte del código, incluida toda su lógica central, y lideré su paso a un diseño orientado a objetos, con estructuras de datos propias y operaciones con arreglos. La investigación que apoyó se publicó en Earth-Science Reviews (Giambiagi et al., 2022) y se presentó en la Asamblea General de la EGU (Tassara et al., 2020), con mi coautoría.
Primero, la física
La ecuación de calor en estado estacionario se derivó analíticamente para tres versiones cada vez más detalladas de la corteza, hasta capas con su propia producción de calor y su propia conductividad térmica, verificando el álgebra con SymPy. SymPy también entregó las formas inversas: el valor de cada parámetro térmico que reproduce un flujo de calor superficial observado, que pasó a ser una herramienta más de la librería.
De ciclos a álgebra de arreglos
Ya trasladado de MATLAB a Python y ampliado con un módulo mecánico, el modelo seguía corriendo sobre ciclos anidados y tardaba unos 90 segundos por ejecución. Ajustarlo a las observaciones tomaba días. El rediseño hizo que cada cálculo corriera como operaciones de arreglos 3D en NumPy sobre toda el área de estudio.
- 30 veces más rápida: de unos 90 s a 3 s por ejecución, lo que hizo viable buscar parámetros de forma sistemática.
- Arreglos con coordenadas: una subclase de
ndarraylleva las coordenadas en cada resultado, así al colapsar la profundidad para calcular el flujo de calor superficial todo queda alineado. - Sin ciclos, incluso en lo difícil: detectar las capas elásticas y unir sus límites entre corteza y manto se hace con máscaras binarias y álgebra de arreglos.

Cómo se arma la librería. La geometría (naranja) y los parámetros (amarillo) alimentan los modelos (verde), que calculan cada campo (azul) sobre un vector de profundidad común. Las cajas dibujadas en 3D son arreglos 3D; las planas, mapas.
Ajustar el modelo a los datos
Con una base de datos de flujo de calor superficial reunida a partir de pozos en tierra y en el mar, fuentes geotermales y geofísica marina, se evaluaron miles de ejecuciones por RMSE, buscando los parámetros térmicos que mejor la explican.
Para el modelo mecánico, se probaron todas las combinaciones de las reologías más fuertes y más débiles publicadas para la corteza superior, la corteza inferior y el manto, incluido un manto de antearco debilitado por la serpentinización que provoca el agua liberada por la placa subductada. El espesor elástico de cada combinación se apiló en arreglos 3D, junto a las reologías que lo producían. La superficie a través de esas pilas más cercana al espesor elástico derivado de satélite entregó, para cada ubicación, la reología que mejor ajusta en cada capa.
Hacia una herramienta interactiva
Los modelos 3D completos eran demasiado pesados para servirlos en la web, así que la librería se reestructuró una vez más. Una clase central Lithosphere, construida sobre xarray, calcula solo el espacio que se le pide, como un único perfil, con la física en clases de ecuaciones térmicas y mecánicas y modelos intercambiables construidos sobre ellas. Una primera interfaz en Dash permitía elegir parámetros y explorar perfiles de temperatura y resistencia; la versión pública espera a que Python en el navegador madure.