Documente Academic
Documente Profesional
Documente Cultură
geociencias
Juan David Hernández Montenegro
1. Introducción
El modelamiento geodinámico a través de métodos numéricos ha cobrado gran importancia en los últimos
años gracias al desarrollo de diferentes lenguajes de programación (e.g. MATLAB, Python, C++, etc.) y al
acelerado progreso en hardware que ha resultado en un mejoramiento notable de la eficiencia de procesos
computacionales. Estos avances han permitido superar muchas de las limitaciones espaciales y temporales en
las observaciones realizadas por el hombre. De modo qué, la geologı́a ha dejado de ser una disciplina puramente
observacional e intuitiva para convertirse en una ciencia deductiva y predictiva que se fundamenta en gran medida
en la aplicación de métodos numéricos para explicar fenómenos que ocurren en diferentes escalas (Morra, 2017).
Actualmente, gran parte del conocimiento que se genera sobre la evolución térmica y tectónica de la Tierra
requiere de simular escenarios realistas con respecto a la dinámica de la litosfera y el manto. La solución de este
tipo de problemas implica modelar con buena resolución diferentes parámetros reológicos de materiales terrestres,
los cuales también dependen en gran medida de otros factores tales como la temperatura, la composición, la
tasa de deformación (strain-rate), el contenido de volátiles, el tamaño de grano y la presión de fluidos. Esto
resulta particularmente complejo, ya que, la ecuación de momentum, a esta escala, se convierte en una ecuación
diferencial parcial elı́ptica no-lineal cuya solución es todo un desafı́o computacional debido a la inmensa variación
en el orden de magnitud de los elementos y propiedades que conforman las matrices de solución (Gerya and
Yuen, 2003). Frente a la complejidad de este tipo de modelamiento, una propuesta relativamente reciente es el
uso de un método de marcadores-en-celda basados en caracteristicas combinados con un esquema de diferencias
finitas conservativas: ((Characteristics-based marker-in-cell method with conservative finite-difference scheme)).
Esta técnica permite resolver las ecuaciones de momentum, continuidad y temperatura en 2D mediante el uso
de una grilla escalonada con diferentes tipos de nodos y marcadores aleatoriamente distribuidos.
En este trabajo, presentaré el uso de este método mediante el código I2VIS originalmente diseñado y estruc-
turado por Gerya and Yuen (2003) y Gerya (2010). Para los objetivos del curso, el código ha sido modificado
de la versión presentada en Gerya (2010) para presentar un escenario geológico real (la simulación en la versión
original sólo incluye dos capas verticales en diez intervalos de tiempo). Adicionalmente, este código ha sido
traducido en su totalidad a lenguaje Python (originalmente escrito en MATLAB) con algunas ligeras modi-
ficaciones en el diseño de los marcadores y la estructura de los nodos, las cuales han sido necesarias para el
funcionamiento del código y la correcta reproducción de los resultados originales en Python.
1. Conservar stress bajo condiciones que involucren marcadas discontinuidades en la distribución de la vis-
cosidad.
2. Conservar el flujo de calor bajo condiciones que involucren marcadas variaciones de conductividad y
gradientes de temperatura en las capas quı́micas o térmicas cuya temperatura sea dependiente de la
1
3 Estructura del código I2VIS (Gerya, 2010) 2
conductividad.
3. Conservar propiedades de transporte tales como temperatura, especies quı́micas, viscosidad y densidad,
en flujos con un fuerte carácter advectivo.
Fig. 1: Diagrama de flujo para la implementación del código termomecánico I2VIS mediante la solución de las ecuaciones
de momentum, continuidad y temperatura. Tomado de: (Gerya, 2010).
El diagrama de flujo de la Figura 1 es un ejemplo de un código termomecánico tomado de Gerya (2010). Este
código soluciona en 2D las ecuaciones de momentum, continuidad y temperatura mediante el uso de diferencias
finitas y la técnica de markers-in-cell. De manera general, las etapas del algoritmo implican los siguientes
procedimientos dentro del código:
1. Calcular las propiedades fı́sicas escalares (η, ρ, α, CP , k, Hr ) para cada uno de los marcadores e interpolar
estas propiedades, junto con la temperatura advectiva, desde los marcadores a los nodos Eulerianos. Aplicar
condiciones de frontera para las temperaturas en los nodos que fueron interpoladas desde los marcadores.
2. Resolver las ecuaciones de momentum y continuidad en 2D con una formulación de presión y temperatura
sobre una grilla escalonada mediante la composición e inversión de la matriz global usando un método de
eliminación Gaussiana (simple de operar, estable y de alta precisión).
3 Estructura del código I2VIS (Gerya, 2010) 3
3. Definir un desplazamiento óptimo de tiempo ∆t para los marcadores basado en el campo de velocidad
calculado en el paso anterior.
4. Calcular el calor adiabático (Ha ) y el calor de cizalla (Hs ) en los nodos Eulerianos.
5. Definir un desplazamiento óptimo en el tiempo ∆t para la ecuación de temperatura. Gerya (2010) toma
el menor intervalo de tiempo de tres posibles: i ) el lı́mite del intervalo de tiempo absoluto en escala
geológica en el que se puedan observar los procesos geológicos observados (para el código aquı́ presentado
es de 1 M.a.); ii ) el tiempo en que se alcance el máximo desplazamiento relativo de los marcadores en la
grilla (tı́picamente entre 0.1 - 0.2) y iii ) el tiempo que tome el máximo cambio de temperatura permitido
(normalmente entre 1 y 20K).
8. Usar un esquema Runge-Kutta de cuarto orden en el espacio para mover todos los marcadores en la grilla
de acuerdo a la velocidad calculada globalmente... Regresar al paso 1 para continuar en el tiempo t + 1.
Para interpolar valores desde los marcadores hacia los nodos, como es el caso de la etapa 1 del algoritmo se
usa el esquema de la izquierda en la Figura 2b, el cual es una interpolación bilineal de la forma:
4 Desarrollo conceptual de cada etapa del algoritmo 4
Fig. 2: a) Configuración de nodos Eulerianos en una grilla escalonada irregularmente espaciada. Los sı́mbolos corres-
ponden a cuatro tipos de propiedades escalares, vectoriales y tensores en las direcciones x (dist. horizontal) y y
(profundidad) (Gerya, 2010). b) Representación esquemática de la interpolación de un parámetro B desde mar-
cadores Lagrangianos hacia nodos Eulerianos y viceversa. Cada uno de los marcadores tiene información sobre
T , coordenadas espaciales, componentes del vector de deformación; representando la historia de deformación y el
tipo de material.
X
Bm wm(i,j)
m
Bi,j = X , (1)
wm(i,j)
m
∆xm ∆ym
wm(i,j) = 1− × 1− .
∆x ∆y
En donde Bi,j es el valor de cualquier parámetro para el nodo ij, Bm es el valor de ese mismo parámetro en
el marcador m y wm(i,j) es el peso estadı́stico del marcador m en el nodo ij. Por otro lado, la interpolación de
parámetros fı́sicos desde los nodos Eulerianos a los marcadores Lagrangianos (como en el caso de la temperatura),
se hace también mediante una interpolación bilineal con los cuatro nodos vecinos (parte derecha de Figura 2b):
∆xm ∆ym ∆xm ∆ym
Bm = Bi,j 1 − 1− + Bi,j+1 1− (2)
∆x ∆y ∆x ∆y
∆xm ∆ym ∆xm ∆ym
+Bi+1,j 1 − + Bi+1,j+1 .
∆x ∆y ∆x∆y
tiempo para evitar la acumulación de un error de interpolación que crecerı́a en cada uno de estos. Finalmente,
para el problema inverso de traspasar valores de propiedades escalares, vectoriales y tensores desde los nodos
a los marcadores, el código I2VIS emplea el método de interpolación bilineal descrito por el esquema de la
Figura 2b y la Ecuación (2) en donde los valores de los cuatro nodos Eulerianos más cercanos a un marcador
se interpolan teniendo en cuenta las distancias ∆x y ∆y entre estos.
Etapa 2: Solución de las ecuaciones de momentum y continuidad. En dos dimensiones se tienen dos ecua-
ciones de flujo lento e incompresible en un campo gravitatorio uniforme:
0
∂σxx ∂σxy ∂P
Ecuación de Stokes − x + − = −ρgx , (3)
∂x ∂y ∂x
0
∂σyy ∂σyx ∂P
Ecuación de Stokes − y + − = −ρgy , (4)
∂y ∂x ∂y
En donde:
0
σxx = 2η ε̇xx ,
0
σyy = 2η ε̇yy ,
σxy = σyx = 2η ε̇xy ,
∂vx
ε̇xx = ,
∂x
∂vy
ε̇yy = ,
∂y
1 ∂vx ∂vy
ε̇xy = + .
2 ∂y ∂x
0 0
Por definición el esfuerzo desviatorio (que en adelante se llamará deviatoric stress) σyy = −σxx , además para
0
fluidos incompresibles en 2D ε̇yy = ε̇xx . De modo que se puede evitar usar los términos σyy y ε̇yy , reformulando
la Ecuación (4) a la forma:
0
∂σxx ∂σxy ∂P
− + − = −ρgy . (4a)
∂y ∂x ∂y
La conservación de masa está dada por la ecuación de continuidad incompresible en 2D:
∂vx ∂vy
+ = 0. (5)
∂x ∂y
Ahora se deben discretizar las ecuaciones (3) y (4) usando diferencias finitas conservativas. (NOTA: los
detalles del procedimiento de discretización pueden consultarse en Gerya (2010), Cap.7 Eq. 7.5 y 7.6).
La ecuación de Stokes en el eje x queda formulada para el nodo horizontal de velocidad vx(i+1/2,j) como:
0
∂σxx ∂σxy ∂P
+ − = −(ρgx )i+1/2,j , (6)
∂x i+1/2,j ∂y i+1/2,j ∂x i+1/2,j
0 0
σxx(i+1/2,j+1/2) − σxx(i+1/2,j−1/2) σxy(i+1,j) − σxy(i,j)
2 +
xj+1 − xj−1 yi+1 − yi
P(i+1/2,j+1/2) − P(i+1/2,j−1/2) ρ(i,j) + ρ(i+1,j)
−2 =− gx ,
xj+1 − xj−1 2
En donde:
4 Desarrollo conceptual de cada etapa del algoritmo 6
0 vx(i+1/2,j) − vx(i+1/2,j−1)
σxx(i+1/2,j−1/2) = 2ηn(i+1/2,j−1/2) ,
xj − xj−1
0 vx(i+1/2,j+1) − vx(i+1/2,j)
σxx(i+1/2,j+1/2) = 2ηn(i+1/2,j+1/2) ,
xj+1 − xj
Aquı́, los indices i, i + 1/2 y j, j + 1/2 se refieren, respectivamente, a las posiciones de los puntos nodales
Eulerianos que se observan en la Figura 2a.
De manera similar a la formulación anterior, la ecuación de Stokes para el nodo vertical de velocidad
vy(i,j+1/2) queda definida como:
0
∂σyy
∂σxy ∂P
+ − = −(ρgy )i,j+1/2 , (7)
∂y i,j+1/2 ∂x i,j+1/2 ∂y i,j+1/2
0 0
σyy(i+1/2,j+1/2) − σyy(i−1/2,j+1/2) σxy(i,j+1) − σxy(i,j)
2 +
yi+1 − yi−1 xj+1 − xj
P(i+1/2,j+1/2) − P(i−1/2,j+1/2) ρ(i,j) + ρ(i,j+1)
−2 =− gy ,
yi+1 − yi−1 2
En donde:
∂vx ∂vy
+ = 0, (8)
∂x i−1/2,j−1/2 ∂y i−1/2,j−1/2
En diferencias finitas:
vx(i−1/2,j) − vx(i−1/2,j−1) vy(i,j−1/2) − vy(i−1,j−1/2)
+ = 0.
xj − xj−1 yi − yi−1
Cuando se calculan estas ecuaciones para cada uno de los nodos, se forman varios arreglos matriciales.
La matriz global resultante se soluciona mediante un método directo de eliminación gaussiana. Esto tiene
como objetivo solucionar simultáneamente las ecuaciones de momentum (6) y (7), además de la ecuación de
continuidad (8). Mientras que las ecuaciones de momentum se solucionan para los nodos vx(i+1/2,j) y vy(i,j+1/2) ,
la ecuación de continuidad se soluciona para el nodo Pi−1/2,j−1/2 . La ecuación incompresible de continuidad
no incluye desde el inicio Pi−1/2,j1 /2 , pero la solución se garantiza por el orden de procesamiento durante la
inversión, i.e. la solución, de la matriz global basada en relacionar los nodos “secundarios”(e.g. j − 1/2, i + 1/2,
j + 3/2, etc., en la Figura 2a) con los nodos básicos (e.g. i, j, j + 1, i + 2, etc., en la Figura 2a). Lo anterior quiere
4 Desarrollo conceptual de cada etapa del algoritmo 7
decir que la Ecuación (8) para la presión en una celda determinada, por ejemplo, P(i−1/2,j−1/2) , es obtenida
después de calcular las ecuaciones (6) y (7) para los nodos vx y vy que rodean ese punto como se muestra
en la Figura 3. La precisión de la solución por este método es bastante buena, variando entre 10−15 y 10−13 ,
tales niveles de precisión dependen de las variaciones en la viscosidad ηn , por eso, cuando los contrastes en este
parámetro para nodos adyancentes son muy grandes (i.e. ≥ 106 ), se puede tener una precisión menor a 10−6
(Gerya and Yuen, 2003).
Fig. 3: Esquema usado para discretizar las ecuaciones de Stokes en una grilla escalonada de dos dimensiones
Etapas 4-7: Solución de la ecuación de temperatura. Cuando el sistema está asociado a un número de
ρα∆T gH 3 Cp
Rayleigh alto (Ra = ηk ) (i.e. flujos fuertemente dominados por advección, con baja viscosidad, donde
predomina el transporte de calor convectivo), la solución de la ecuación de calor puede resultar inestable (Ismail-
Zadeh and Tackley, 2010; Korenaga, 2013; Morra, 2017). Recordemos que se debe definir un ∆t apropiado para
resolver la ecuación de temperatura en el paso (5) del algoritmo siguiendo los tres criterios mencionados; la
ecuación de calor, sin embargo, depende inversamente de este término, por lo que se pueden generar intervalos
muy pequeños de tiempo y, como resultado, soluciones inestables con matrices globales casi singulares que
NO pueden ser invertidas, causando oscilaciones numéricas que resultan en una fuerte difusión numérica de la
temperatura en los nodos para cada intervalo de tiempo (Ismail-Zadeh and Tackley, 2010). Para resolver este
problema, Gerya and Yuen (2003) usan la forma Lagrangiana de la ecuación de conservación de calor, en donde
la temperatura T calculada en los nodos Eulerianos en cada intervalo de tiempo, es interpolada a los marcadores
de acuerdo a la Ecuación (2) y como muestra la Figura 2b para una variable B.
La forma Lagrangiana de la ecuación de conservación de calor está dada por la Ecuación (9), la cual toma
en cuenta, la generación de calor radiactivo (Hr ), adiabático (Ha ), de cizalla (Hs ) y latente (HL ):
DT ∂qx ∂qy
ρCp =− − + Hr + Ha + Hs + HL , (9)
Dt ∂x ∂y
En donde:
∂T
qx = −k ,
∂x
∂T
qy = −k ,
∂y
Hr = constante (W/m3 ),
DP ∂P ∂P
Ha = T α = Tα vx + vy ,
Dt ∂x ∂y
0 0 0
Hs = σxx ε̇xx + σyy ε̇yy + σxy ε̇xy + σyx ε̇yx = 2σxx ε̇xx + 2σxy ε̇xy .
Se puede notar en las ecuaciones (3), (4) y (5), que las variaciones de densidad han sido ignoradas (o se ha
asumido densidad constante) en el modelamiento; por ejemplo, la ecuación de continuidad para la conservación
de masa esta dada originalmente por: ∂ρ ∂t + ∇ · (ρv) = 0, sin embargo, al ignorar los cambios de densidad
4 Desarrollo conceptual de cada etapa del algoritmo 8
en el tiempo y en el espacio, esta ecuación queda reducida a la Ecuación (5) (Anderson and Wendt, 1995).
Esta simplificación, llamada Boussinesq approximation, es usual en modelamiento geodinámico. La densidad
está dada por ρ = ρ0 − αρ0 ∆T , pero para la corteza y el manto α es muy pequeño, por lo que ρ ≈ ρ0 . Lo
anterior, está de algún modo en contradicción con el uso Ha en la Ecuación (9), sin embargo, el cálculo del calor
adiabático también puede ser simplificado usando la misma aproximación, de manera que, ∂P ∂P
∂x y ∂y pueden ser
reemplazados por ρgx y ρgy , respectivamente, y entonces:
Ha ≈ T αρ(gx vx + gy vy ).
Luego de las consideraciones anteriores, es necesario expresar la ecuación de temperatura en diferencias
finitas. Lo primero es llevar la Ecuación (9) a una forma conservativa:
DT ∂qx ∂qy t t t t
ρi,j CP i,j =− − + Hr(i,j) + Ha(i,j) + Hs(i,j) + HL(i,j) , (10)
Dt i,j ∂x i,j ∂y i,j
t+∆t t
T(i,j) − T(i,j) qx(i,j+1/2) − qx(i,j−1/2) qy(i+1/2,j) − qy(i−1/2,j)
ρ(i,j) CP (i,j) = −2 −2
∆t xj+1 − xj−1 yi+1 − yi−1
t t t t
+ Hr(i,j) + Ha(i,j) + Hs(i,j) + HL(i,j) ,
Reagrupando los términos conocidos al lado derecho de la ecuación:
ρ(i,j) CP (i,j) t t t t t
= T(i,j) + Hr(i,j) + Ha(i,j) + Hs(i,j) + HL(i,j) .
∆t
En donde:
t+∆t t+∆t
1 Ti,j − Ti,j−1
qx(i,j−1/2) = − (ki,j−1 + ki,j ) ,
2 xj − xj−1
t+∆t t+∆t
1 Ti,j+1 − Ti,j
qx(i,j+1/2) = − (ki,j + ki,j+1 ) ,
2 xj+1 − xj
t+∆t t+∆t
1 Ti,j − Ti−1,j
qy(i−1/2,j) = − (ki−1,j + ki,j ) ,
2 yi − yi−1
t+∆t t+∆t
1 Ti+1,j − Ti,j
qy(i+1/2,j) = − (ki,j + ki+1,j ) ,
2 yi+1 − yi
t t vx(i−1/2,j) + vx(i+1/2,j) vy(i,j−1/2) + vy(i,j+1/2)
Ha(i,j) = Ti,j αi,j ρi,j gx + gy ,
2 2
t 1 0 1 0
Hs(i,j) = σ ε̇xx(i−1/2,j−1/2) + σxx(i−1/2,j+1/2) ε̇xx(i−1/2,j+1/2)
2 xx(i−1/2,j−1/2) 2
1 0 1 0
+ σyy(i−1/2,j−1/2) ε̇yy(i−1/2,j−1/2) + σyy(i−1/2,j+1/2) ε̇yy(i−1/2,j+1/2)
2 2
+ 2σxy(i,j) ε̇xy(i,j)
Aquı́ t + ∆t representa el siguiente momento en el tiempo y ∆t es el intervalo de tiempo estimado en la etapa
5 del algoritmo. Esta ecuación se resuelve para cada uno de los nodos Eulerianos y se encuentra la solución de la
temperatura mediante la inversión de la matriz global. A lo largo de este reporte se ha mencionado varias veces
este método de “inversión de la matriz globalçomo la solución de las ecuaciones de momentum, continuidad y
temperatura; lo cual no es más que la solución de un sistema matricial de la forma L · S = R en donde L es
la matriz de coeficientes, R es el vector con los términos conocidos y S es el vector con la solución. Una vez se
calcula la solución por el método implı́cito en la etapa 6 del algoritmo (Figura 1), los valores de temperatura
en los nodos son interpolados a los marcadores usando la Ecuación (2) (etapa 7 del algoritmo).
5 Aplicaciones en modelamiento geodinámico 9
Etapa 8: Advección de marcadores mediante esquema Runge-Kutta. En esta última etapa los marcadores
son desplazados en dirección horizontal y vertical de acuerdo a los vectores de velocidad previamente calculados
en el paso 2. Para ello, se usa una técnica conocida como esquemas Runge-Kutta, en los que se calculan los
componentes de la velocidad efectiva del material (en este caso los marcadores) entre un periodo de tiempo t y
otro t + ∆t. El cálculo de esta velocidad efectiva se obtiene a partir de la velocidad del material en diferentes
puntos del espacio que varı́an desde 2 hasta 4 dependiendo del orden del esquema. En este caso, se usa un
esquema de cuarto orden que esta dado para cuatro puntos A, B, C y D como sigue:
1
vxef f = (vxA + 2vxB + 2vxC + vxD ),
6
1
vxef f = (vyA + 2vyB + 2vyC + vyD ),
6
Si la velocidad se calcula sobre el punto A, entonces sus coordenadas son conocidas y las coordenadas de los
puntos restantes estarán dadas por:
∆t ∆t
xB = xtA + vxA , t
yB = yA + vyA ,
2 2
∆t ∆t
xC = xtA + vxB , t
yC = yA + vyB ,
2 2
∆t ∆t
xD = xtA + vxC , t
yD = yA + vyC ,
2 2
Luego de desplazar los marcadores en el espacio Lagrangiano, el sistema que se modela tiene ahora una
nueva configuración inicial determinada por la distribución de los marcadores dentro de la grilla luego de la
advección de los marcadores usando el esquema Runge-Kutta. Ası́, el algoritmo puede retornar a la etapa 1 para
ejecutar de nuevo el proceso en el tiempo siguiente.
Fig. 5: Modelo de densidad de una raı́z densa y profunda de la corteza continental ((Campbell and Davies, 2017)
)
modelamiento siguiendo el procedimiento descrito en Sizova et al. (2015). Esto permitirı́a tener una mejor
idea acerca de los cambios de fase y densidad que llevan a la generación de corteza de menor densidad,
dando además pistas acerca del inicio de la subducción y el emplazamiento de continentes de composición
félsica.
El procesamiento de matrices con valores de tipo flotante es significativamente menos eficiente en Python
con respecto a MATLAB, al menos en términos de la conversión fiel del código entre estos dos lenguajes.
Un mejoramiento que podrı́a realizarse en el futuro es una estructuración más adecuada de los procesos
y operaciones entre matrices de manera que el manejo de la memoria sea más eficiente y la velocidad de
ejecución en cada intervalo de tiempo sea mayor.
La visualización en 2D de los materiales usados en el modelamiento podrı́a ser mejorada mediante el realce
de contraste de las imágenes resultantes y la selección de rampas de color sin interpolación que permitan
asignar colores especı́ficos a diferentes tipos de materiales. De esta manera se podrı́a hacer un seguimiento
más apropiado de las rocas y su desplazamiento en el medio continuo.
7. Material Suplementario
Junto con este informe se presentan: dos archivos con el código I2VIS implementado en Python con los
modelos geológicos que se presentaron anteriormente, cuatro videos que muestran la evolución de los dos modelos
geológicos y
Referencias
Anderson, J. D. and Wendt, J. (1995). Computational fluid dynamics, volume 206. Springer.
Campbell, I. H. and Davies, D. R. (2017). Raising the continental crust. Earth and Planetary Science Letters,
460:112–122.
Sizova, E., Gerya, T., Stüwe, K., and Brown, M. (2015). Generation of felsic crust in the Archean: A geodynamic
modeling perspective. Precambrian Research, 271:198–224.
Turcotte, D. and Schubert, G. (2014). Geodynamics. Cambridge University Press.