{"id":1102,"date":"2026-08-19T09:48:38","date_gmt":"2026-08-19T09:48:38","guid":{"rendered":"https:\/\/matforge.org\/?p=1102","raw":"https:\/\/matforge.org\/?p=1102"},"modified":"2026-08-19T09:48:38","modified_gmt":"2026-08-19T09:48:38","slug":"geophysics-applications-with-python-groundwater-flow-and-seismic-modeling","status":"publish","type":"post","link":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/","title":{"rendered":"Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico","raw":"Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>Los fen\u00f3menos geof\u00edsicos, desde el flujo de agua subterr\u00e1nea hasta la propagaci\u00f3n de las ondas s\u00edsmicas, se rigen por ecuaciones diferenciales parciales que describen c\u00f3mo las cantidades f\u00edsicas cambian a trav\u00e9s del espacio y el tiempo. La publicaci\u00f3n 242 introdujo el marco PDE m\u00e1s amplio para el modelado de sistemas de tierra, que cubre los m\u00e9todos de volumen finito y las herramientas disponibles para abordar estas ecuaciones a escala. Este art\u00edculo profundiza en dos dominios pr\u00e1cticos donde Python ha transformado los flujos de trabajo geof\u00edsicos: <strong>Modelado de flujo de agua subterr\u00e1nea<\/strong> y <strong>Modelado de ondas s\u00edsmicas<\/strong>.<\/p>\n<p>En ambos dominios, Python ha cambiado el paradigma de un software patentado de caja negra a una investigaci\u00f3n transparente y reproducible. Ya sea que est\u00e9 configurando una simulaci\u00f3n de agua subterr\u00e1nea Modflow con Flopy o implementando un solucionador de ecuaciones de ondas de diferencia finita con DeVito, Python proporciona la misma combinaci\u00f3n de claridad matem\u00e1tica, flexibilidad del ecosistema y apoyo comunitario que ha remodelado la computaci\u00f3n cient\u00edfica en todas las disciplinas.<\/p>\n<p>Recorreremos ejemplos de c\u00f3digos de Python concretos, compararemos ecosistemas de herramientas (modflow\/flopy vs Devito\/Sweep) y mostraremos c\u00f3mo seleccionar la herramienta adecuada para su problema geof\u00edsico espec\u00edfico.<\/p>\n<h2>Modelado de flujo de agua subterr\u00e1nea con ModFlow y Flopy<\/h2>\n<p>El flujo de agua subterr\u00e1nea a trav\u00e9s de medios porosos es una de las aplicaciones m\u00e1s maduras de la geof\u00edsica computacional. Las ecuaciones gobernantes combinan la ley de Darcy con la conservaci\u00f3n de masas, lo que produce una PDE de tipo difusi\u00f3n que, a pesar de su relativa simplicidad en comparaci\u00f3n con la propagaci\u00f3n de ondas s\u00edsmicas, presenta desaf\u00edos pr\u00e1cticos en la parametrizaci\u00f3n, las condiciones de contorno y la estabilidad num\u00e9rica.<\/p>\n<h3>La ecuaci\u00f3n de gobierno<\/h3>\n<p>El flujo de agua subterr\u00e1nea sigue <strong>La ley de Darcy<\/strong> combinada con la conservaci\u00f3n de la masa, produciendo el PDE de tipo difusi\u00f3n:<\/p>\n<p>\u2202\u2202X(Kxx\u2202H\u2202x)+\u2202\u2202Y(Kyy\u2202H\u2202Y) +\u2202\u2202Z(KZZ\u2202H\u2202Z)+W=SS\u2202H\u2202T<br \/> frac{parcial}{parcial x}left(k_{xx}frac{parcial h}{parcial x}derecho) + frac{parcial}{parcial y}left(k_{yy}frac{parcial h}{parcial y}derecho) + frac{parcial}{parcial z}left(k_{zz}frac{parcial h}{parcial z}derecho) + w = s_sfrac{parcial h}{parcial t}<\/p>\n<p>d\u00f3nde<\/p>\n<p>charl<\/p>\n<p>es la cabeza hidr\u00e1ulica,<\/p>\n<p>kar<\/p>\n<p>es conductividad hidr\u00e1ulica,<\/p>\n<p>uu<\/p>\n<p>representa fuentes y sumideros (pozos, recarga), y<\/p>\n<p>SS_S<\/p>\n<p>es un almacenamiento espec\u00edfico [1].<\/p>\n<p>La discretizaci\u00f3n de la discretizaci\u00f3n de diferencias finitas subyacente a Modflow es adecuada para redes estructuradas, lo que lo convierte en el est\u00e1ndar de la industria para estudios regionales de aguas subterr\u00e1neas. Pero trabajar directamente con los archivos de entrada de ModFlow es tedioso: ah\u00ed es donde entra Flopy.<\/p>\n<h3>Primeros pasos con Flopy<\/h3>\n<p><a href=\"https:\/\/github.com\/modflowpy\/flopy\" target=\"_blank\" rel=\"nofollow noopener\">Flopy<\/a> es un paquete de Python que automatiza los flujos de trabajo de Modflow 6: genera archivos de entrada, ejecuta simulaciones y analiza la salida para la visualizaci\u00f3n. El ecosistema se ha expandido m\u00e1s all\u00e1 de Flopy mismo para incluir <code>modflow-setup<\/code> (USGS, 2022) para la automatizaci\u00f3n del flujo de trabajo, <code>SFRmaker<\/code> para el enrutamiento del agua superficial y <code>Linesink-Maker<\/code> para el enrutamiento de flujo de flujo. Juntos, forman un ecosistema integral para la construcci\u00f3n y automatizaci\u00f3n de modelos de aguas subterr\u00e1neas [2].<\/p>\n<p>Aqu\u00ed hay un pr\u00e1ctico flopy de inicio r\u00e1pido para un modelo de agua subterr\u00e1nea simple:<\/p>\n<div>\n<pre><code>import flopy\nimport numpy as np\n\n# Define model parameters\nmodel_name = 'simple_groundwater'\ntop = 100.0 # model top elevation\nbotm = 0.0 # bottom elevation\nnlay = 10 # number of layers\nnrow = 50 # number of rows\nncol = 50 # number of columns\n\n# Create model simulation\nsim = flopy.mf6.MFSimulation(sim_name=model_name, exe_name='mf6')\nibs = flopy.mf6.ModIbs(sim)\nsts = flopy.mf6.ModSts(sim)\n\n# Create model domain (discharge package)\ndis = flopy.mf6.MFDischarge(sim, print_flows=True, save_first=True)\n\n# Set up numerical grid\ngrid = flopy.mf6.MFModelGrid((nlay, nrow, ncol), top=top)\n\n# Define hydraulic properties\nk = np.full((nlay, nrow, ncol), 1e-3) # hydraulic conductivity (m\/s)\nhsy = np.full((nrow, ncol), 95.0) # head at surface (head boundary)\nss = np.full((nlay, nrow, ncol), 1e-4) # specific storage\n\n# Create simulation and run\nsim.create_simulation()\n# ... set up stress packages, run simulation<\/code><\/pre>\n<\/div>\n<p>La ventaja clave de Flopy es que reemplaza docenas de archivos de entrada de ModFlow con una sola API de Python. Define la geometr\u00eda de la cuadr\u00edcula, las propiedades hidr\u00e1ulicas y las condiciones de los l\u00edmites como objetos de Python, y Flopy maneja la generaci\u00f3n, validaci\u00f3n y ejecuci\u00f3n de archivos.<\/p>\n<h3>Visualizaci\u00f3n y resultados<\/h3>\n<p>Las capacidades de visualizaci\u00f3n de Flopy hacen que sea sencillo interpretar los resultados de la simulaci\u00f3n. Despu\u00e9s de ejecutar una simulaci\u00f3n:<\/p>\n<div>\n<pre><code># Load model results\nmf = flopy.modflow.Modflow(sim)\nh = mf.hds.get_data()\n\n# Plot head contours and flow vectors\nmodel.plot_head()\nmodel.plot_vector_flow()<\/code><\/pre>\n<\/div>\n<p>Esto produce gr\u00e1ficos de contorno de cabeza y visualizaci\u00f3n de flujo vectorial [3] \u2014 el tipo de salida que utilizan los hidroge\u00f3logos para interpretar reg\u00edmenes de flujo, identificar trayectorias de flujo y validar el comportamiento del modelo.<\/p>\n<p>La salida de visualizaci\u00f3n de Flopy muestra los contornos de la cabeza hidr\u00e1ulico superpuestos con vectores de flujo, lo que facilita la comprensi\u00f3n de los patrones de movimiento del agua subterr\u00e1nea en sistemas acu\u00edferos complejos. La visualizaci\u00f3n de inicio r\u00e1pido de flopy demuestra claramente esta capacidad.<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/modflowpy\/flopy\/develop\/examples\/images\/quickstart.png\" alt=\"Visualizaci\u00f3n de inicio r\u00e1pido de flopy que muestra los contornos de la cabeza y el flujo vectorial. Atribuci\u00f3n: Modflowpy.\" width=\"1200\" height=\"675\"><figcaption aria-hidden=\"true\">Visualizaci\u00f3n de inicio r\u00e1pido de flopy que muestra los contornos de la cabeza y el flujo vectorial. Atribuci\u00f3n: Modflowpy.<\/figcaption><\/figure>\n<p><strong>Atribuci\u00f3n<\/strong>: Flopy QuickStart.png \u2014 Modflowpy<\/p>\n<h3>Flujo de trabajo pr\u00e1ctico con ModFlow-Setup<\/h3>\n<p>Para proyectos m\u00e1s grandes, <a href=\"https:\/\/github.com\/doi-usgs\/modflow-setup\" target=\"_blank\" rel=\"nofollow noopener\">modflow-setup<\/a> Proporciona un enfoque de configuraci\u00f3n basado en YAML que Construye autom\u00e1ticamente cuadr\u00edculas a partir de datos de origen. Esto representa el cambio moderno hacia la automatizaci\u00f3n del flujo de trabajo: se define la estructura del modelo en los archivos de configuraci\u00f3n declarativos y la configuraci\u00f3n de Modflow se encarga de la geometr\u00eda tediosa y la asignaci\u00f3n de propiedades.<\/p>\n<p>El flujo de trabajo pr\u00e1ctico se ve as\u00ed:<\/p>\n<ol type=\"1\">\n<li><strong>Definir las propiedades de la red y del acu\u00edfero<\/strong> (conductividad, coeficientes de almacenamiento, espesores de capa)<\/li>\n<li><strong>Establecer condiciones de contorno<\/strong> (cabezas constantes, pozos, tasas de recarga)<\/li>\n<li><strong>Ejecutar simulaci\u00f3n<\/strong> a trav\u00e9s de la ejecuci\u00f3n de Modflow 6 automatizada de Flopy<\/li>\n<li><strong>Visualizar resultados<\/strong> con las utilidades de trazado de Flopy o exportar a ParaView para renderizado en 3D<\/li>\n<\/ol>\n<p>Para los hidroge\u00f3logos que trabajan con modelos regulatorios de aguas subterr\u00e1neas, este flujo de trabajo es esencial porque ModFlow sigue siendo el est\u00e1ndar de la industria para la regulaci\u00f3n y gesti\u00f3n de aguas subterr\u00e1neas aplicadas [4]. Flopy cierra la brecha entre la creaci\u00f3n de prototipos de investigaci\u00f3n y los flujos de trabajo de producci\u00f3n: obtienes la reproducibilidad y flexibilidad de Python mientras mantienes la aceptaci\u00f3n regulatoria de los resultados de ModFlow.<\/p>\n<h2>Modelado de ondas s\u00edsmicas con Python<\/h2>\n<p>El modelado de ondas s\u00edsmicas es fundamentalmente diferente del flujo de agua subterr\u00e1nea. Donde el agua subterr\u00e1nea sigue las ecuaciones de tipo difusi\u00f3n que suavizan las caracter\u00edsticas n\u00edtidas a lo largo del tiempo, la propagaci\u00f3n de ondas s\u00edsmicas sigue la <strong>ecuaci\u00f3n de ondas el\u00e1sticas<\/strong>, una PDE hiperb\u00f3lica de segundo orden que preserva los frentes de onda n\u00edtidos y requiere un cuidado num\u00e9rico cuidadoso para evitar la dispersi\u00f3n artificial.<\/p>\n<h3>La ecuaci\u00f3n de onda<\/h3>\n<p>La ecuaci\u00f3n de onda el\u00e1stica gobierna la propagaci\u00f3n de ondas s\u00edsmicas:<\/p>\n<p>\u22022\ud835\udc2e\u2202t2=\u2207\u22c5(\ud835\udc02:\u2207\ud835\udc2e)+\ud835\udc1f<br \/> frac{parcial^2 mathbf{u}}{parcial t^2} = nabla cdot (mathbf{c} : nabla mathbf{u}) + mathbf{f}<\/p>\n<p>d\u00f3nde<\/p>\n<p>\ud835\udc2emathbf{u}<\/p>\n<p>es el desplazamiento,<\/p>\n<p>\ud835\udc02Matem\u00e1ticas{c}<\/p>\n<p>es el tensor de rigidez, y<\/p>\n<p>\ud835\udc1fmathbf{f}<\/p>\n<p>representa las fuerzas del cuerpo.<\/p>\n<p>A diferencia del flujo de agua subterr\u00e1nea (donde la presi\u00f3n se difunde y los gradientes agudos), las ondas s\u00edsmicas se propagan con una dispersi\u00f3n m\u00ednima en miles de kil\u00f3metros, lo que significa que los esquemas num\u00e9ricos deben preservar la nitidez del frente de onda para producir resultados precisos. Esto hace que los m\u00e9todos de dominio del tiempo de diferencia finita (FDTD) sean particularmente atractivos porque son eficientes y precisos para los problemas de propagaci\u00f3n de ondas.<\/p>\n<h3>DeVito: DSL simb\u00f3lico para solucionadores de ecuaciones de onda<\/h3>\n<p><a href=\"https:\/\/slim.gatech.edu\/research\/modelling\" target=\"_blank\" rel=\"nofollow noopener\">devito<\/a> (Grupo Slim de Georgia Tech) genera un c\u00f3digo C optimizado para Simulaciones de diferencia finita de onda-ecuaci\u00f3n utilizando matem\u00e1ticas simb\u00f3licas simpy. El marco est\u00e1 dise\u00f1ado para investigadores que desean propagaci\u00f3n de ondas diferenciables, esencial para los flujos de trabajo de inversi\u00f3n de forma de onda completa (FWI) y de migraci\u00f3n de tiempo inverso (RTM).<\/p>\n<p>Aqu\u00ed est\u00e1 el ejemplo de modelado directo de Devito TLE (conjunto de tiempo de retraso) del tutorial delgado:<\/p>\n<div>\n<pre><code>from devito import Grid, TimeAxis, Function, TimeFunction\nfrom devito import Eq, Operator, where\nfrom scipy import sparse\n\n# Define grid dimensions\nnx, nz = 200, 200\nspace_order = 4\ntime_order = 2\ntime_steps = 100\n\n# Create computational grid\ngrid = Grid(shape=(nx, nz))\n\n# Define velocity model (m\/s)\nv = Function(name='velocity', grid=grid, data=1500.0 * np.ones((nx, nz)))\n\n# Initialize wavefield\nu = TimeFunction(name='u', grid=grid, time_order=time_order)\n\n# Set up initial conditions\nsrc = TimeFunction(name='source', grid=grid)\n\n# Define wave equation operator\neq = Eq(u.forward, u.back + src + v**2 * u.laplacian)\n\n# Create and run operator\nop = Operator(eq)\nop()\n\n# Analyze results\nimport matplotlib.pyplot as plt\nplt.imshow(u.data[-1].T, cmap='viridis')\nplt.title('Wavefield snapshot')\nplt.show()<\/code><\/pre>\n<\/div>\n<p>Este c\u00f3digo demuestra el flujo de trabajo clave: Defina una cuadr\u00edcula, especifique un modelo de velocidad, configure el operador de ecuaci\u00f3n de onda y ejec\u00fatelo. El motor simb\u00f3lico basado en Sympy de DeVito traduce la ecuaci\u00f3n de alto nivel en un c\u00f3digo C optimizado que se ejecuta a un rendimiento casi nativo, una caracter\u00edstica cr\u00edtica cuando se simulan grandes conjuntos de datos s\u00edsmicos.<\/p>\n<p>La animaci\u00f3n de propagaci\u00f3n de ondas hacia adelante y hacia atr\u00e1s del grupo delgado en el modelo Marmousi muestra el tipo de resultados que produce DeVito: clara propagaci\u00f3n del frente de onda a trav\u00e9s de un modelo de velocidad realista [5]. Esta animaci\u00f3n demuestra la evoluci\u00f3n de campo de onda hacia adelante y hacia atr\u00e1s, los mismos campos de onda que sustentan los flujos de trabajo de FWI.<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/slim.gatech.edu\/Website-ResearchWebInfo\/Modelling\/Figures\/Forward.gif\" alt=\"Animaci\u00f3n delgada hacia adelante\/atr\u00e1s de onda 2D en el modelo Marmousi. Atribuci\u00f3n: Slim Group, Georgia Tech.\" width=\"1200\" height=\"675\"><figcaption aria-hidden=\"true\">Animaci\u00f3n delgada hacia adelante\/atr\u00e1s de onda 2D en el modelo Marmousi. Atribuci\u00f3n: Slim Group, Georgia Tech.<\/figcaption><\/figure>\n<p><strong>Atribuci\u00f3n<\/strong>: Slim Forward.gif \u2014 Slim Group, Georgia Tech<\/p>\n<h3>Barrido 2026: Diferenciaci\u00f3n autom\u00e1tica para inversi\u00f3n s\u00edsmica<\/h3>\n<p>El desarrollo reciente m\u00e1s significativo en el modelado s\u00edsmico de Python es <a href=\"https:\/\/arxiv.org\/html\/2604.14189v1\" target=\"_blank\" rel=\"nofollow noopener\">Sweep<\/a>, un art\u00edculo de ARXIV publicado en abril de 2026 que introduce la diferenciaci\u00f3n autom\u00e1tica como alternativa principal a las derivaciones manuales adjuntas para la inversi\u00f3n s\u00edsmica. Esto representa un cambio de paradigma.<\/p>\n<p>La inversi\u00f3n s\u00edsmica tradicional utiliza el m\u00e9todo del estado adjunto, donde los investigadores derivan manualmente ecuaciones adjuntas y las implementan como c\u00f3digos de propagaci\u00f3n de tiempo inverso separados. Sweep automatiza este proceso: al usar la diferenciaci\u00f3n autom\u00e1tica (AD) con esquemas de pasos de tiempo nativos, los profesionales pueden calcular gradientes directamente desde su modelo directo sin derivar ecuaciones adjuntas a mano.<\/p>\n<p>Soportes de barrido:<\/p>\n<ul>\n<li>Ecuaciones de onda ac\u00fastica, el\u00e1stica y anisotr\u00f3pica (VTI, TTI)<\/li>\n<li>Diferenciaci\u00f3n autom\u00e1tica con backends JAX y PyTorch<\/li>\n<li>Modelado por lotes multi-GPU para inversi\u00f3n a gran escala<\/li>\n<li>Marco de ecuaciones de onda unificado que reemplaza los c\u00f3digos directos\/adjuntos separados<\/li>\n<\/ul>\n<p>El contraste con DeVito es instructivo: DeVito usa expresiones DSL simb\u00f3licas donde escribes la ecuaci\u00f3n de onda como f\u00f3rmula simb\u00f3lica y DeVito genera un c\u00f3digo C optimizado a partir de ella. Sweep adopta un enfoque diferente: escribe c\u00f3digo de Python nativo para el modelo de avance y los marcos de anuncios (JAX, PyTorch) calculan gradientes autom\u00e1ticamente a trav\u00e9s de la diferenciaci\u00f3n en modo inverso.<\/p>\n<p>Para los practicantes, esto significa:<\/p>\n<ul>\n<li><strong>Devito (DSL simb\u00f3lico)<\/strong>: c\u00f3digo C expl\u00edcito y optimizado; Requiere sintaxis de aprendizaje de DSL; Gradientes calculados a trav\u00e9s de la generaci\u00f3n adjunta simb\u00f3lica<\/li>\n<li><strong>Sweep (diferenciaci\u00f3n autom\u00e1tica)<\/strong>: c\u00f3digo de Python nativo; gradientes calculados autom\u00e1ticamente por AD; Backends flexibles (JAX, PyTorch); Potencialmente m\u00e1s intuitivo para los desarrolladores de Python<\/li>\n<\/ul>\n<h3>Deepwave: gradientes de estado adjunto acelerados por GPU<\/h3>\n<p><a href=\"https:\/\/www.gpi.kit.edu\/english\/518_951.php\" target=\"_blank\" rel=\"nofollow noopener\">onda profunda<\/a> (Kit Geophysical Institute) Implementa la propagaci\u00f3n de ondas diferenciables en PyTorch, lo que permite la inversi\u00f3n de forma de onda completa acelerada por GPU y el c\u00e1lculo del gradiente de estado adjunto. A diferencia del enfoque simb\u00f3lico de DeVito, DeepWave trabaja directamente con los tensores de PyTorch y calcula gradientes a trav\u00e9s de la diferenciaci\u00f3n autom\u00e1tica, pero requiere una implementaci\u00f3n adjunta expl\u00edcita en lugar de un anuncio de extremo a extremo.<\/p>\n<p>DeepWave es particularmente \u00fatil cuando desea una aceleraci\u00f3n de GPU con el ecosistema de PyTorch, y se siente c\u00f3modo implementando expl\u00edcitamente m\u00e9todos de estado adjunto.<\/p>\n<h3>SIMWAVE: propagaci\u00f3n de ondas ac\u00fasticas de alto rendimiento<\/h3>\n<p><a href=\"https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0098300417300584\" target=\"_blank\" rel=\"nofollow noopener\">SimWave<\/a>, publicado en 2025, llena un vac\u00edo en el ecosistema s\u00edsmico de Python: propagaci\u00f3n de ondas ac\u00fasticas de alto rendimiento con backends verificados de C y GPU. Cierra la brecha entre los prototipos de investigaci\u00f3n y las herramientas geof\u00edsicas de producci\u00f3n, \u00fatiles cuando se necesita un rendimiento que coincida con los c\u00f3digos propietarios.<\/p>\n<h2>Orientaci\u00f3n pr\u00e1ctica: elegir su herramienta<\/h2>\n<p>Seleccionar la herramienta adecuada depende de su problema espec\u00edfico: dominio, escala y el papel de su modelo en el flujo de trabajo de investigaci\u00f3n. Aqu\u00ed hay una comparaci\u00f3n pr\u00e1ctica:<\/p>\n<h2>Gu\u00eda de selecci\u00f3n de herramientas<\/h2>\n<table>\n<colgroup>\n<col style=\"width: 18%;\">\n<col style=\"width: 33%;\">\n<col style=\"width: 20%;\">\n<col style=\"width: 27%;\"> <\/colgroup>\n<thead>\n<tr>\n<th>Gui\u00f3n<\/th>\n<th>herramienta recomendada<\/th>\n<th>fortalezas<\/th>\n<th>Cu\u00e1ndo evitar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Flujo de agua subterr\u00e1nea<\/td>\n<td><strong>Modflow\/Flopy<\/strong><\/td>\n<td>est\u00e1ndar de la industria; aceptaci\u00f3n regulatoria; gran ecosistema<\/td>\n<td>Acoplamiento multif\u00edsico personalizado (utilice Fipy en su lugar)<\/td>\n<\/tr>\n<tr>\n<td>PDE de aguas subterr\u00e1neas personalizada<\/td>\n<td><strong>fip<\/strong><\/td>\n<td>flexible; admite sistemas acoplados; nativo de pit\u00f3n<\/td>\n<td>Modelado regulatorio regional (utilice Modflow)<\/td>\n<\/tr>\n<tr>\n<td>Modelado delantero s\u00edsmico (FWI-Ready)<\/td>\n<td><strong>Devito<\/strong><\/td>\n<td>diferenciable; Generaci\u00f3n de c\u00f3digo C optimizada; Ecosistema delgado<\/td>\n<td>Si necesita una diferenciaci\u00f3n autom\u00e1tica fuera de la caja (use barrido)<\/td>\n<\/tr>\n<tr>\n<td>Inversi\u00f3n s\u00edsmica con AD<\/td>\n<td><strong>Barrido<\/strong><\/td>\n<td>diferenciaci\u00f3n autom\u00e1tica; No se necesita adjunto manual; Multi-GPU<\/td>\n<td>Si est\u00e1 bloqueado solo en PyTorch (considere DeepWave)<\/td>\n<\/tr>\n<tr>\n<td>Flujos de trabajo de PyTorch acelerados por GPU<\/td>\n<td><strong>Onda profunda<\/strong><\/td>\n<td>Pytorch nativo; aceleraci\u00f3n de GPU; Validaci\u00f3n de kit<\/td>\n<td>Si necesita un c\u00e1lculo de gradiente autom\u00e1tico sin adjunto manual (use barrido)<\/td>\n<\/tr>\n<tr>\n<td>Modelado ac\u00fastico de calidad de producci\u00f3n<\/td>\n<td><strong>Simwave<\/strong><\/td>\n<td>Backends C\/GPU verificados; alto rendimiento<\/td>\n<td>Prototipado de investigaci\u00f3n (devito o barrido pueden ser m\u00e1s flexibles)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Mejores pr\u00e1cticas para el modelado geof\u00edsico<\/h3>\n<p>Ya sea que est\u00e9 modelando aguas subterr\u00e1neas u ondas s\u00edsmicas, estas pautas pr\u00e1cticas se aplican en ambos dominios:<\/p>\n<ol type=\"1\">\n<li><strong>Comienza con benchmarks anal\u00edticos<\/strong>: antes de ejecutar modelos complejos, verifica tu implementaci\u00f3n con soluciones anal\u00edticas conocidas. Los problemas de referencia publicados de ModFlow y los cuadernos tutoriales de DeVito brindan esta base.<\/li>\n<li><strong>Preste atenci\u00f3n a la condici\u00f3n CFL<\/strong>: en los pasos de tiempo s\u00edsmicos expl\u00edcitos, el paso de tiempo debe satisfacer\n<p>\u0394t\u2264\u0394x2vmaxdelta t leq frac{delta x}{2v_{max}}donde<\/p>\n<p>vmaxv_{max}es la velocidad m\u00e1xima. Violar la CFL conduce a la inestabilidad num\u00e9rica, un error com\u00fan en el modelado de avance s\u00edsmico.<\/p>\n<\/li>\n<li><strong>Utilice las condiciones de contorno apropiadas<\/strong>: para las aguas subterr\u00e1neas, agregue zonas de amortiguamiento con l\u00edmites de cabeza fija lejos de su regi\u00f3n de inter\u00e9s. Para ondas s\u00edsmicas, utilice condiciones de contorno absorbentes (capas perfectamente adaptadas) para evitar reflejos artificiales.<\/li>\n<li><strong>Validar a m\u00faltiples escalas<\/strong>: Realice estudios de refinamiento de la red para garantizar que sus resultados converjan. Esto es esencial para el modelado geof\u00edsico cre\u00edble y debe documentarse para la reproducibilidad.<\/li>\n<li><strong>Versiones y par\u00e1metros del modelo de documento<\/strong>: registre las versiones exactas del software, los archivos de par\u00e1metros y las semillas aleatorias utilizadas. Esto es esencial para la reproducibilidad y la aceptaci\u00f3n regulatoria en el modelado de aguas subterr\u00e1neas.<\/li>\n<\/ol>\n<h3>Errores comunes a evitar<\/h3>\n<p>Los errores m\u00e1s frecuentes que veo en los proyectos de modelado geof\u00edsico son:<\/p>\n<ul>\n<li><strong>Comenzando con el solucionador incorrecto para su escala de problemas<\/strong>: ModFlow est\u00e1 optimizado para estudios regionales de aguas subterr\u00e1neas. Para la multif\u00edsica acoplada (por ejemplo, flujo de fluido + transporte de calor), puede ser m\u00e1s apropiado Fipy o DeVito.<\/li>\n<li><strong>Ignorar la condici\u00f3n CFL en pasos de tiempo expl\u00edcitos<\/strong>: esto conduce a la inestabilidad num\u00e9rica en las simulaciones s\u00edsmicas. Siempre verifique su paso de tiempo con el criterio CFL antes de ejecutar grandes simulaciones.<\/li>\n<li><strong>Pobres conjeturas iniciales para problemas de inversi\u00f3n<\/strong>: los problemas inversos no est\u00e1n planteados; Los modelos de arranque deficientes conducen a m\u00ednimos locales o resultados no f\u00edsicos. Use regularizaci\u00f3n (agilidad, l\u00edmites), inversi\u00f3n jer\u00e1rquica (comienza con modelos m\u00e1s simples) y restricciones geol\u00f3gicas a partir de datos independientes.<\/li>\n<li><strong>Pruebas de convergencia inadecuadas<\/strong>: Aceptar las tolerancias del solucionador produce resultados inexactos de manera demasiado vaga; Demasiado desperdicios de c\u00e1lculo. Realice estudios de convergencia de malla: refine su cuadr\u00edcula hasta que las salidas clave se estabilicen.<\/li>\n<li><strong>Olvidar verificar las condiciones de los l\u00edmites<\/strong>: los l\u00edmites faltantes o mal elegidos introducen artefactos que contaminan los resultados. Realice un an\u00e1lisis de dominio de influencia para asegurarse de que sus l\u00edmites est\u00e9n lo suficientemente lejos de su regi\u00f3n de inter\u00e9s.<\/li>\n<\/ul>\n<h2>Resumen y pr\u00f3ximos pasos<\/h2>\n<p>Este art\u00edculo cubri\u00f3 dos dominios geof\u00edsicos donde Python ha transformado los flujos de trabajo de modelado:<\/p>\n<p><strong>Flujo de agua subterr\u00e1nea con Modflow\/Flopy<\/strong> es el est\u00e1ndar de la industria para el modelado de aguas subterr\u00e1neas aplicadas. Flopy automatiza los flujos de trabajo de ModFlow 6, desde la construcci\u00f3n del modelo hasta la ejecuci\u00f3n hasta la visualizaci\u00f3n, mientras que el ecosistema expandido (Modflow-Setup, SFRMaker) proporciona automatizaci\u00f3n modular para proyectos a escala de producci\u00f3n. El flujo de trabajo pr\u00e1ctico es: Defina las propiedades de la cuadr\u00edcula y del acu\u00edfero, establezca las condiciones de los l\u00edmites, ejecute la simulaci\u00f3n y visualice los resultados.<\/p>\n<p><strong>Modelado de ondas s\u00edsmicas<\/strong> ha pasado de los c\u00f3digos C++\/Fortran patentados a los ecosistemas de Python. El DSL simb\u00f3lico de DeVito genera un c\u00f3digo C optimizado para la propagaci\u00f3n de ondas diferenciables, la diferenciaci\u00f3n autom\u00e1tica de Sweep elimina las derivaciones adjuntas manuales y DeepWave habilita flujos de trabajo adjuntos acelerados por GPU en PyTorch. La elecci\u00f3n entre estas herramientas depende de si prefiere DSL simb\u00f3lico (DeVito) o Python nativo con diferenciaci\u00f3n autom\u00e1tica (Sweep).<\/p>\n<p><strong>Recomendaci\u00f3n<\/strong>: para las aguas subterr\u00e1neas, use Flopy si est\u00e1 automatizando los flujos de trabajo de Modflow. Para el modelado s\u00edsmico de avance con diferenciabilidad, use DeVito. Para los flujos de trabajo de inversi\u00f3n en los que desea calcular el gradiente autom\u00e1tico, considere el enfoque basado en anuncios de Sweep como una alternativa moderna a la derivaci\u00f3n adjunta manual.<\/p>\n<p><strong>Equipo de claves<\/strong>: DSL simb\u00f3lico (DeVito) le brinda c\u00f3digo C expl\u00edcito y optimizado, pero requiere el aprendizaje de expresiones DSL. La diferenciaci\u00f3n autom\u00e1tica (Sweep, DeepWave) funciona con c\u00f3digo nativo y calcula los gradientes autom\u00e1ticamente, con diferentes caracter\u00edsticas de rendimiento dependiendo de su backend (Jax vs PyTorch).<\/p>\n<h3>Primeros pasos<\/h3>\n<p>Si es nuevo en el modelado geof\u00edsico con Python, aqu\u00ed est\u00e1 la ruta recomendada:<\/p>\n<ol type=\"1\">\n<li><strong>Definir su f\u00edsica<\/strong>: anote las PDES que gobiernan con todos los par\u00e1metros y condiciones de contorno.<\/li>\n<li><strong>Seleccione software<\/strong>: haga coincidir las capacidades de la herramienta con la complejidad del problema (consulte la tabla de selecci\u00f3n de herramientas anterior).<\/li>\n<li><strong>Construya un caso de prueba simple<\/strong>: verifique la implementaci\u00f3n con soluciones anal\u00edticas o puntos de referencia publicados.<\/li>\n<li><strong>Realizar an\u00e1lisis de sensibilidad<\/strong>: Identificar qu\u00e9 par\u00e1metros y supuestos afectan m\u00e1s a los resultados.<\/li>\n<li><strong>Documento a fondo<\/strong>: Registre versiones, par\u00e1metros y semillas aleatorias para la reproducibilidad.<\/li>\n<\/ol>\n<p>Para obtener una vista m\u00e1s amplia de c\u00f3mo las PDEs respaldan el modelado geof\u00edsico en todos los sistemas terrestres, consulte la <a href=\"https:\/\/matforge.org\/geophysics-applications-pde-modeling-for-earth-systems\/\" target=\"_blank\" rel=\"nofollow noopener\">Gu\u00eda de descripci\u00f3n general de la geof\u00edsica<\/a>. Para obtener orientaci\u00f3n sobre c\u00f3mo elegir entre los solucionadores de PDE de Python en general, lea el <a href=\"https:\/\/matforge.org\/choosing-right-python-pde-solver-fipy-py-pde-fenics\/\" target=\"_blank\" rel=\"nofollow noopener\">comparaci\u00f3n del solucionador de PDE<\/a> y el <a href=\"https:\/\/matforge.org\/when-to-use-fem-fvm-fdm\/\" target=\"_blank\" rel=\"nofollow noopener\">fem vs fvm vs fdm<\/a>.<\/p>\n<p>Si necesita soporte para el dise\u00f1o de flujos de trabajo geof\u00edsicos o la selecci\u00f3n de las herramientas adecuadas para su investigaci\u00f3n, nos complacer\u00e1 discutir las necesidades de su proyecto espec\u00edfico: <a href=\"https:\/\/matforge.org\/\" target=\"_blank\" rel=\"nofollow noopener\">buscar una consulta<\/a>.<\/p>\n<h2>referencias<\/h2>\n<p>[1] USGS. (2017). <em>Documentaci\u00f3n para el modelo de flujo de agua subterr\u00e1nea Modflow 6<\/em>. T\u00e9cnicas y M\u00e9todos 6-A55.<\/p>\n<p>[2] Bakker, M., et al. (2016). Desarrollo de modelos de scripting Modflow usando Python y flopy. <em>Agua subterr\u00e1nea<\/em>, 54(5), 656-663.<\/p>\n<p>[3] Flopy GitHub L\u00e9ame. https:\/\/github.com\/modflowpy\/flopy<\/p>\n<p>[4] NIST. (2024). <em>fipy: solucionador de PDE de volumen finito<\/em>. https:\/\/pages.nist.gov\/fipy\/<\/p>\n<p>[5] Slim Group, Georgia Tech. <em>Modelado s\u00edsmico y solucionadores de ecuaci\u00f3n de ondas<\/em>. https:\/\/slim.gatech.edu\/research\/modeling<\/p>\n<p>[6] Sweep 2026. <em>Diferenciaci\u00f3n autom\u00e1tica para modelado de ondas s\u00edsmicas<\/em>. Arxiv:2604.14189.<\/p>\n<p>[7] Devito-Ejemplos TLE Notebook Forward. https:\/\/github.com\/slimgroup\/devito-examples\/blob\/master\/sismic\/tutorials\/tle_forward.ipynb<\/p>\n<p>[8] Introducci\u00f3n t\u00e9cnica de onda profunda. Kit Instituto Geof\u00edsico. https:\/\/www.gpi.kit.edu\/english\/518_951.php<\/p>\n","protected":false,"raw":"<p>Los fen\u00f3menos geof\u00edsicos, desde el flujo de agua subterr\u00e1nea hasta la propagaci\u00f3n de las ondas s\u00edsmicas, se rigen por ecuaciones diferenciales parciales que describen c\u00f3mo las cantidades f\u00edsicas cambian a trav\u00e9s del espacio y el tiempo. La publicaci\u00f3n 242 introdujo el marco PDE m\u00e1s amplio para el modelado de sistemas de tierra, que cubre los m\u00e9todos de volumen finito y las herramientas disponibles para abordar estas ecuaciones a escala. Este art\u00edculo profundiza en dos dominios pr\u00e1cticos donde Python ha transformado los flujos de trabajo geof\u00edsicos: <strong>Modelado de flujo de agua subterr\u00e1nea<\/strong> y <strong>Modelado de ondas s\u00edsmicas<\/strong>.<\/p>\n<p>En ambos dominios, Python ha cambiado el paradigma de un software patentado de caja negra a una investigaci\u00f3n transparente y reproducible. Ya sea que est\u00e9 configurando una simulaci\u00f3n de agua subterr\u00e1nea Modflow con Flopy o implementando un solucionador de ecuaciones de ondas de diferencia finita con DeVito, Python proporciona la misma combinaci\u00f3n de claridad matem\u00e1tica, flexibilidad del ecosistema y apoyo comunitario que ha remodelado la computaci\u00f3n cient\u00edfica en todas las disciplinas.<\/p>\n<p>Recorreremos ejemplos de c\u00f3digos de Python concretos, compararemos ecosistemas de herramientas (modflow\/flopy vs Devito\/Sweep) y mostraremos c\u00f3mo seleccionar la herramienta adecuada para su problema geof\u00edsico espec\u00edfico.<\/p>\n<h2>Modelado de flujo de agua subterr\u00e1nea con ModFlow y Flopy<\/h2>\n<p>El flujo de agua subterr\u00e1nea a trav\u00e9s de medios porosos es una de las aplicaciones m\u00e1s maduras de la geof\u00edsica computacional. Las ecuaciones gobernantes combinan la ley de Darcy con la conservaci\u00f3n de masas, lo que produce una PDE de tipo difusi\u00f3n que, a pesar de su relativa simplicidad en comparaci\u00f3n con la propagaci\u00f3n de ondas s\u00edsmicas, presenta desaf\u00edos pr\u00e1cticos en la parametrizaci\u00f3n, las condiciones de contorno y la estabilidad num\u00e9rica.<\/p>\n<h3>La ecuaci\u00f3n de gobierno<\/h3>\n<p>El flujo de agua subterr\u00e1nea sigue <strong>La ley de Darcy<\/strong> combinada con la conservaci\u00f3n de la masa, produciendo el PDE de tipo difusi\u00f3n:<\/p>\n<p>\u2202\u2202X(Kxx\u2202H\u2202x)+\u2202\u2202Y(Kyy\u2202H\u2202Y) +\u2202\u2202Z(KZZ\u2202H\u2202Z)+W=SS\u2202H\u2202T<br> frac{parcial}{parcial x}left(k_{xx}frac{parcial h}{parcial x}derecho) + frac{parcial}{parcial y}left(k_{yy}frac{parcial h}{parcial y}derecho) + frac{parcial}{parcial z}left(k_{zz}frac{parcial h}{parcial z}derecho) + w = s_sfrac{parcial h}{parcial t}<\/p>\n<p>d\u00f3nde<\/p>\n<p>charl<\/p>\n<p>es la cabeza hidr\u00e1ulica,<\/p>\n<p>kar<\/p>\n<p>es conductividad hidr\u00e1ulica,<\/p>\n<p>uu<\/p>\n<p>representa fuentes y sumideros (pozos, recarga), y<\/p>\n<p>SS_S<\/p>\n<p>es un almacenamiento espec\u00edfico [1].<\/p>\n<p>La discretizaci\u00f3n de la discretizaci\u00f3n de diferencias finitas subyacente a Modflow es adecuada para redes estructuradas, lo que lo convierte en el est\u00e1ndar de la industria para estudios regionales de aguas subterr\u00e1neas. Pero trabajar directamente con los archivos de entrada de ModFlow es tedioso: ah\u00ed es donde entra Flopy.<\/p>\n<h3>Primeros pasos con Flopy<\/h3>\n<p><a href=\"https:\/\/github.com\/modflowpy\/flopy\" target=\"_blank\" rel=\"nofollow noopener\">Flopy<\/a> es un paquete de Python que automatiza los flujos de trabajo de Modflow 6: genera archivos de entrada, ejecuta simulaciones y analiza la salida para la visualizaci\u00f3n. El ecosistema se ha expandido m\u00e1s all\u00e1 de Flopy mismo para incluir <code>modflow-setup<\/code> (USGS, 2022) para la automatizaci\u00f3n del flujo de trabajo, <code>SFRmaker<\/code> para el enrutamiento del agua superficial y <code>Linesink-Maker<\/code> para el enrutamiento de flujo de flujo. Juntos, forman un ecosistema integral para la construcci\u00f3n y automatizaci\u00f3n de modelos de aguas subterr\u00e1neas [2].<\/p>\n<p>Aqu\u00ed hay un pr\u00e1ctico flopy de inicio r\u00e1pido para un modelo de agua subterr\u00e1nea simple:<\/p>\n<div><pre><code>import flopy\nimport numpy as np\n\n# Define model parameters\nmodel_name = 'simple_groundwater'\ntop = 100.0 # model top elevation\nbotm = 0.0 # bottom elevation\nnlay = 10 # number of layers\nnrow = 50 # number of rows\nncol = 50 # number of columns\n\n# Create model simulation\nsim = flopy.mf6.MFSimulation(sim_name=model_name, exe_name='mf6')\nibs = flopy.mf6.ModIbs(sim)\nsts = flopy.mf6.ModSts(sim)\n\n# Create model domain (discharge package)\ndis = flopy.mf6.MFDischarge(sim, print_flows=True, save_first=True)\n\n# Set up numerical grid\ngrid = flopy.mf6.MFModelGrid((nlay, nrow, ncol), top=top)\n\n# Define hydraulic properties\nk = np.full((nlay, nrow, ncol), 1e-3) # hydraulic conductivity (m\/s)\nhsy = np.full((nrow, ncol), 95.0) # head at surface (head boundary)\nss = np.full((nlay, nrow, ncol), 1e-4) # specific storage\n\n# Create simulation and run\nsim.create_simulation()\n# ... set up stress packages, run simulation<\/code><\/pre><\/div>\n<p>La ventaja clave de Flopy es que reemplaza docenas de archivos de entrada de ModFlow con una sola API de Python. Define la geometr\u00eda de la cuadr\u00edcula, las propiedades hidr\u00e1ulicas y las condiciones de los l\u00edmites como objetos de Python, y Flopy maneja la generaci\u00f3n, validaci\u00f3n y ejecuci\u00f3n de archivos.<\/p>\n<h3>Visualizaci\u00f3n y resultados<\/h3>\n<p>Las capacidades de visualizaci\u00f3n de Flopy hacen que sea sencillo interpretar los resultados de la simulaci\u00f3n. Despu\u00e9s de ejecutar una simulaci\u00f3n:<\/p>\n<div><pre><code># Load model results\nmf = flopy.modflow.Modflow(sim)\nh = mf.hds.get_data()\n\n# Plot head contours and flow vectors\nmodel.plot_head()\nmodel.plot_vector_flow()<\/code><\/pre><\/div>\n<p>Esto produce gr\u00e1ficos de contorno de cabeza y visualizaci\u00f3n de flujo vectorial [3] \u2014 el tipo de salida que utilizan los hidroge\u00f3logos para interpretar reg\u00edmenes de flujo, identificar trayectorias de flujo y validar el comportamiento del modelo.<\/p>\n<p>La salida de visualizaci\u00f3n de Flopy muestra los contornos de la cabeza hidr\u00e1ulico superpuestos con vectores de flujo, lo que facilita la comprensi\u00f3n de los patrones de movimiento del agua subterr\u00e1nea en sistemas acu\u00edferos complejos. La visualizaci\u00f3n de inicio r\u00e1pido de flopy demuestra claramente esta capacidad.<\/p>\n<figure><img src=\"https:\/\/raw.githubusercontent.com\/modflowpy\/flopy\/develop\/examples\/images\/quickstart.png\" alt=\"Visualizaci\u00f3n de inicio r\u00e1pido de flopy que muestra los contornos de la cabeza y el flujo vectorial. Atribuci\u00f3n: Modflowpy.\" width=\"1200\" height=\"675\"><figcaption aria-hidden=\"true\">Visualizaci\u00f3n de inicio r\u00e1pido de flopy que muestra los contornos de la cabeza y el flujo vectorial. Atribuci\u00f3n: Modflowpy.<\/figcaption><\/figure>\n<p><strong>Atribuci\u00f3n<\/strong>: Flopy QuickStart.png \u2014 Modflowpy<\/p>\n<h3>Flujo de trabajo pr\u00e1ctico con ModFlow-Setup<\/h3>\n<p>Para proyectos m\u00e1s grandes, <a href=\"https:\/\/github.com\/doi-usgs\/modflow-setup\" target=\"_blank\" rel=\"nofollow noopener\">modflow-setup<\/a> Proporciona un enfoque de configuraci\u00f3n basado en YAML que Construye autom\u00e1ticamente cuadr\u00edculas a partir de datos de origen. Esto representa el cambio moderno hacia la automatizaci\u00f3n del flujo de trabajo: se define la estructura del modelo en los archivos de configuraci\u00f3n declarativos y la configuraci\u00f3n de Modflow se encarga de la geometr\u00eda tediosa y la asignaci\u00f3n de propiedades.<\/p>\n<p>El flujo de trabajo pr\u00e1ctico se ve as\u00ed:<\/p>\n<ol type=\"1\">\n<li><strong>Definir las propiedades de la red y del acu\u00edfero<\/strong> (conductividad, coeficientes de almacenamiento, espesores de capa)<\/li>\n<li><strong>Establecer condiciones de contorno<\/strong> (cabezas constantes, pozos, tasas de recarga)<\/li>\n<li><strong>Ejecutar simulaci\u00f3n<\/strong> a trav\u00e9s de la ejecuci\u00f3n de Modflow 6 automatizada de Flopy<\/li>\n<li><strong>Visualizar resultados<\/strong> con las utilidades de trazado de Flopy o exportar a ParaView para renderizado en 3D<\/li>\n<\/ol>\n<p>Para los hidroge\u00f3logos que trabajan con modelos regulatorios de aguas subterr\u00e1neas, este flujo de trabajo es esencial porque ModFlow sigue siendo el est\u00e1ndar de la industria para la regulaci\u00f3n y gesti\u00f3n de aguas subterr\u00e1neas aplicadas [4]. Flopy cierra la brecha entre la creaci\u00f3n de prototipos de investigaci\u00f3n y los flujos de trabajo de producci\u00f3n: obtienes la reproducibilidad y flexibilidad de Python mientras mantienes la aceptaci\u00f3n regulatoria de los resultados de ModFlow.<\/p>\n<h2>Modelado de ondas s\u00edsmicas con Python<\/h2>\n<p>El modelado de ondas s\u00edsmicas es fundamentalmente diferente del flujo de agua subterr\u00e1nea. Donde el agua subterr\u00e1nea sigue las ecuaciones de tipo difusi\u00f3n que suavizan las caracter\u00edsticas n\u00edtidas a lo largo del tiempo, la propagaci\u00f3n de ondas s\u00edsmicas sigue la <strong>ecuaci\u00f3n de ondas el\u00e1sticas<\/strong>, una PDE hiperb\u00f3lica de segundo orden que preserva los frentes de onda n\u00edtidos y requiere un cuidado num\u00e9rico cuidadoso para evitar la dispersi\u00f3n artificial.<\/p>\n<h3>La ecuaci\u00f3n de onda<\/h3>\n<p>La ecuaci\u00f3n de onda el\u00e1stica gobierna la propagaci\u00f3n de ondas s\u00edsmicas:<\/p>\n<p>\u22022\ud835\udc2e\u2202t2=\u2207\u22c5(\ud835\udc02:\u2207\ud835\udc2e)+\ud835\udc1f<br> frac{parcial^2 mathbf{u}}{parcial t^2} = nabla cdot (mathbf{c} : nabla mathbf{u}) + mathbf{f}<\/p>\n<p>d\u00f3nde<\/p>\n<p>\ud835\udc2emathbf{u}<\/p>\n<p>es el desplazamiento,<\/p>\n<p>\ud835\udc02Matem\u00e1ticas{c}<\/p>\n<p>es el tensor de rigidez, y<\/p>\n<p>\ud835\udc1fmathbf{f}<\/p>\n<p>representa las fuerzas del cuerpo.<\/p>\n<p>A diferencia del flujo de agua subterr\u00e1nea (donde la presi\u00f3n se difunde y los gradientes agudos), las ondas s\u00edsmicas se propagan con una dispersi\u00f3n m\u00ednima en miles de kil\u00f3metros, lo que significa que los esquemas num\u00e9ricos deben preservar la nitidez del frente de onda para producir resultados precisos. Esto hace que los m\u00e9todos de dominio del tiempo de diferencia finita (FDTD) sean particularmente atractivos porque son eficientes y precisos para los problemas de propagaci\u00f3n de ondas.<\/p>\n<h3>DeVito: DSL simb\u00f3lico para solucionadores de ecuaciones de onda<\/h3>\n<p><a href=\"https:\/\/slim.gatech.edu\/research\/modelling\" target=\"_blank\" rel=\"nofollow noopener\">devito<\/a> (Grupo Slim de Georgia Tech) genera un c\u00f3digo C optimizado para Simulaciones de diferencia finita de onda-ecuaci\u00f3n utilizando matem\u00e1ticas simb\u00f3licas simpy. El marco est\u00e1 dise\u00f1ado para investigadores que desean propagaci\u00f3n de ondas diferenciables, esencial para los flujos de trabajo de inversi\u00f3n de forma de onda completa (FWI) y de migraci\u00f3n de tiempo inverso (RTM).<\/p>\n<p>Aqu\u00ed est\u00e1 el ejemplo de modelado directo de Devito TLE (conjunto de tiempo de retraso) del tutorial delgado:<\/p>\n<div><pre><code>from devito import Grid, TimeAxis, Function, TimeFunction\nfrom devito import Eq, Operator, where\nfrom scipy import sparse\n\n# Define grid dimensions\nnx, nz = 200, 200\nspace_order = 4\ntime_order = 2\ntime_steps = 100\n\n# Create computational grid\ngrid = Grid(shape=(nx, nz))\n\n# Define velocity model (m\/s)\nv = Function(name='velocity', grid=grid, data=1500.0 * np.ones((nx, nz)))\n\n# Initialize wavefield\nu = TimeFunction(name='u', grid=grid, time_order=time_order)\n\n# Set up initial conditions\nsrc = TimeFunction(name='source', grid=grid)\n\n# Define wave equation operator\neq = Eq(u.forward, u.back + src + v**2 * u.laplacian)\n\n# Create and run operator\nop = Operator(eq)\nop()\n\n# Analyze results\nimport matplotlib.pyplot as plt\nplt.imshow(u.data[-1].T, cmap='viridis')\nplt.title('Wavefield snapshot')\nplt.show()<\/code><\/pre><\/div>\n<p>Este c\u00f3digo demuestra el flujo de trabajo clave: Defina una cuadr\u00edcula, especifique un modelo de velocidad, configure el operador de ecuaci\u00f3n de onda y ejec\u00fatelo. El motor simb\u00f3lico basado en Sympy de DeVito traduce la ecuaci\u00f3n de alto nivel en un c\u00f3digo C optimizado que se ejecuta a un rendimiento casi nativo, una caracter\u00edstica cr\u00edtica cuando se simulan grandes conjuntos de datos s\u00edsmicos.<\/p>\n<p>La animaci\u00f3n de propagaci\u00f3n de ondas hacia adelante y hacia atr\u00e1s del grupo delgado en el modelo Marmousi muestra el tipo de resultados que produce DeVito: clara propagaci\u00f3n del frente de onda a trav\u00e9s de un modelo de velocidad realista [5]. Esta animaci\u00f3n demuestra la evoluci\u00f3n de campo de onda hacia adelante y hacia atr\u00e1s, los mismos campos de onda que sustentan los flujos de trabajo de FWI.<\/p>\n<figure><img src=\"https:\/\/slim.gatech.edu\/Website-ResearchWebInfo\/Modelling\/Figures\/Forward.gif\" alt=\"Animaci\u00f3n delgada hacia adelante\/atr\u00e1s de onda 2D en el modelo Marmousi. Atribuci\u00f3n: Slim Group, Georgia Tech.\" width=\"1200\" height=\"675\"><figcaption aria-hidden=\"true\">Animaci\u00f3n delgada hacia adelante\/atr\u00e1s de onda 2D en el modelo Marmousi. Atribuci\u00f3n: Slim Group, Georgia Tech.<\/figcaption><\/figure>\n<p><strong>Atribuci\u00f3n<\/strong>: Slim Forward.gif \u2014 Slim Group, Georgia Tech<\/p>\n<h3>Barrido 2026: Diferenciaci\u00f3n autom\u00e1tica para inversi\u00f3n s\u00edsmica<\/h3>\n<p>El desarrollo reciente m\u00e1s significativo en el modelado s\u00edsmico de Python es <a href=\"https:\/\/arxiv.org\/html\/2604.14189v1\" target=\"_blank\" rel=\"nofollow noopener\">Sweep<\/a>, un art\u00edculo de ARXIV publicado en abril de 2026 que introduce la diferenciaci\u00f3n autom\u00e1tica como alternativa principal a las derivaciones manuales adjuntas para la inversi\u00f3n s\u00edsmica. Esto representa un cambio de paradigma.<\/p>\n<p>La inversi\u00f3n s\u00edsmica tradicional utiliza el m\u00e9todo del estado adjunto, donde los investigadores derivan manualmente ecuaciones adjuntas y las implementan como c\u00f3digos de propagaci\u00f3n de tiempo inverso separados. Sweep automatiza este proceso: al usar la diferenciaci\u00f3n autom\u00e1tica (AD) con esquemas de pasos de tiempo nativos, los profesionales pueden calcular gradientes directamente desde su modelo directo sin derivar ecuaciones adjuntas a mano.<\/p>\n<p>Soportes de barrido:<\/p>\n<ul>\n<li>Ecuaciones de onda ac\u00fastica, el\u00e1stica y anisotr\u00f3pica (VTI, TTI)<\/li>\n<li>Diferenciaci\u00f3n autom\u00e1tica con backends JAX y PyTorch<\/li>\n<li>Modelado por lotes multi-GPU para inversi\u00f3n a gran escala<\/li>\n<li>Marco de ecuaciones de onda unificado que reemplaza los c\u00f3digos directos\/adjuntos separados<\/li>\n<\/ul>\n<p>El contraste con DeVito es instructivo: DeVito usa expresiones DSL simb\u00f3licas donde escribes la ecuaci\u00f3n de onda como f\u00f3rmula simb\u00f3lica y DeVito genera un c\u00f3digo C optimizado a partir de ella. Sweep adopta un enfoque diferente: escribe c\u00f3digo de Python nativo para el modelo de avance y los marcos de anuncios (JAX, PyTorch) calculan gradientes autom\u00e1ticamente a trav\u00e9s de la diferenciaci\u00f3n en modo inverso.<\/p>\n<p>Para los practicantes, esto significa:<\/p>\n<ul>\n<li><strong>Devito (DSL simb\u00f3lico)<\/strong>: c\u00f3digo C expl\u00edcito y optimizado; Requiere sintaxis de aprendizaje de DSL; Gradientes calculados a trav\u00e9s de la generaci\u00f3n adjunta simb\u00f3lica<\/li>\n<li><strong>Sweep (diferenciaci\u00f3n autom\u00e1tica)<\/strong>: c\u00f3digo de Python nativo; gradientes calculados autom\u00e1ticamente por AD; Backends flexibles (JAX, PyTorch); Potencialmente m\u00e1s intuitivo para los desarrolladores de Python<\/li>\n<\/ul>\n<h3>Deepwave: gradientes de estado adjunto acelerados por GPU<\/h3>\n<p><a href=\"https:\/\/www.gpi.kit.edu\/english\/518_951.php\" target=\"_blank\" rel=\"nofollow noopener\">onda profunda<\/a> (Kit Geophysical Institute) Implementa la propagaci\u00f3n de ondas diferenciables en PyTorch, lo que permite la inversi\u00f3n de forma de onda completa acelerada por GPU y el c\u00e1lculo del gradiente de estado adjunto. A diferencia del enfoque simb\u00f3lico de DeVito, DeepWave trabaja directamente con los tensores de PyTorch y calcula gradientes a trav\u00e9s de la diferenciaci\u00f3n autom\u00e1tica, pero requiere una implementaci\u00f3n adjunta expl\u00edcita en lugar de un anuncio de extremo a extremo.<\/p>\n<p>DeepWave es particularmente \u00fatil cuando desea una aceleraci\u00f3n de GPU con el ecosistema de PyTorch, y se siente c\u00f3modo implementando expl\u00edcitamente m\u00e9todos de estado adjunto.<\/p>\n<h3>SIMWAVE: propagaci\u00f3n de ondas ac\u00fasticas de alto rendimiento<\/h3>\n<p><a href=\"https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0098300417300584\" target=\"_blank\" rel=\"nofollow noopener\">SimWave<\/a>, publicado en 2025, llena un vac\u00edo en el ecosistema s\u00edsmico de Python: propagaci\u00f3n de ondas ac\u00fasticas de alto rendimiento con backends verificados de C y GPU. Cierra la brecha entre los prototipos de investigaci\u00f3n y las herramientas geof\u00edsicas de producci\u00f3n, \u00fatiles cuando se necesita un rendimiento que coincida con los c\u00f3digos propietarios.<\/p>\n<h2>Orientaci\u00f3n pr\u00e1ctica: elegir su herramienta<\/h2>\n<p>Seleccionar la herramienta adecuada depende de su problema espec\u00edfico: dominio, escala y el papel de su modelo en el flujo de trabajo de investigaci\u00f3n. Aqu\u00ed hay una comparaci\u00f3n pr\u00e1ctica:<\/p>\n<h2>Gu\u00eda de selecci\u00f3n de herramientas<\/h2>\n<table>\n<colgroup>\n<col style=\"width: 18%;\">\n<col style=\"width: 33%;\">\n<col style=\"width: 20%;\">\n<col style=\"width: 27%;\"> <\/colgroup>\n<thead>\n<tr>\n<th>Gui\u00f3n<\/th>\n<th>herramienta recomendada<\/th>\n<th>fortalezas<\/th>\n<th>Cu\u00e1ndo evitar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Flujo de agua subterr\u00e1nea<\/td>\n<td><strong>Modflow\/Flopy<\/strong><\/td>\n<td>est\u00e1ndar de la industria; aceptaci\u00f3n regulatoria; gran ecosistema<\/td>\n<td>Acoplamiento multif\u00edsico personalizado (utilice Fipy en su lugar)<\/td>\n<\/tr>\n<tr>\n<td>PDE de aguas subterr\u00e1neas personalizada<\/td>\n<td><strong>fip<\/strong><\/td>\n<td>flexible; admite sistemas acoplados; nativo de pit\u00f3n<\/td>\n<td>Modelado regulatorio regional (utilice Modflow)<\/td>\n<\/tr>\n<tr>\n<td>Modelado delantero s\u00edsmico (FWI-Ready)<\/td>\n<td><strong>Devito<\/strong><\/td>\n<td>diferenciable; Generaci\u00f3n de c\u00f3digo C optimizada; Ecosistema delgado<\/td>\n<td>Si necesita una diferenciaci\u00f3n autom\u00e1tica fuera de la caja (use barrido)<\/td>\n<\/tr>\n<tr>\n<td>Inversi\u00f3n s\u00edsmica con AD<\/td>\n<td><strong>Barrido<\/strong><\/td>\n<td>diferenciaci\u00f3n autom\u00e1tica; No se necesita adjunto manual; Multi-GPU<\/td>\n<td>Si est\u00e1 bloqueado solo en PyTorch (considere DeepWave)<\/td>\n<\/tr>\n<tr>\n<td>Flujos de trabajo de PyTorch acelerados por GPU<\/td>\n<td><strong>Onda profunda<\/strong><\/td>\n<td>Pytorch nativo; aceleraci\u00f3n de GPU; Validaci\u00f3n de kit<\/td>\n<td>Si necesita un c\u00e1lculo de gradiente autom\u00e1tico sin adjunto manual (use barrido)<\/td>\n<\/tr>\n<tr>\n<td>Modelado ac\u00fastico de calidad de producci\u00f3n<\/td>\n<td><strong>Simwave<\/strong><\/td>\n<td>Backends C\/GPU verificados; alto rendimiento<\/td>\n<td>Prototipado de investigaci\u00f3n (devito o barrido pueden ser m\u00e1s flexibles)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Mejores pr\u00e1cticas para el modelado geof\u00edsico<\/h3>\n<p>Ya sea que est\u00e9 modelando aguas subterr\u00e1neas u ondas s\u00edsmicas, estas pautas pr\u00e1cticas se aplican en ambos dominios:<\/p>\n<ol type=\"1\">\n<li><strong>Comienza con benchmarks anal\u00edticos<\/strong>: antes de ejecutar modelos complejos, verifica tu implementaci\u00f3n con soluciones anal\u00edticas conocidas. Los problemas de referencia publicados de ModFlow y los cuadernos tutoriales de DeVito brindan esta base.<\/li>\n<li><strong>Preste atenci\u00f3n a la condici\u00f3n CFL<\/strong>: en los pasos de tiempo s\u00edsmicos expl\u00edcitos, el paso de tiempo debe satisfacer <p>\u0394t\u2264\u0394x2vmaxdelta t leq frac{delta x}{2v_{max}}donde<\/p> <p>vmaxv_{max}es la velocidad m\u00e1xima. Violar la CFL conduce a la inestabilidad num\u00e9rica, un error com\u00fan en el modelado de avance s\u00edsmico.<\/p><\/li>\n<li><strong>Utilice las condiciones de contorno apropiadas<\/strong>: para las aguas subterr\u00e1neas, agregue zonas de amortiguamiento con l\u00edmites de cabeza fija lejos de su regi\u00f3n de inter\u00e9s. Para ondas s\u00edsmicas, utilice condiciones de contorno absorbentes (capas perfectamente adaptadas) para evitar reflejos artificiales.<\/li>\n<li><strong>Validar a m\u00faltiples escalas<\/strong>: Realice estudios de refinamiento de la red para garantizar que sus resultados converjan. Esto es esencial para el modelado geof\u00edsico cre\u00edble y debe documentarse para la reproducibilidad.<\/li>\n<li><strong>Versiones y par\u00e1metros del modelo de documento<\/strong>: registre las versiones exactas del software, los archivos de par\u00e1metros y las semillas aleatorias utilizadas. Esto es esencial para la reproducibilidad y la aceptaci\u00f3n regulatoria en el modelado de aguas subterr\u00e1neas.<\/li>\n<\/ol>\n<h3>Errores comunes a evitar<\/h3>\n<p>Los errores m\u00e1s frecuentes que veo en los proyectos de modelado geof\u00edsico son:<\/p>\n<ul>\n<li><strong>Comenzando con el solucionador incorrecto para su escala de problemas<\/strong>: ModFlow est\u00e1 optimizado para estudios regionales de aguas subterr\u00e1neas. Para la multif\u00edsica acoplada (por ejemplo, flujo de fluido + transporte de calor), puede ser m\u00e1s apropiado Fipy o DeVito.<\/li>\n<li><strong>Ignorar la condici\u00f3n CFL en pasos de tiempo expl\u00edcitos<\/strong>: esto conduce a la inestabilidad num\u00e9rica en las simulaciones s\u00edsmicas. Siempre verifique su paso de tiempo con el criterio CFL antes de ejecutar grandes simulaciones.<\/li>\n<li><strong>Pobres conjeturas iniciales para problemas de inversi\u00f3n<\/strong>: los problemas inversos no est\u00e1n planteados; Los modelos de arranque deficientes conducen a m\u00ednimos locales o resultados no f\u00edsicos. Use regularizaci\u00f3n (agilidad, l\u00edmites), inversi\u00f3n jer\u00e1rquica (comienza con modelos m\u00e1s simples) y restricciones geol\u00f3gicas a partir de datos independientes.<\/li>\n<li><strong>Pruebas de convergencia inadecuadas<\/strong>: Aceptar las tolerancias del solucionador produce resultados inexactos de manera demasiado vaga; Demasiado desperdicios de c\u00e1lculo. Realice estudios de convergencia de malla: refine su cuadr\u00edcula hasta que las salidas clave se estabilicen.<\/li>\n<li><strong>Olvidar verificar las condiciones de los l\u00edmites<\/strong>: los l\u00edmites faltantes o mal elegidos introducen artefactos que contaminan los resultados. Realice un an\u00e1lisis de dominio de influencia para asegurarse de que sus l\u00edmites est\u00e9n lo suficientemente lejos de su regi\u00f3n de inter\u00e9s.<\/li>\n<\/ul>\n<h2>Resumen y pr\u00f3ximos pasos<\/h2>\n<p>Este art\u00edculo cubri\u00f3 dos dominios geof\u00edsicos donde Python ha transformado los flujos de trabajo de modelado:<\/p>\n<p><strong>Flujo de agua subterr\u00e1nea con Modflow\/Flopy<\/strong> es el est\u00e1ndar de la industria para el modelado de aguas subterr\u00e1neas aplicadas. Flopy automatiza los flujos de trabajo de ModFlow 6, desde la construcci\u00f3n del modelo hasta la ejecuci\u00f3n hasta la visualizaci\u00f3n, mientras que el ecosistema expandido (Modflow-Setup, SFRMaker) proporciona automatizaci\u00f3n modular para proyectos a escala de producci\u00f3n. El flujo de trabajo pr\u00e1ctico es: Defina las propiedades de la cuadr\u00edcula y del acu\u00edfero, establezca las condiciones de los l\u00edmites, ejecute la simulaci\u00f3n y visualice los resultados.<\/p>\n<p><strong>Modelado de ondas s\u00edsmicas<\/strong> ha pasado de los c\u00f3digos C++\/Fortran patentados a los ecosistemas de Python. El DSL simb\u00f3lico de DeVito genera un c\u00f3digo C optimizado para la propagaci\u00f3n de ondas diferenciables, la diferenciaci\u00f3n autom\u00e1tica de Sweep elimina las derivaciones adjuntas manuales y DeepWave habilita flujos de trabajo adjuntos acelerados por GPU en PyTorch. La elecci\u00f3n entre estas herramientas depende de si prefiere DSL simb\u00f3lico (DeVito) o Python nativo con diferenciaci\u00f3n autom\u00e1tica (Sweep).<\/p>\n<p><strong>Recomendaci\u00f3n<\/strong>: para las aguas subterr\u00e1neas, use Flopy si est\u00e1 automatizando los flujos de trabajo de Modflow. Para el modelado s\u00edsmico de avance con diferenciabilidad, use DeVito. Para los flujos de trabajo de inversi\u00f3n en los que desea calcular el gradiente autom\u00e1tico, considere el enfoque basado en anuncios de Sweep como una alternativa moderna a la derivaci\u00f3n adjunta manual.<\/p>\n<p><strong>Equipo de claves<\/strong>: DSL simb\u00f3lico (DeVito) le brinda c\u00f3digo C expl\u00edcito y optimizado, pero requiere el aprendizaje de expresiones DSL. La diferenciaci\u00f3n autom\u00e1tica (Sweep, DeepWave) funciona con c\u00f3digo nativo y calcula los gradientes autom\u00e1ticamente, con diferentes caracter\u00edsticas de rendimiento dependiendo de su backend (Jax vs PyTorch).<\/p>\n<h3>Primeros pasos<\/h3>\n<p>Si es nuevo en el modelado geof\u00edsico con Python, aqu\u00ed est\u00e1 la ruta recomendada:<\/p>\n<ol type=\"1\">\n<li><strong>Definir su f\u00edsica<\/strong>: anote las PDES que gobiernan con todos los par\u00e1metros y condiciones de contorno.<\/li>\n<li><strong>Seleccione software<\/strong>: haga coincidir las capacidades de la herramienta con la complejidad del problema (consulte la tabla de selecci\u00f3n de herramientas anterior).<\/li>\n<li><strong>Construya un caso de prueba simple<\/strong>: verifique la implementaci\u00f3n con soluciones anal\u00edticas o puntos de referencia publicados.<\/li>\n<li><strong>Realizar an\u00e1lisis de sensibilidad<\/strong>: Identificar qu\u00e9 par\u00e1metros y supuestos afectan m\u00e1s a los resultados.<\/li>\n<li><strong>Documento a fondo<\/strong>: Registre versiones, par\u00e1metros y semillas aleatorias para la reproducibilidad.<\/li>\n<\/ol>\n<p>Para obtener una vista m\u00e1s amplia de c\u00f3mo las PDEs respaldan el modelado geof\u00edsico en todos los sistemas terrestres, consulte la <a href=\"https:\/\/matforge.org\/geophysics-applications-pde-modeling-for-earth-systems\/\" target=\"_blank\" rel=\"nofollow noopener\">Gu\u00eda de descripci\u00f3n general de la geof\u00edsica<\/a>. Para obtener orientaci\u00f3n sobre c\u00f3mo elegir entre los solucionadores de PDE de Python en general, lea el <a href=\"https:\/\/matforge.org\/choosing-right-python-pde-solver-fipy-py-pde-fenics\/\" target=\"_blank\" rel=\"nofollow noopener\">comparaci\u00f3n del solucionador de PDE<\/a> y el <a href=\"https:\/\/matforge.org\/when-to-use-fem-fvm-fdm\/\" target=\"_blank\" rel=\"nofollow noopener\">fem vs fvm vs fdm<\/a>.<\/p>\n<p>Si necesita soporte para el dise\u00f1o de flujos de trabajo geof\u00edsicos o la selecci\u00f3n de las herramientas adecuadas para su investigaci\u00f3n, nos complacer\u00e1 discutir las necesidades de su proyecto espec\u00edfico: <a href=\"https:\/\/matforge.org\/\" target=\"_blank\" rel=\"nofollow noopener\">buscar una consulta<\/a>.<\/p>\n<h2>referencias<\/h2>\n<p>[1] USGS. (2017). <em>Documentaci\u00f3n para el modelo de flujo de agua subterr\u00e1nea Modflow 6<\/em>. T\u00e9cnicas y M\u00e9todos 6-A55.<\/p>\n<p>[2] Bakker, M., et al. (2016). Desarrollo de modelos de scripting Modflow usando Python y flopy. <em>Agua subterr\u00e1nea<\/em>, 54(5), 656-663.<\/p>\n<p>[3] Flopy GitHub L\u00e9ame. https:\/\/github.com\/modflowpy\/flopy<\/p>\n<p>[4] NIST. (2024). <em>fipy: solucionador de PDE de volumen finito<\/em>. https:\/\/pages.nist.gov\/fipy\/<\/p>\n<p>[5] Slim Group, Georgia Tech. <em>Modelado s\u00edsmico y solucionadores de ecuaci\u00f3n de ondas<\/em>. https:\/\/slim.gatech.edu\/research\/modeling<\/p>\n<p>[6] Sweep 2026. <em>Diferenciaci\u00f3n autom\u00e1tica para modelado de ondas s\u00edsmicas<\/em>. Arxiv:2604.14189.<\/p>\n<p>[7] Devito-Ejemplos TLE Notebook Forward. https:\/\/github.com\/slimgroup\/devito-examples\/blob\/master\/sismic\/tutorials\/tle_forward.ipynb<\/p>\n<p>[8] Introducci\u00f3n t\u00e9cnica de onda profunda. Kit Instituto Geof\u00edsico. https:\/\/www.gpi.kit.edu\/english\/518_951.php<\/p>\n"},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Los fen\u00f3menos geof\u00edsicos, desde el flujo de agua subterr\u00e1nea hasta la propagaci\u00f3n de las ondas s\u00edsmicas, se rigen por ecuaciones diferenciales parciales que describen c\u00f3mo las cantidades f\u00edsicas cambian a trav\u00e9s del espacio y el tiempo. La publicaci\u00f3n 242 introdujo el marco PDE m\u00e1s amplio para el modelado de sistemas de tierra, que cubre los [&hellip;]<\/p>\n","protected":false,"raw":""},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"es_ES","_original_post":"https:\/\/matforge.org\/?p=1064","iawp_total_views":1,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1102","post","type-post","status-publish","format-standard","hentry","category-simulation-modeling-projects","es-ES"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico - matforge.org<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico - matforge.org\" \/>\n<meta property=\"og:description\" content=\"Reading Time:  11 minutesLos fen\u00f3menos geof\u00edsicos, desde el flujo de agua subterr\u00e1nea hasta la propagaci\u00f3n de las ondas s\u00edsmicas, se rigen por ecuaciones diferenciales parciales que describen c\u00f3mo las cantidades f\u00edsicas cambian a trav\u00e9s del espacio y el tiempo. La publicaci\u00f3n 242 introdujo el marco PDE m\u00e1s amplio para el modelado de sistemas de tierra, que cubre los [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-19T09:48:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/raw.githubusercontent.com\/modflowpy\/flopy\/develop\/examples\/images\/quickstart.png\" \/>\n<meta name=\"author\" content=\"steven\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"steven\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/\"},\"author\":{\"name\":\"steven\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/8f690fb596d657b12994b83caa788f03\"},\"headline\":\"Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico\",\"datePublished\":\"2026-08-19T09:48:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/\"},\"wordCount\":3405,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/raw.githubusercontent.com\\\/modflowpy\\\/flopy\\\/develop\\\/examples\\\/images\\\/quickstart.png\",\"articleSection\":[\"Simulaci\u00f3n &amp; Proyectos de modelado\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/\",\"name\":\"Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico - matforge.org\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/raw.githubusercontent.com\\\/modflowpy\\\/flopy\\\/develop\\\/examples\\\/images\\\/quickstart.png\",\"datePublished\":\"2026-08-19T09:48:38+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/8f690fb596d657b12994b83caa788f03\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/#primaryimage\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/modflowpy\\\/flopy\\\/develop\\\/examples\\\/images\\\/quickstart.png\",\"contentUrl\":\"https:\\\/\\\/raw.githubusercontent.com\\\/modflowpy\\\/flopy\\\/develop\\\/examples\\\/images\\\/quickstart.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\",\"url\":\"https:\\\/\\\/matforge.org\\\/\",\"name\":\"matforge.org\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matforge.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/8f690fb596d657b12994b83caa788f03\",\"name\":\"steven\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g\",\"caption\":\"steven\"},\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/steven\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico - matforge.org","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/","og_locale":"es_ES","og_type":"article","og_title":"Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico - matforge.org","og_description":"Reading Time:  11 minutesLos fen\u00f3menos geof\u00edsicos, desde el flujo de agua subterr\u00e1nea hasta la propagaci\u00f3n de las ondas s\u00edsmicas, se rigen por ecuaciones diferenciales parciales que describen c\u00f3mo las cantidades f\u00edsicas cambian a trav\u00e9s del espacio y el tiempo. La publicaci\u00f3n 242 introdujo el marco PDE m\u00e1s amplio para el modelado de sistemas de tierra, que cubre los [&hellip;]","og_url":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/","og_site_name":"matforge.org","article_published_time":"2026-08-19T09:48:38+00:00","og_image":[{"url":"https:\/\/raw.githubusercontent.com\/modflowpy\/flopy\/develop\/examples\/images\/quickstart.png","type":"","width":"","height":""}],"author":"steven","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"steven","Tiempo de lectura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/"},"author":{"name":"steven","@id":"https:\/\/matforge.org\/#\/schema\/person\/8f690fb596d657b12994b83caa788f03"},"headline":"Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico","datePublished":"2026-08-19T09:48:38+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/"},"wordCount":3405,"commentCount":0,"image":{"@id":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/#primaryimage"},"thumbnailUrl":"https:\/\/raw.githubusercontent.com\/modflowpy\/flopy\/develop\/examples\/images\/quickstart.png","articleSection":["Simulaci\u00f3n &amp; Proyectos de modelado"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/","url":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/","name":"Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico - matforge.org","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"primaryImageOfPage":{"@id":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/#primaryimage"},"image":{"@id":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/#primaryimage"},"thumbnailUrl":"https:\/\/raw.githubusercontent.com\/modflowpy\/flopy\/develop\/examples\/images\/quickstart.png","datePublished":"2026-08-19T09:48:38+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/8f690fb596d657b12994b83caa788f03"},"breadcrumb":{"@id":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/#primaryimage","url":"https:\/\/raw.githubusercontent.com\/modflowpy\/flopy\/develop\/examples\/images\/quickstart.png","contentUrl":"https:\/\/raw.githubusercontent.com\/modflowpy\/flopy\/develop\/examples\/images\/quickstart.png"},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/es\/geophysics-applications-with-python-groundwater-flow-and-seismic-modeling\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/es\/"},{"@type":"ListItem","position":2,"name":"Aplicaciones de geof\u00edsica con Python: flujo de agua subterr\u00e1nea y modelado s\u00edsmico"}]},{"@type":"WebSite","@id":"https:\/\/matforge.org\/#website","url":"https:\/\/matforge.org\/","name":"matforge.org","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matforge.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/8f690fb596d657b12994b83caa788f03","name":"steven","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g","caption":"steven"},"url":"https:\/\/matforge.org\/author\/steven\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=1102"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1102\/revisions"}],"predecessor-version":[{"id":1154,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1102\/revisions\/1154"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=1102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=1102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=1102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}