

FloPy es la librería de Python que construye y ejecuta modelos MODFLOW; esta librería ha sido mejorada para brindar soporte completo a MODFLOW 6, y la mayor parte de su desarrollo reciente está relacionado con la funcionalidad para MODFLOW 6, herramientas para usar datos espaciales vectoriales y ráster, y funcionalidades comunes de trazado de gráficas y exportación.
Python es un lenguaje de programación simple y potente; su simplicidad es destacable en comparación con otros lenguajes de programación y su potencia se basa en la cantidad de herramientas disponibles para diferentes áreas de estudio.
Hemos desarrollado un programa completo sobre modelamiento de aguas subterráneas con MODFLOW y FloPy que abarca desde los temas esenciales de Python hasta casos aplicados de modelamiento regional, intrusión marina y optimización con PEST. El programa está diseñado para brindar al estudiante un enfoque metodológico para aprender FloPy basado en una serie de ejemplos aplicados, complementados con la experiencia del docente y la revisión del software.
Objetivos
El estudiante alcanzará los siguientes objetivos basándose en un enfoque de aprendizaje práctico a través de la comprensión de conceptos desde simples hasta complejos:
- Usar Python como una herramienta para importar, crear y ejecutar modelos MODFLOW.
- Desarrollar conocimientos sobre los conceptos más básicos de FloPy.
- Manejar las herramientas más populares de la librería FloPy.
- Usar FloPy en escenarios de casos reales y acoplarlo con otras librerías de Python.
Contenido
El diplomado se divide en seis módulos. A continuación se describe el contenido resumido de cada módulo:
Módulo 1. Introducción a Python
Este curso desarrolla los conceptos básicos de programación en Python bajo Jupyter. Los ejercicios cubrirán las estructuras de datos básicas de Python, declaraciones condicionales y bucles, combinados con una introducción a la manipulación de arreglos en NumPy, gestión de datos tabulares con Pandas y ejercicios aplicados con datos de precipitación.
Sesión 1: Tipos de datos en Python
Comprensión de la forma en que funciona Python y exploración de los tipos numéricos junto con operaciones matemáticas. También se revisan cadenas de texto y expresiones booleanas.- Conceptos básicos de la distribución Anaconda y herramientas de Jupyter Lab.
- Análisis léxico y sintáctico.
- Tipos y objetos (cadenas, listas, tuplas y diccionarios).
- Expresiones y operadores.
- Condiciones e iteraciones.
Sesión 2: Bucles y estructuras de datos en Python
Una revisión de las formas condicionales y funciones en Python con ejemplos prácticos de creación, indexación y gestión de listas, tuplas, diccionarios y conjuntos.- Listas.
- Funciones.
- Bucles con
whileyfor. - Diccionarios.
Sesión 3: NumPy para recursos hídricos
Esta sesión cubre los conceptos clave de la gestión de arreglos multidimensionales con NumPy.- Creación de arreglos en NumPy.
- Operaciones con arreglos de NumPy.
- Indexación y redimensionamiento de arreglos de NumPy.
Sesión 4: Manipulación de datos con Pandas
Esta sesión cubre los conceptos para analizar, explorar y manipular datos con ejemplos aplicados.- Filtrado de series temporales.
- Manipulación de columnas y filas.
- Cálculos y agrupaciones en Pandas.
- Exportación de datos.
Sesión 5: Visión general de Matplotlib
Esta sesión se enfoca en aprender a utilizar la librería Matplotlib, la cual proporciona bloques para crear visualizaciones para diferentes tipos de datos y cómo personalizarlas.- Introducción a Matplotlib.
- Creación de un gráfico simple utilizando Matplotlib.Personalización de gráficos.
- Gráficos de barras e histogramas.
- Gráficos de dispersión (scatter) y dispersión en 3D.
Sesión 6: Introducción a GeoPandas
Esta sesión cubrirá un análisis del impacto de áreas inundadas en la infraestructura utilizando Python y GeoPandas. El ejercicio mostrará cómo GeoPandas puede gestionar tanto el análisis espacial como las operaciones entre columnas.- Lectura de datos en GeoPandas.
- Trabajo con cadenas de líneas (linestrings) y puntos.
- Operaciones espaciales.
- Graficado de datos con Folium.
- Recorte y exportación de áreas inundadas.
Módulo 2: Modelamiento de aguas subterráneas con FloPy y MODFLOW-2005
Este módulo aborda los conceptos básicos del modelamiento de aguas subterráneas con FloPy, MODFLOW-2005 y MODFLOW-NWT. Los casos aplicados cubiertos en este módulo brindan al estudiante la funcionalidad general de FloPy con esta versión de MODFLOW.
Sesión 1: Ejemplo básico de creación y simulación de un modelo MODFLOW-2005 con FloPy
Esta sesión cubre un ejemplo básico de creación, configuración y simulación de un modelo en Python 3 en un Jupyter Notebook. El ejemplo también muestra el procedimiento para importar en Model Muse los resultados de MODFLOW generados con FloPy.- Construcción de la geometría del modelo.
- Configuración de condiciones de borde.
- Simulación del modelo y representación de cargas hidráulicas.
- Formato de salida para ser leído en Model Muse.
Sesión 2: Modelamiento de transporte de contaminantes en 2D con MODFLOW-2005, MT3D-USGS y FloPy
Esta sesión cubre la simulación de un modelo de transporte en 2D construido con FloPy, MODFLOW y MT3D. El modelo se construye sobre una malla estructurada y las condiciones de borde se establecen para condiciones de flujo en estado estacionario.- Definición de discretizaciones temporales y espaciales.
- Configuración de condiciones de borde para flujo y transporte.
- Definición de fuentes de contaminantes y parámetros de transporte.
- Graficado de la distribución de concentraciones.
Sesión 3: Modelamiento de transporte de contaminantes con esquema de remediación usando MODFLOW-2005, MT3D-USGS y FloPy
Esta sesión desarrolla un caso aplicado completo de modelamiento de flujo y transporte con MODFLOW, MT3D-USGS y FloPy. El caso de estudio describe un flujo regional de agua subterránea que tiene una fuente puntual con un esquema de remediación simulado en condiciones de estado estacionario para el flujo y transitorio para el transporte.- Configuración de un modelo MODFLOW con FloPy.
- Configuración de la discretización espacial y temporal.
- Configuración de un modelo MT3D-USGS con FloPy.
- Implementación de advección, dispersión y fuentes de masa.
Sesión 4: Ejemplo de modelamiento de rastreo de partículas con MODPATH 7, MODFLOW-2005 y FloPy
MODPATH es un paquete de posprocesamiento para el rastreo de partículas que calcula y muestra líneas de trayectoria tridimensionales basadas en los resultados de MODFLOW. Estas líneas de trayectoria ayudan a visualizar las trayectorias esperadas del transporte provenientes de una fuente contaminante específica. Este es un caso aplicado de rastreo de partículas con MODPATH 7 en una malla estructurada sobre MODFLOW-2005.- Definición de los datos del modelo de flujo.
- Creación de zonas, partículas y grupos de partículas en MODPATH.
- Ejecución de los modelos de flujo y rastreo de partículas.
- Graficado de los resultados de MODPATH 7.
Sesión 5: Determinación de vectores de dirección de flujo a partir de un modelo MODFLOW-2005 con Python y FloPy
La representación de la dirección del flujo de agua subterránea es útil para comprender las condiciones actuales y proyectadas del régimen de flujo. La dirección y magnitud de las flechas brindan una perspectiva rápida de las principales direcciones de flujo y de la interconexión entre las fuentes y los puntos de descarga. Esta sesión muestra el flujo de trabajo completo para determinar las direcciones de flujo a partir de un modelo MODFLOW realizado con Model Muse.- Definición de una imagen de fondo para la figura.
- Creación de un modelo MODFLOW como un objeto.
- Importación de algunos parámetros geoespaciales del modelo.
- Importación de las cargas hidráulicas de salida.
- Creación de los vectores de dirección de flujo.
Módulo 3: Modelamiento de aguas subterráneas con FloPy y MODFLOW6
En este módulo se cubren casos particulares para construir y simular modelos MODFLOW 6 con FloPy. Se hace un énfasis especial en abordar las diferencias entre MODFLOW 6 y otras versiones, y cómo estas diferencias se reflejan en los comandos y herramientas de FloPy.
Sesión 1: Ejemplo básico de modelamiento de aguas subterráneas con pozos y flujo regional en MODFLOW-6 con FloPy
Esta sesión muestra el procedimiento completo para configurar, ejecutar y visualizar un modelo básico de agua subterránea en MODFLOW 6 con FloPy. El modelo cuenta con 2 periodos de estrés, 800 celdas, 2 capas con cargas constantes a los lados para representar el flujo regional y pozos de bombeo ubicados en diferentes capas.- Creación del modelo y opciones del solver.
- Definición de la discretización temporal y espacial.
- Definición de parámetros hidráulicos, condiciones iniciales y condiciones de borde.
- Simulación del modelo y representación de los resultados.
Sesión 2: Ejemplo básico de modelamiento de aguas subterráneas en MODFLOW-6 y visualización con ParaView y FloPy
Ejemplo básico para aprender el procedimiento de construcción, simulación y representación de un modelo MODFLOW 6. El ejemplo muestra una introducción al sistema de archivos del modelo en condiciones de flujo en estado estacionario. El modelo se implementa con las siguientes condiciones de borde: Drenes, Recarga, Pozos y Carga Constante, y cuenta con 30 filas, 24 columnas y 3 capas.- Definición del modelo y discretización espacial.
- Aplicación de parámetros hidráulicos y condiciones iniciales.
- Configuración de condiciones de borde.
- Exportación de resultados como archivos VTK.
Sesión 3: Modelamiento de la respuesta del acuífero al bombeo con MODFLOW-6
La respuesta del acuífero al bombeo es una de las interacciones más comunes entre las actividades humanas y el régimen de flujo de agua subterránea. FloPy y Jupyter combinados pueden proporcionar formas nuevas y potentes de analizar la respuesta hidrogeológica a una prueba de bombeo en un modelo numérico.- Definición de nombres de simulación y nombres de modelos.
- Discretización temporal y espacial.
- Definición de conductividades hidráulicas y almacenamiento.
- Controles deslizantes interactivos para desplazarse a través de los pasos de tiempo.
Sesión 4: Modelamiento de aguas subterráneas con mallas triangulares en MODFLOW-6 con FloPy
FloPy cuenta con herramientas y funcionalidades para la generación de mallas triangulares. Esta sesión cubre el proceso completo para crear una malla triangular con las utilidades de FloPy e incorporarla a un modelo MODFLOW 6. El modelo se simula y los resultados se representan como una malla coloreada y líneas de contorno.- Definición del dominio del modelo y ubicación de drenes.
- Generación de malla triangular.
- Configuración del paquete de discretización triangular DISV.
- Simulación del modelo y representación de los datos de salida.
Módulo 4: Modelamiento regional y geoespacial con FloPy
Este módulo cubre ejemplos aplicados de modelamiento de aguas subterráneas a escala regional mediante el uso de librerías geoespaciales en Python. El módulo también explora FloPy para configurar información de coordenadas y otras características espaciales.
Sesión 1: Modelamiento regional de aguas subterráneas en cuencas andinas con MODFLOW y FloPy
Un caso aplicado de modelamiento regional en la cuenca Angascancha con FloPy y MODFLOW-NWT. El modelo se construye en condiciones de flujo en estado estacionario y la representación de los resultados se realiza con herramientas de FloPy y Matplotlib.- Apertura y lectura de archivos ráster.
- Definición de la discretización espacial.
- Escritura de archivos del modelo MODFLOW y ejecución de la simulación.
- Representación de la malla del modelo y las cargas hidráulicas.
Sesión 2: Desarrollo de un modelo geoespacial completo de agua subterránea con MODFLOW-2005 y FloPy
FloPy, la librería de Python para construir y simular modelos MODFLOW, cuenta con herramientas para georreferenciar la malla del modelo, incluso con opciones de rotación. El flujo de trabajo es explícito, lo que significa que el modelador requiere un conocimiento intermedio de las herramientas de Python y FloPy. Este caso aplicado muestra todo el procedimiento para crear un modelo de agua subterránea completamente geoespacial con MODFLOW y FloPy.- Definición de áreas de refinamiento y construcción de la discretización espacial/temporal.
- Definición del objeto GRIDGEN.
- Configuración de condiciones de borde RCH, EVT, WEL y GHB.
- Visualización de los resultados del modelo.
Sesión 3: Revisión, simulación y representación de resultados de un modelo MODFLOW-2005 para un túnel de infraestructura
Esta sesión cubre el procedimiento completo para leer, simular y analizar los resultados de un modelo MODFLOW-NWT del desarrollo de un túnel de infraestructura a lo largo del tiempo. El caso aplicado incluye una discusión y revisión de las diferentes herramientas disponibles en FloPy y su interacción con QGIS.- Visualización de la discretización del modelo y parámetros hidráulicos.
- Exportación de características del modelo a formato Shapefile.
- Lectura de balances hídricos por paso de tiempo como DataFrame de Pandas.
- Representación espacial de cargas hidráulicas.
- Creación de animaciones a lo largo de los periodos de estrés.
Módulo 5: Utilidades de FloPy para MODFLOW
La librería FloPy posee herramientas y utilidades para exportar datos y graficar resultados. Este módulo presenta casos aplicados de representación de cargas hidráulicas y exportación de datos en formato vectorial y de malla.
Sesión 1: Exportación de propiedades, condiciones de borde y contornos de carga en MODFLOW-6 como Shapefiles con FloPy
A veces es necesario representar las propiedades y salidas del modelo en otras plataformas como los SIG. FloPy incluye varias herramientas no solo para exportar la equipotencial de carga hidráulica en una capa determinada, sino también para exportar los diferentes parámetros del modelo como un archivo vectorial en malla. Esta sesión mostrará una visión general completa de las opciones de exportación de FloPy.- Apertura de un modelo regional.
- Configuración de la información de coordenadas.
- Exploración y visualización de los diferentes paquetes.
- Exportación de datos vectoriales en malla.
- Exportación de líneas de contorno.
Sesión 2: Cómo exportar características y cargas hidráulicas de un modelo 3D en MODFLOW-6 a formato VTK
FloPy tiene una herramienta para exportar modelos basados en mallas Estructuradas, de Vértices y No Estructuradas a formato VTK para ser visualizados dentro de Jupyter o en otros software como ParaView. Esta sesión cubre un ejemplo aplicado de generación de archivos VTK a partir de un modelo con malla estructurada en MODFLOW-2005 y su posterior visualización en ParaView.- Exportación del tope y fondo del modelo.
- Exportación de parámetros hidráulicos y condiciones de borde.
- Creación de un objeto VTK y exportación de datos seleccionados.
- Introducción a la visualización VTK en ParaView.
Sesión 3: Exportar y explorar datos masivos de un modelo MODFLOW-2005 con FloPy y NetCDF
La construcción y simulación de modelos puede generar cantidades enormes de datos. NetCDF es un formato diseñado para gestionar datos científicos orientados a arreglos con alto rendimiento; librerías de Python como Xarray ofrecen un mayor grado de funcionalidad al trabajar con datos matriciales y son capaces de abrir, leer y escribir archivos NetCDF. Esta sesión cubre un ejemplo aplicado de creación de un archivo NetCDF a partir de un modelo regional.- Apertura de un modelo regional.
- Exportación de características y datos de salida del modelo como NetCDF.
- Visión general del paquete Xarray.
- Exploración y consulta de datos en malla utilizando Xarray.
Módulo 6: Modelamiento de intrusión marina con FloPy
FloPy contempla dos opciones para el flujo de densidad variable: SEAWAT y el paquete BUY en MODFLOW-6. Este módulo incluye ejemplos aplicados para ambos casos, abarcando los modelos de flujo y transporte y el acoplamiento entre ellos.
Sesión 1: Ejemplo básico de modelamiento de intrusión salina con SEAWAT y FloPy
SEAWAT es un modelo desarrollado por el USGS para la simulación del flujo tridimensional de agua subterránea con densidad variable. Esta sesión muestra el flujo de trabajo completo para crear y representar un ejemplo básico de intrusión salina con SEAWAT y FloPy en un Jupyter Notebook.- Definición de dimensiones del modelo, discretización espacial y parámetros hidráulicos.
- Definición de los paquetes de flujo para el modelo SEAWAT.
- Configuración de los modelos MT3DMS y el paquete de flujo de densidad variable de SEAWAT.
- Posprocesamiento de los resultados del modelo.
Sesión 2: Modelamiento de intrusión marina con MODFLOW-6, Model Muse y FloPy
MODFLOW 6 implementa el paquete Buoyancy (BUY) para la simulación de casos de densidad variable e intrusión marina. Hemos desarrollado un caso aplicado de un modelo de intrusión marina en una geometría regular construida con FloPy para flujo y transporte.- Construcción de la geometría del modelo.
- Configuración de condiciones de borde.
- Creación de variables auxiliares y habilitación del paquete BUY.
- Definición del modelo de transporte, intercambio entre modelos y ejecución de la simulación.
- Importación y graficado de resultados.
Sesión 3: Acoplamiento de intrusión marina con FloPy y MODFLOW-6 (Paquete BUY) a un proyecto de Model Muse
El modelo de flujo de agua subterránea se construyó en Model Muse con dos periodos de estrés y un tiempo total de simulación de 40 años. Los archivos del modelo se importan con FloPy, donde se implementa el paquete BUY para flujo de densidad variable junto con el modelo de transporte.- Apertura de MF6 y exploración de paquetes.
- Revisión de geometría y condiciones de borde.
- Creación de variables auxiliares, habilitación del paquete BUY y definición del modelo de transporte.
- Exploración de los resultados de cargas hidráulicas y concentraciones.
Módulo 7. Modelamiento aplicado de aguas subterráneas con FloPy
Este módulo aborda casos reales de aplicación de FloPy. Los ejemplos cubiertos en este módulo contemplan escenarios particulares en el modelamiento de aguas subterráneas y brindan al estudiante un panorama del trabajo con FloPy en conjunto con otras librerías de Python.
Sesión 1: Cómo insertar una geología 3D en un modelo MODFLOW-2005 con FloPy
Este tutorial incluye un ejemplo aplicado de la implementación de un modelo geológico 3D (obtenido a partir de una red neuronal) dentro de un modelo de agua subterránea con una discretización horizontal y espesor de capa determinados. El tutorial cubre todos los pasos para la construcción del modelo y la determinación de unidades hidrogeológicas mediante scripts en Python con FloPy y otras librerías.- Definición del área de interés y refinamiento de la malla de salida.
- Creación de la topografía del modelo.Aplicación del modelo litológico en el paquete UPW.
- Comparaciones entre el modelo geológico original y el traducido.
Sesión 2: Análisis de sensibilidad de modelos de aguas subterráneas en MODFLOW-6 con FloPy y SALib
El análisis de sensibilidad se refiere al análisis de la incertidumbre en los resultados del modelo derivada de las incertidumbres en las entradas del mismo. Esta sesión cubre un caso aplicado de análisis de sensibilidad sobre un modelo básico de flujo de agua subterránea en MODFLOW 6 utilizando las librerías FloPy y SALib.- Definición de un modelo MODFLOW 6 como un objeto.
- Clase de Python para modificar parámetros.Implementación de SALib en un modelo MODFLOW 6.
- Visualización y análisis de resultados.
Sesión 3: Cálculo del esfuerzo efectivo a partir de un modelo de flujo de agua subterránea en MODFLOW-NWT con FloPy
Esta sesión cubre la deducción completa del cálculo del esfuerzo efectivo basado en la geometría del modelo y un ejemplo aplicado para el cálculo del esfuerzo efectivo en un modelo de flujo en una ladera. El modelo de ejemplo se desarrolló en MODFLOW-NWT y Model Muse, mientras que la determinación del esfuerzo efectivo se realizó con scripts en Python y FloPy.- Revisión del modelo de flujo en Model Muse.
- Apertura del modelo e importación de cargas hidráulicas.Cálculo del esfuerzo efectivo a partir de las cargas y la geometría.
- Exportación de esfuerzos efectivos como archivos VTK.
Sesión 4: Modelamiento de la respuesta del nivel marea en acuíferos costeros con MODFLOW-6, FloPy y Series Temporales
Un enfoque "híbrido" donde se construye un acuífero costero en Model Muse y posteriormente se importa mediante FloPy, reemplazando las condiciones de borde que representan la elevación del mar por una serie temporal, insertando nuevos periodos de estrés, modificando el espacio de trabajo y ejecutando la simulación.- Redefinición de la discretización espacial.
- Definición de series temporales y reasignación de condiciones de borde.
- Representación espacial de cargas hidráulicas.
- Comparación entre la elevación de la marea y los piezómetros.
Sesión 5: Calibración de modelos de aguas subterráneas respaldada por Machine Learning con MODFLOW-6, FloPy y Scikit-Learn
Un caso aplicado de un modelo de flujo de agua subterránea con ríos, lagos, recarga y flujo regional. A partir de un conjunto resultante de parámetros y sus correspondientes cargas hidráulicas, se realizó una regresión de Machine Learning con Scikit-Learn de forma inversa (de cargas a parámetros) para obtener los parámetros predichos para los datos observados.- Apertura de valores de parámetros y cargas hidráulicas.
- Definición de un escalador y conjunto de entrenamiento / prueba.
- Definición del método de regresión y predicción de valores para el arreglo de prueba.
- Predicción de parámetros del modelo.
Sesión 6: Supervisión técnica / auditoría de modelos de disponibilidad de aguas subterráneas (GAMs) con Python y FloPy - Caso Acuífero Rustler
Esta sesión cubre un caso aplicado de revisión de un modelo numérico a partir del informe y los datos abiertos publicados para el Acuífero Rustler, Texas, EE. UU. La revisión se realiza mediante scripts de FloPy que reproducen las figuras del informe y abren los datos de salida para extraer cargas hidráulicas en pozos seleccionados.- Configuración de la información de coordenadas para el modelo publicado.
- Generación de vistas de gráficos y secciones transversales.
- Exploración de la distribución de condiciones de borde.
- Generación del hidrograma de niveles de observación.
Instructor
Saul Montoya M.Sc.
Hidrogeólogo - Modelador Numérico
El Sr. Montoya es Ingeniero Civil graduado de la Pontificia Universidad Católica del Perú (Lima), con estudios de posgrado en Gestión e Ingeniería de Recursos Hídricos (Programa WAREM) en la Universidad de Stuttgart (Alemania), con mención en Ingeniería de Aguas Subterráneas e Hidroinformática. Cuenta con una sólida capacidad analítica para interpretar, conceptualizar y modelar el ciclo del agua superficial y subterránea, así como su interacción. Está a cargo del modelamiento numérico para transporte de contaminantes y sistemas de remediación de sitios contaminados. Dentro de sus investigaciones hidrológicas e hidrogeológicas, ha desarrollado una comprensión holística del ciclo del agua, entendiendo y cuantificando los principales procesos dinámicos hidrológicos de precipitación, escorrentía, evaporación y recarga al sistema subterráneo.
Durante los últimos nueve años, Saul ha desarrollado dos sitios web para el intercambio de conocimientos en recursos hídricos:
Metodología y Evaluación
Modalidad: Asincrónico (Offline)
Detalles sobre la metodología del diplomado:
Los manuales y archivos para los ejercicios se entregarán en nuestra plataforma de e-learning.
El curso se desarrollará mediante videos grabados que estarán disponibles en la plataforma.
Se cuenta con soporte para preguntas relacionadas con los ejercicios desarrollados a través del foro/correo electrónico.
Los videos de las clases estarán disponibles durante 12 meses.
La certificación y exámenes se organizan de la siguiente manera:
El programa consta de 3 exámenes que abarcan el contenido de los cursos.
El certificado digital estará disponible al finalizar el programa tras la aprobación de los exámenes.
Para recibir el certificado digital es obligatorio enviar los exámenes resueltos.