- Glosario
- Resumen
Ejecutivo - Antecedentes de la
Tesina - Introducción a la
Hidrogeología y la Simulación - El Ciclo del Agua y el Agua
Subterránea - Fundamentos teóricos y
aplicación en el modelo
numérico - Enfoque
económico - Herramientas empleadas en la
Teoría - Caso de Evaluación en
Laboratorio - Presentación del caso
práctico de explotación para
riego - Anexos
- Bibliografía y
Referencias Profesionales
- Acuífero: Formación
geológica subterránea con capacidad de almacenamiento de agua. /
Capa, zona o veta del terreno que contiene agua. - Base de Datos
Relacional: Conjunto de datos y métodos
para soporte de aplicaciones informáticas, compuesto por
un sistema
administrador de datos que cumple con los
enunciados del álgebra
relacional de base de datos,
proveyendo funciones de
definición y manipulación sobre aquellos, y un
conjunto de datos de tipos predefinidos, que se mantienen
grabados en forma estructurada. Generalmente compuesto por un
motor de base
de datos que implementa estructuras
arbóreas, y herramientas
de definición, consulta y manipulación de datos y
relaciones entre sí, cada una con un lenguaje de
interpretación específico (DDL, DML, SQL). - Caudales de bombeo constante = (m3/día)
= metros cúbicos x día - Densidad: Relación entre masa y
volumen de
un cuerpo. - Encamisado de tramo: Sección de una
perforación para explotación de agua
subterránea a la que se le coloca un tubo de material
rígido para reforzarla. - Ensayo de bombeo: Prueba de extracción
de agua mediante bombas en un
pozo de explotación de agua subterránea, que
determina su viabilidad dentro de ciertos parámetros de
utilización. - Factor de almacenamiento (confinado) = (m3/m)
= metros cúbicos x metro lineal - Fractales: Figuras geométricas
virtuales, formadas por un número infinito de elementos,
infinitamente pequeños, contenidos en una superficie
finita. - Grava: Guijas, guijarros, arena y arcilla que
se halla en yacimientos geológicos. - Hidrogeología: Rama de la geología que estudia las aguas dulces, en
particular la subterránea, y su
aprovechamiento. - Litología: Parte de la geología
que trata de la composición de las rocas. - Medio anisótropo: Medio que no posee
direcciones predeterminadas o privilegiadas con respecto a
alguna de sus propiedades. Con respecto a un acuífero,
medio que no presenta direcciones de flujo en el estudio del
movimiento
del agua. - Método de diferencias finitas: Método
algorítmico consistente en la determinación de
valores
finales aproximados a partir de valores iniciales ciertos,
aplicados a una función
no diferenciable, mediante el cálculo
en etapas ciertas o finitas, hasta alcanzar un error
máximo aceptable, discretizando un área en
matrices de
2 dimensiones. - Modelo matemático: Abstracciones de
representaciones del mundo real aplicadas al tratamiento
predictivo, que discretizan áreas o cuerpos en 2 o 3
dimensiones respectivamente, aplicando funciones aproximadas
del comportamiento de las propiedades que se quieren
estudiar. - Niveles piezométricos: profundidad
desde la superficie del terreno hacia el primer nivel de agua
subterránea. Asimismo aplicado a los niveles
subsiguientes. - Permeabilidad: Propiedad de
ser penetrado por el agua, o
de dejar salir la misma, con respecto a un acuífero y
sus límites
con otras formaciones geológicas. - Porosidad: Propiedad de poroso, con respecto
al tamaño de las partículas de las rocas de un
acuífero, que indica el espacio libre entre las mismas y
la viabilidad para almacenar agua. - Prefiltro de perforación: Filtro
antepuesto al filtro principal, en un pozo de
explotación de agua subterránea, generalmente
constituido de grava y gravilla. - Regresión no lineal: Es una
técnica para resolver las relaciones entre variables
independientes (o de regresión) en la definición
de un modelo,
mediante ecuaciones
no lineales. Estas variables no son aleatorias y por ende no
tienen propiedades distribucionales. - Método de Gauss Newton:
Consiste en minimizar una función objetivo de
potencias cuadradas, tal que la suma de los cuadrados de los
residuos (o errores) sea mínima. - Transmisividad: Propiedad de dejar fluir el
agua, con respecto a un acuífero, entre 2 puntos
cualesquiera (m3/día/m) = metros cúbico x
día x metro lineal.
En este trabajo se trata la aplicación de
técnicas estocásticas en el campo
de la simulación en hidrogeología para
predecir niveles de agua subterránea a través del
tiempo.
Para ello, se abordarán los conceptos de
modelos
numéricos tradicionales en el área en
cuestión, y se planteará la necesidad de
modificar los mismos cuando se carece de información cierta o valedera para su
ejecución satisfactoria, o ajuste posterior.
Una vez desarrollados los conceptos básicos del
tema, se realiza una introducción a los modelos
numéricos tradicionalmente empleados en
hidrogeología. Aquí se planteará el caso
híbrido: sobre un modelo analítico y certero, se
desarrollará una inicialización simulada,
estocástica, sobre las variables desconocidas al momento
inicial del desarrollo,
y también en aquellos casos puntuales donde no tengan
solución las ecuaciones
diferenciales tradicionales.
Finalmente, y contrastando contra los resultados de un
modelo analítico original, se verificará el
modificado, y se concluirá sobre si es aplicable o no y
en que medida.
Técnicamente hablando, y sobre los detalles del
trabajo, el mismo genera como resultado de la investigación y desarrollo, un software de
simulación para explotación de aguas
subterráneas, empleando métodos
estocásticos para la inicialización o
generalización de las propiedades físicas en el
momento de la corrida o ejecución del mismo.
Para una usabilidad del software mas eficiente, se
desarrolló una interfase visual en 3 dimensiones para el
sistema
operativo Ms-Windows95/98/NT, y una serie de funciones de
exportación de resultados, en formato de
grilla y DXF de AutoCad. La
visualización 3D incorpora un componente ActiveX de un
laboratorio
de software, el ESRI, dedicado justamente a mapeo y
extrapolación de objetos en 3 dimensiones.
La inquietud sobre el tema surge ya hace algunos
años en mi experiencia como becario del Programa
Nacional de Desarrollo
Sustentable en Aguas Subterráneas (PNDSAS),
perteneciente al Instituto Nacional de Ciencias y
Técnicas Hídricas (INCYTH), entre los años
1994 y 1996. Allí, como personal de
apoyo a los geólogos, me introduje en la teoría que sustenta los modelos
numéricos del área, y desarrollamos en conjunto
una actualización de las herramientas en uso desde la
década del ´70, básicamente un software de
simulación escrito en un lenguaje de
programación ya fuera de uso, Fortran 77, el cual
fue migrado por razones de compilación, mejor
abstracción y de mas actualidad técnica, hacia
el lenguaje
orientado a objetos C / C++ . Es sobre la base de este trabajo
que se extiende ahora el campo teórico, recurriendo a
métodos estocásticos.
Luego de finalizado en su momento el desarrollo de
programación, se adicionó al mismo
una base de datos de perforaciones hídricas de toda la
República Argentina,
sobre las cuales el Instituto tenía registros y
eran de interés
específico o de representatividad de alguna cuenca o
región hídrica. Con los registros así
obtenidos en diversas campañas de recolección, se
desarrolló una interfase visual con la herramienta
Microsoft
Access, y posteriormente se publicó en la World Wide
Web para mayor
difusión. Fue una tarea pionera en su área en el
país, que reunió mas de 1500 perforaciones e
informaciones conexas.
Este desarrollo no hubiese sido posible sin los
profesionales geólogos del Programa, el Dr. Jorge Santa
Cruz y el Dr. Adrián Silva, ambos referentes obligados
en su área. A pesar de los recursos
económicos, tan escasos que luego llevarían a
discontinuar el proceso de
desarrollo y focalizar al Programa en tareas de
prospección y trabajos científicos, vale
reconocer un esfuerzo que dio resultados mas que positivos y
concretos, que hoy día se siguen aplicando para
determinar, por ejemplo, la mejor ubicación y niveles de
producción de nuevas perforaciones
hídricas.
Ese trabajo resultó en un aporte concreto a
la economía nacional, tanto en el sector
público como privado. Y es una prueba de que la
investigación teórica y la aplicación
práctica en la ciencia y
técnica de un país en vías de desarrollo,
son necesarias y útiles, produciendo resultados
palpables.
Esto vale mas allá de la perspectiva financista
de caja chica que pudiera tener algún Ministro de
Economía circunstancial, que siempre recorta los
presupuestos, cuando no elimina completamente
la
educación y la investigación aplicada,
relegando al país a ser un mercado de
consumo de
productos
tecnológicos de avanzada de países
dominantes.
1.
Introducción a la Hidrogeología y la
Simulación
1.1_Introducción
a la Hidrogeología
Para comprender el problema que atacaremos, debemos
comprender primero de qué estamos hablando. Y para ello,
introduciremos conceptos y definiremos
términos.
La hidrogeología es la ciencia que
estudia las aguas dulces del planeta, especialmente las aguas
subterráneas, y en sus diversas dimensiones, sean
éstas tanto geológicas y físicas, como
económicas e industriales. Muy frecuentemente ese
estudio incluye la litología, o lo que es lo
mismo, el estudio de las rocas subyacentes.
Un acuífero es una formación
geológica subterránea con capacidad de
almacenamiento de agua. Los acuíferos pueden ser
confinados, en cuyo caso están rodeados por una
formación geológica generalmente impermeable, y
se comportan como una botella cerrada, como también
pueden ser libres, en cuyo caso no están
limitados por formaciones geológicas, ni poseen un
techo, sino que el flujo de agua interno es libre, y posee
contacto con el exterior, produciéndose evaporaciones
por calor o
incidencia del sol directamente, conocidas como
evapotranspiraciones. Asimismo, otra suerte de
acuífero es el semiconfinado, que es una mezcla
de los dos anteriores.
El acuífero posee diversas propiedades
físicas. La permeabilidad es una de ellas, y
significa el poder ser
penetrado por el agua, o de dejar salir la misma, con respecto
a sus límites con otras formaciones
geológicas.
Otra de sus propiedades físicas es ser un
medio anisótropo, o sea, es un medio que no
presenta direcciones de flujo en el estudio del movimiento del
agua.
También se tiene en cuenta la porosidad
con respecto al tamaño de las partículas de las
rocas del acuífero, que indica el espacio libre entre
las mismas y la viabilidad para almacenar agua. De ella surge
el factor de almacenamiento, que para acuíferos
confinados se mide en metros cúbicos por metro
lineal.
Muy vinculada a ésta última se halla
otra propiedad, la transmisividad: es la capacidad de
dejar fluir el agua entre dos (2) puntos cualesquiera, que
generalmente se mide en metros cúbicos por día
por metro lineal, usando el sistema métrico.
Para hacer esos estudios, la herramienta principal de
acceso al agua subterránea es la
perforación. La misma cuenta con diversas etapas,
desde la exploratoria, hasta la productiva comercialmente,
pasando por el desarrollo in situ.
Una perforación cuenta con diversos elementos
constitutivos:
Un encamisado de tramo, que es la
sección a la que se le coloca un tubo de material
rígido para reforzarla y evitar desmoronamientos
internos. Un filtro principal para dejar pasar solo el
agua y retener los materiales
gruesos y finos del acuífero, hecho de una malla o
similar, de acero
inoxidable usualmente, más un prefiltro de
perforación, que es el filtro antepuesto al filtro
principal, generalmente constituido de guijas, guijarros, arena
y arcilla. Y la válvula principal en la boca del
pozo para abrir o cerrar el paso del agua. Suele ir
acompañada de una bomba de extracción que
aspira el agua subterránea cuando ésta no es
capaz de surgir libremente al exterior, o si lo es, no en los
caudales necesarios.
En la perforación se practican ensayos de
bombeo, que son las pruebas de
extracción de agua mediante bombas, que determina su
viabilidad dentro de ciertos parámetros de
utilización (tiempos y caudales máximos). De
ellos se desprende la capacidad de recuperar sus niveles
freáticos, o sea los niveles de las napas de agua,
que es capaz un acuífero en determinado
momento.
De la necesidad de predecir niveles
freáticos futuros dado un caso de estudio comercial
o industrial, sobre la base de parámetros de
explotación, es que intervienen los modelos
matemáticos, ya que no se podrían realizar
ensayos de
bombeo en forma continua, sin perjudicar al acuífero o a
la inversión económica, puesto que
los ensayos cuestan tiempo y dinero.
Introducción a la
Simulación
La simulación es una técnica muy
poderosa y ampliamente utilizada para analizar y estudiar
sistemas
complejos, como lo es el hidrogeológico. Se puede
definir como la técnica que imita el funcionamiento de
un sistema del mundo real cuando evoluciona en el
tiempo.
Un modelo de simulación
comúnmente toma la forma de un conjunto de hipótesis acerca del funcionamiento del
sistema, expresado como relaciones matemáticas o lógicas entre los
objetos de interés del sistema. En contraste con las
soluciones
matemáticas exactas disponibles en la mayoría de
los modelos analíticos, el proceso de simulación
incluye la ejecución del modelo a través del
tiempo para generar muestras representativas de las mediciones
del desempeño o funcionamiento. En este
aspecto, se puede considerar a la simulación como un
experimento de muestreo acerca
del sistema real, cuyos resultados son puntos de muestra.
Es evidente que cuanto más puntos de muestra
generemos, mejor será nuestra estimación. Sin
embargo, hay otros factores que tienen influencia sobre la
bondad de nuestra estimación final, como las condiciones
iniciales de la simulación, la longitud del intervalo
que se simula y la exactitud del modelo mismo.
¿Qué es un modelo
matemático? Es una abstracción de
representación del mundo real aplicadas al tratamiento
predictivo, que discretizan áreas o cuerpos en 2 o 3
dimensiones respectivamente, aplicando funciones aproximadas
del comportamiento de las propiedades que se quieren
estudiar.
Un método de aplicación de modelos
matemáticos en hidrogeología es el
método de diferencias finitas, que consiste en la
determinación de valores finales aproximados a partir de
valores iniciales ciertos, aplicados a una función no
diferenciable, mediante el cálculo en etapas
finitas.
Es sobre este método y la forma de aplicar
soluciones estocásticas en donde se centrará el
presente trabajo .
2. El
Ciclo del
Agua y el Agua Subterránea
El agua subterránea es el agua que se encuentra
entre las partículas del suelo y las
rocas y entre las grietas del lecho rocoso. Debido a su
disponibilidad y buena calidad, en
general, el agua subterránea es usada ampliamente para
uso doméstico y otros propósitos.
Figura 1. El ciclo del agua |
2.2 El Agua Subterránea dentro del Ciclo
del Agua
El agua subterránea es una parte integral del
ciclo del agua (figura 1) . El ciclo empieza con la
precipitación sobre la superficie. Los escurrimientos de
la lluvia van directamente a los lagos y arroyos. Algo del agua
que se filtra en la tierra es
usada por las plantas para la
transpiración. El agua restante, llamada agua de recarga,
es llevada a través del suelo a la zona saturada, donde el
agua llena todos los espacios entre las partículas del
suelo y las rocas.
Lo más alto de la zona saturada es la capa o
manto freático que, si la geología local no es
complicada, es el nivel al cual el agua se mantiene en un pozo.
El agua se mueve dentro de la zona saturada desde áreas
donde la capa de agua es alta hacia áreas donde
ésta es baja, por lo que el agua subterránea se
transforma en lagos, arroyos u océanos. Esta sale del
subsuelo y forma el agua superficial, cuando esta agua se evapora
a la atmósfera y se condensa, viene la
precipitación completando el ciclo del agua.
2.3 ¿Dónde se halla el Agua
Subterránea?
El agua puede ser encontrada debajo de la tierra casi en
cualquier sitio. Cerca del 97 por ciento del agua dulce del mundo
es agua subterránea. La calidad y cantidad del agua
subterránea disponible varía de sitio a sitio. Las
reservas mayores de agua subterránea son llamadas
acuíferos.
Los acuíferos ocurren en dos tipos de formaciones
geológicas. Las formaciones consolidadas son aquellas
compuestas de rocas sólidas, donde el agua
subterránea se encuentra en las grietas que estas poseen.
La cantidad de agua en una formación consolidada depende
de la cantidad de grietas que existen y del tamaño de
éstas. Por ejemplo, las formaciones calizas frecuentemente
contienen cavernas con mucha agua en su interior.
Las formaciones no consolidadas están compuestas
de arena, grava, piedras, tierra suelta o material de suelos. La
cantidad de agua subterránea en una formación
consolidada varía en dependencia de la compactación
del material sólido y la finura de sus granos. Las
formaciones de arena, grava, y piedras generalmente producen
acuíferos de gran capacidad, sin embargo, los suelos
formados por partículas muy finas suelen tener bajas
cantidades de agua.
El agua subterránea puede salir
espontáneamente formando manantiales o puede ser
extraída a través de un pozo. Un manantial ocurre
cuando la capa de agua alcanza la superficie de la tierra (
figura 2) .
Figura 2. Relación de la capa |
2.4 Agua Subterránea y Agua
Superficial
La mayoría de las personas está
más familiarizada con el agua superficial que con el
agua subterránea. Los depósitos de agua
superficial como lagos, arroyos y mares pueden ser vistos en
los alrededores, pero no así los depósitos de
agua subterránea. Existen algunas diferencias entre el
agua subterránea y el agua superficial que vale la pena
aclarar.
El agua subterránea usualmente se mueve mucho
más lentamente que el agua superficial. El agua en un
arroyo puede moverse a varios metros por minuto, mientras que
el agua subterránea puede moverse sólo a varios
metros por mes. Esto es debido a que el agua subterránea
encuentra una fricción o resistencia
mayor al moverse a través de los espacios
pequeños de las rocas y del suelo. Existen excepciones a
esta regla, un ejemplo son los ríos subterráneos
en cavernas de roca caliza donde el agua puede moverse
relativamente más rápido.
Figura 3. Perdida y ganancia de |
Los intercambios de agua entre los depósitos de
agua superficial y los acuíferos son importantes. Los
ríos usualmente empiezan como pequeños arroyos y
aumentan el caudal a medida que fluyen hacia el mar. El agua
que ellos ganan frecuentemente viene del agua
subterránea. Esta corriente se denomina corriente
ganante. Es posible que las corrientes viertan agua al subsuelo
en algunos puntos. En estos casos, los acuíferos son
rellenados o recargados por agua de corrientes de
pérdida. Un arroyo que fluye cerca de la superficie de
un acuífero perderá agua hacia el acuífero
sí la superficie de agua del arroyo es más alta
que la capa de agua del acuífero en la tierra adyacente.
(figuras 3a y 3b)
2.5 Contaminación y Sobreexplotación :
Amenazas para el Agua Subterránea
El agua subterránea se contamina cuando algunas
sustancias tóxicas se disuelven en el agua superficial y
son acarreadas o lixiviadas a acuíferos con el agua
percolada. Se deben considerar las propiedades y cantidades de
las sustancias tóxicas y del suelo encima del
acuífero para determinar si una sustancia en particular
contaminará a un acuífero
específico.
Algunas veces la contaminación del agua subterránea
ocurre en forma natural, pero la
contaminación aguda es usualmente el resultado de las
actividades humanas en la superficie de la tierra. Un
acuífero provée una gran cantidad de agua que
frecuentemente atrae a una gran cantidad de personas en sus
alrededores.
El agua es usada en actividades tales como beber,
higiene
personal, mantenimiento
residencial y con propósitos industriales o
agrícolas. Muchas de estas actividades involucran el uso y
desecho de productos químicos que son potencialmente
contaminantes. Cuando estos productos químicos son usados
o desechados en forma incorrecta y en cantidades inaceptables,
pueden llegar al agua subterránea y
contaminarla.
Debido a que el agua subterránea se mueve
lentamente, pueden pasar varios años antes de que un
contaminante, liberado en la superficie de la tierra encima del
acuífero, sea detectado en el agua del acuífero a
cierta distancia del sitio de contaminación.
Desafortunadamente, esto significa que la contaminación
ocurre antes de que sea detectada. Aun si se ha detenido la
liberación del contaminante, pueden pasar varios
años antes de que el acuífero se purifique en forma
natural.
Figura 4. Intrusión del agua |
Aunque el agua puede ser tratada para
remover los contaminantes, esto puede ser muy costoso. La mejor
protección contra la contaminación es la
prevención.
El agua subterránea se agota en un área
cuando se consume más agua de la que ingresa al
acuífero. Esto causa que el manto freático
disminuya, por lo que el agua subterránea se hace
más difícil y cara de extraer. Puede suceder que se
bombee una gran cantidad de agua de un acuífero
pequeño y esto cause que el pozo del vecino se seque (el
manto freático queda por debajo del nivel del pozo). La
rápida expansión de las áreas urbanas
resulta en el sobreuso de los suministros del agua
subterránea y provoca su agotamiento y
contaminación. En las áreas costeras, el
sobrebombeo crónico puede causar la intrusión de
agua salada ( figura 4) . La intrusión de agua salada
ocurre en las zonas costeras donde la extracción excesiva
de agua dulce permite que el agua salada del mar se introduzca
dentro del acuífero.
2.6 Causas de la contaminación del Agua
Subterránea
Muchas actividades humanas en la superficie de la
tierra causan cambios en la calidad del acuífero. La
importancia del efecto de una actividad en particular
está relacionada con la habilidad del suelo y del
sistema hídrico subterráneo de degradar o diluir
los contaminantes así como del grado en que los
contaminantes interfieran con el uso del agua. La
contaminación es más aguda en las reservas de
agua potable que en el agua para otros usos.
Todos los contaminantes del agua subterránea
entran al acuífero, esencialmente, a través del
agua de recarga de la superficie, con excepción de
aquellos casos en que el agua contaminada es inyectada
directamente en el acuífero. Algunos ejemplos de
contaminantes son:
- Productos químicos orgánicos
sintéticos (pesticidas y productos del petróleo) - Metales pesados como el mercurio, arsénico,
cadmio, cromo y plomo - Nitratos
- Bacterias y virus
- Residuos del petróleo y productos de la
combustión de motores
Estos son considerados dañinos sí se
ingieren con el agua potable, y pueden ser acarreados al agua
superficial por el agua subterránea.
Cada actividad humana tiene un aspecto particular en el
agua subterránea. Algunas actividades agrícolas
añaden nitratos y pesticidas al agua
subterránea.
Las áreas residenciales con tanques
sépticos usualment adicionan nitratos, bacterias,
virus y productos orgánicos sintéticos de limpieza
usados en la limpieza casera y limpiadores de tanques
sépticos.
Las actividades industriales tienden a añadir
productos químicos orgánicos y metales en
variadas cantidades. Las áreas de almacenamiento de
gasolina (incluyendo las estaciones de servicio)
pueden tener fugas y derramar los productos derivados del
petróleo.
Las carreteras contribuyen a la contaminación
debido al petróleo que es derramado por los
vehículos y los metales que salen del escape. El impacto
mayor viene de los basureros antiguos cubiertos cuyas
filtraciones pueden contener diferentes sustancias
químicas en una concentración relativamente alta (
Figura 5) .
Figura 5. Contaminación del Agua por Basurero Cubierto |
2.7 Protección de las Aguas
Subterráneas
La protección contra la contaminación de
nuestra agua subterránea requerirá un manejo
conciente y la cooperación por parte de los ciudadanos y
de varias instancias gubernamentales. En varios casos, la
planificación del uso del suelo es la mejor
medida disponible para proteger los acuíferos que
aún contienen agua de buena calidad. Si se planifica la
localización de fuentes
potenciales de contaminación y se les ubica lejos de las
áreas críticas de recarga, el riesgo de
contaminación se reducirá notablemente.
El uso cuidadoso y la eliminación apropiada de
los productos químicos que causan contaminación son
también necesarios. Las industrias, las
granjas y los vecinos asentados encima de las reservas de aguas
subterráneas necesitan practicar un buen manejo con
respecto al uso y eliminación de productos
químicos.
Los reglamentos gubernamentales para el uso y
eliminación de materiales tóxicos tienen que
cumplirse. Un paso igualmente importante es hacer que las
personas estén concientes del impacto potencial que ellos
pudieran tener en el agua subterránea.
3. Fundamentos teóricos y
aplicación en el modelo
numérico
En el año 1856, Darcy confirmó la
aplicabilidad de los principios de
tubos capilares, desarrollados años antes por Hagen y
Poiseuille, al flujo de agua a través de medios
porosos. La llamada Ley de Darcy se expresa como :
v = k s
siendo v la velocidad
del flujo, s la pendiente del gradiente hidráulico y k
es un coeficiente que tiene unidades de velocidad, generalmente
metros por día. El caudal, q, es el producto del
área A de la sección transversal y la velocidad.
El área efectiva es el área total multiplicado
por la porosidad del medio, p. Por lo tanto,
q = kpAs = K(p)As
El coeficiente K(p) se denomina coeficiente de
permeabilidad o conductividad hidráulica. Depende las
propiedades del fluido y del medio poroso y se puede expresar
como:
K(p) = k(w/u) = Cd²(w/u)
donde k es la permeabilidad intrínseca, w es el
peso específico del fluido, u es la viscosidad
absoluta, C es un factor que describe la forma, porosidad y
otras características del medio, y d es el
tamaño promedio de los poros del material.
Es conveniente utilizar la transmisividad T para
representar el flujo, en metros cúbicos por día,
a través de una sección de 1 metro y una altura
igual al espesor del acuífero bajo la acción de
un gradiente unitario:
T = K(p)Y
donde Y es el espesor saturado del acuífero.
Con este nuevo coeficiente, la ecuación pasa a
ser
q = TBs
donde B es el ancho del acuífero.
Esta Ley de Darcy (Ley del Movimiento de Fluido) se
aplica en modelos numéricos para abstraer y modelar el
comportamiento de acuíferos.
3.2 Equilibrio
Hidráulico en Pozos
Las perforaciones en el terreno, tubulares y con una
bomba mecánica en la mayoría de los
casos, y que penetran perpendicularmente al manto
freático y son de utilidad
hogareña, comercial o industrial, se conocen como pozos
de extracción, o simplemente pozos.
Para que se establezca un flujo de agua hacia el pozo,
es necesario que exista un gradiente hidráulico en la
dirección del pozo. La forma inconfinada
resultante se denomina cono de depresión. Si el abatimiento o descenso
de la capa freática es pequeño con respecto al
espesor del acuífero, se puede deducir una
fórmula aproximada que relacione el caudal del pozo con
las características del acuífero .
q =
2ПxyK(p)(dy/dx)
donde 2Пxy es el бrea del cilindro y dy es
la pendiente de la tabla de agua. Integrando con respecto a x ,
distancia a la perforaciуn desde dos puntos
de observación, r1 y r2, y desde la base del
acuífero hasta el nivel freático medido en esos
puntos de observación, h1 y h2, se obtiene
q =
ПK(p)( h1І – h2І
)
ln(r1 / r2)
donde h es la altura de la tabla de agua sobre la base
del acuífero, a una distancia r del eje del pozo de
bombeo y ln es el logaritmo de base e. Ésta es la
ecuación propuesta por Dupuit en el año 1863,
justamente para medir el caudal (*).
(*) LINSLEY, KOHLER y PAULUS, "Hidrología para
Ingenieros", 2da. Edición, McGraw-Hill de México S.A., México,
1977.
3.3 Desequilibrio Hidráulico en
Pozos
Existe una sobreestimación del caudal
hipotético del pozo aplicando la ecuación de
Dupuit. Esto se debe a que durante el período inicial de
bombeo de un pozo nuevo, la mayoría del caudal se
obtiene del almacenamiento contenido en la parte del
acuífero que se deseca a medida que se desarrolla el
cono de depresión. Y el análisis en condiciones de equilibrio
producen valores muy altos de la permeabilidad, cuando se
calcula el caudal potencial.
Para corregir eso, en 1935, Theis, presentó una
fórmula basada en una analogía de
transmisión del calor, que tiene en cuenta el efecto del
tiempo y las características de almacenamiento del
acuífero.
W(u) = Z(r) = q
ò (e^-u /
u)du
4ПT
donde Z(r) es el abatimiento o depresión de un
pozo de observación a una distancia r del pozo de
bombeo, q el caudal en metros cúbicos por día, T
es la transmisividad en metros cúbicos por día
por metro, y u está dada por
u =
r²S(c)
4Tt
donde t es el tiempo en días desde el inicio
del bombeo, y S(c) es la constante de almacenamiento del
acuífero o el volumen de agua desplazada en una columna
del acuífero de 1 (un) metro cuadrado, cuando la
superficie piezométrica desciende 1 metro. La integral
de la función W(u) o Función del Pozo, puede
resolverse por series (*) :
W(u) = -0.5772 – ln(u) + u
– u²/2.2! + u³/3.3! ….
(*) LINSLEY y otros,Op. Cit.
Los procedimientos
de Dupuit, Theis y demás son valederos para pozos
individuales. Cuando se quiere estudiar un acuífero, se
debe recurrir a técnicas mas sofisticadas.
Si el estudio requerido implica analizar el
acuífero en forma bidimensional, se puede recurrir a un
aparato de Hele-Shaw, que consta de dos láminas de
vidrio y una
separación muy pequeña, con un líquido
viscoso entre ambas láminas. Las ecuaciones que
gobiernan el flujo viscoso son las mismas que para agua
subterránea.
Cuando se requiere el estudio tridimensional de los
acuíferos, es solo posible con el uso de modelos
analógicos o digitales (computadores).
Cuando se plantea un modelo analógico, se
fabrica una red de
resistores y capacitores
en el cual el voltaje es análogo al potencial del flujo
y el caudal es análogo a la corriente
eléctrica; la permeabilidad se simula por medio de
la resistividad.
Para el modelo en computadores digitales modernos, se
recurre a la solución de la ecuación
básica de flujo de aguas subterráneas:
δ²h
+ δ²h
= S(c)δh
δx² δy² T
δt
En términos de diferencias finitas, que es la
forma de representar esta ecuación para un modelo
numérico digital, la misma es:
h2 + h4 – 2h1 + h3 +
h5 –2h1 = h2 + h4 + h3 + h5 – 4h1 =
S(c) h
a² a² a² T
δT
donde a es la separación de las celdas de la
red. Los
tamaños de la red van desde los 30 a los 3.000 metros de
acuerdo con la naturaleza del
problema. Las propiedades del acuífero se deben
suministrar en cada punto de la red (espesor, permeabilidad, y
el coeficiente de almacenamiento). Si estas propiedades no se
definen con precisión, la solución obtenida
estará errada. (*)
(*) LINSLEY y otros,Op. Cit.
3.5 Distribuciones Fractales para valores
iniciales del modelo
La Teoría del Caos hace su aporte a la
simulación en el campo de la hidrogeología , al
aportar patrones de distribución de aportes de agua (lluvias
o también sequías) , en forma no uniforme, a lo
largo y ancho del área que se desea simular.
Es muy conveniente contar con una distribución
de este tipo al iniciar un modelo de simulación, para no
observar patrones constantes ni uniformes que luego
jamás son verificados en la realidad del campo de
trabajo.
El aporte significativo se hace con tres tipos de
métodos que figuran otros tantos tipos de superficies u
obstáculos en el terreno : Lorenz, Henon y
Sierpinski.
El método de Lorenz inicializa un volumen y/o
superficie sobre la base de tres ecuaciones con polinomios,
siguiendo un patrón de generación de tipo
fractal.
El "Atractor de Lorenz" es un conjunto simple de tres
ecuaciones deterministas desarrolladas por Eduard Lorenz
mientras estudiaba patrones climáticos no repetitivos.
El problema básico en la predicción del clima es que
ante cambios pequeñísimos en las condiciones
iniciales, eventualmente reduce la mejor predicción a
nada.
El atractor de Lorenz es la órbita de un
sistema dinámico consistente en tres ecuaciones
diferenciales de primer orden. La solución a la
ecuación diferencial es una función de
parámetro vectorial de una variable. Si se piensa en
términos de tiempo, la solución traza una
órbita, la cual está dibujada de dos espirales a
cierto ángulo una de otra en tres
dimensiones.
Las ecuaciones son :
dx/dt = -a*x + a*y
dy/dt = b*x – y -z*x
dz/dt = -c*z + x*y
Este método representa muy bien las
distribuciones iniciales ( de lluvia por ejemplo) en un terreno
donde existen por ejemplo lagunas o montes
enfrentados.
El método de Henon inicializa una superficie
sobre la base de dos ecuaciones de polinomios, siguiendo un
patrón de generación de tipo fractal.
Michel Henon fue un astrónomo en el
observatorio de Niza, en Francia.
Él llegó al tema de los fractales a través
de investigaciones
en las órbitas de objetos astronómicos. El
atractor extraño, nombrado en honor a Henon, no se
inicia en ecuaciones diferenciales, sino en el mundo de las
matemáticas discretas.
El mapa de Henon es un ejemplo de un sistema simple
que exhibe un comportamiento extraño. La órbita
se traza con la característica de contorno de una
banana, pero si se inspecciona mas y más detalladamente,
está hecho de partes gruesas y finas. A través de
un detalle mayor, las partes gruesas se resuelven en otros
componentes gruesos y finos. Y así
indefinidamente.
dimX = 1 + y – a*x*x
dimY = b*x
Los parámetros por omisión son a=1.4 y
b=0.3.
El método de Sierpinski inicializa una
superficie sobre la base de dos ecuaciones de polinomios,
inicializados en forma aleatoria en arreglos vectoriales, y
siguiendo un patrón de generación de tipo
fractal.
Es otro modelo clásico previo al clásico
Mandelbrot, y fue hallado por W. Sierpinski en los tiempos de
la Primera Guerra
Mundial. Es generado a través de la división
de un triángulo en cuatro triángulos más
pequeños y congruentes, repitiéndolo lo mismo una
y otra vez, hasta el infinito.
No hay parámetros para ejecutar este
patrón, ni ecuaciones complicadas.
La simulación de Monte Carlo fue creada
para resolver integrales
que no se pueden resolver por métodos analíticos
: para resolver estas integrales se usaron números
aleatorios. Posteriormente se utilizó para cualquier
esquema que emplee números aleatorios, usando variables
aleatorias con distribuciones de probabilidad
conocidas, el cual es usado para resolver ciertos problemas
estocásticos.
Por lo tanto es un proceso computacional que utiliza
números aleatorios para derivar una salida, por lo que
en vez de tener entradas con puntos dados, se asignan
distribuciones de probabilidad a alguna o todas las variables
de entrada. Esto generará una distribución de
probabilidad para una salida después de una corrida de
la simulación.
Muestreo de Monte Carlo
El principio para hacer un muestreo en el caso de
distribuciones discretas se basa en la representación de
las frecuencias según su ley de probabilidad, que
implica que los resultados se presentaran con las frecuencias
especificadas por la distribución de probabilidades.
Pero además de obtener las frecuencias correctas, el
procedimiento
de muestreo debe ser independiente; esto es, cada evento que se
genera debe ser independiente de los eventos que le
anteceden y que le siguen.
Una sucesión de números enteros
aleatorios es tal que cada numero en la secuencia tiene la
misma probabilidad de ocurrir, y cada numero aleatorio es
independiente de los números anteriores y posteriores de
él. Técnicamente, un numero aleatorio, Ri se
define como una muestra aleatoria independiente tomada de una
distribución continua uniforme cuya función de
densidad de
probabilidad esta dada por
- 0 =< x =< 1
F(x) =
- en cualquier otro caso
Así, cada numero aleatorio estará
distribuido uniformemente sobre el intervalo entre 0 y 1. En
consecuencia, es común referirse a estos números
como números aleatorios U(0,1), o simplemente como
números aleatorios uniformes (equiprobables).
Se pueden generar números aleatorios uniformes
de muchos modos distintos. Como nuestro interés sobre
los números aleatorios es para usarlos en
simulación, necesitamos poder generarlos en una computadora.
Esto se hace mediante funciones matemáticas llamadas
generadores de números aleatorios. Algunos de
esos generadores comprenden el generador congruente lineal, el
generador multiplicativo y el generador mixto.
Además de las propiedades estadísticas, los generadores de
números aleatorios deben tener otras
características importantes si se van a usar en forma
eficaz en simulaciones con computadora. Algunas de estas
características son:
- La rutina debe ser rápida
- La rutina no debe necesitar un gran espacio de
almacenamiento. - Los números aleatorios deben ser
reproducibles - La rutina debe tener un ciclo suficientemente largo;
esto es, debemos poder generar una sucesión larga sin
repetir los números aleatorios.
El procedimiento para generar números
aleatorios consta de dos pasos:
- Se elabora la distribución de probabilidad
acumulada para la variable aleatoria dada. - Se usa esa distribución para asignar los
números aleatorios enteros en forma directa a los
diversos valores de la variable aleatoria.
La hidrogeología contiene un componente
económico fundamental, ya que realiza
investigación y provee información sobre el agua
del subsuelo, su composición, calidad, disponibilidad,
magnitud de reserva, y algo fundamental, la viabilidad de
explotación de esas aguas, que en términos
económicos, significa evaluar si su extracción es
posible, cómo, cuándo y dónde.
El cómo implica calcular las magnitudes de
volúmenes posibles de agua a extraer, sin afectar en el
futuro esa explotación . Se conoce como
explotación sustentable. Es donde los modelos
numéricos entran a jugar, y es donde también su
eficacia
(certeza) en la predicción se hace
fundamental.
El cuándo implica determinar períodos de
espera si se ha saturado la explotación, si se ha
agotado, si el cono de depresión formado por la
extracción exagerada es muy pronunciado, y demás.
Está muy relacionado con el punto anterior, del
cómo. Y depende también mucho, de cómo se
planifica el modelo numérico a través del
tiempo.
El dónde implica realizar perforaciones del
suelo y analizar sus componentes. Se utilizan métodos
analíticos y técnicas geológicas
modernas.
4.1 Diferencia entre el mundo real y el
simulado
Los modelos son abstracciones de la realidad, nunca
son la realidad que representan, y por ello tienen errores al
intentar simularla.
Siempre existen desviaciones entre lo simulado y lo
real, que se corrigen a medida que las simulaciones avanzan y
se contrastan contra lo real, ajustando a posteriori los datos,
y volviendo a ejecutar las simulaciones. Es un proceso de
retroalimentación, sin el cual,
sería muy imprudente tomar como certeras las
predicciones realizadas.
Para ello, el trabajo
del hidrogeólogo en el campo o en el laboratorio, es
disciplinado. Cada simulación se verifica y corrige.
Para ello, dispone de diversos modelos numéricos, de los
cuales, los mas aplicados, Prickett-Lonnquist y ModFlow, se
presentan mas adelante. De ellos, el modelo Prickett-Lonnquist,
es el mas utilizado y difundido en nuestro país, y sobre
el cual el Instituto de Aguas, a través del Programa
Nacional de Desarrollo Sustentable en Aguas
Subterráneas, ha desarrollado las políticas científicas y
económicas tendientes a su mayor
aplicación.
4.2 Políticas Científico –
Económicas
Dentro de las políticas
científico-económicas, se encuentran el
relevamiento en el ámbito nacional de todas las
perforaciones de explotación de aguas
subterráneas, su compilación y publicación
como banco de datos,
como también el dictado de cátedras en la
Universidad
de Buenos Aires, y
presentaciones en Ferias del Agro, donde se publicita y explica
el uso de los modelos numéricos.
Como necesidad de contar con modelos numéricos
más certeros y aproximados a lo real, y por ende,
económicamente mas ajustados, se plantea el ajuste de
los tradicionales modelos numéricos de diferencias
finitas, usando técnicas estocásticas.
¿Porqué técnicas
estocásticas y fractales? La respuesta está en
los datos y no en las ecuaciones de diferencias finitas de los
modelos. No existen suficientes datos para correr los modelos
numéricos en todas las zonas del país, y si
existen, no son absolutamente confiables, o si lo son, no
fueron recopilados en forma estadística en un largo período de
tiempo.
Allí donde son necesarios, los datos son
generados en forma estocástica, y donde las ecuaciones
de diferencias finitas no tienen solución,
también. Ese es el aporte que realiza este trabajo, que
tienen una implicancia económica importante.
5. Herramientas empleadas en la
Teoría
En el campo de la hidrogeología, se dispone de
dos (2) modelos numéricos de predicción de
niveles freáticos, Prickett-Lonnquist y ModFlow. Ambos
desarrollan ecuaciones diferenciales, bien conocidas y con
solución, razón por la cual no es necesario una
modelación estocástica completa y
pura.
El ModFlow es invención del United States
Geological Survey, y data de 1984 con sucesivas adaptaciones y
mejoras hasta 1990 inclusive. Es el modelo numérico en
uso actualmente en ese país, el mas ampliamente aceptado
y documentado. Su uso es complejo y requiere mucho trabajo de
campo para relevar los parámetros iniciales y ajustes
posteriores.
El Prickett-Lonnquist es invención asimismo del
Illinois State Water Survey, también de los EE.UU., y
data de 1971. Si bien ya casi no posee difusión ni uso
en los EE.UU., es el modelo matemático mas ampliamente
difundido y sobre el cual se han capacitado los especialistas
de nuestro país. Su uso es mucho más sencillo que
el ModFlow en cuanto al trabajo de campo requerido.
Debido a esto último, al uso en nuestro
país y su capacitación y aceptación entre
los profesionales del área, se ha decidido implementar
la programación de los módulos
estocásticos sobre este primer modelo, para luego de
probar y aceptar su validación.
A continuación, una resumen
funcional-matemático de los mismos.
El modelo en uso por la United States Geological
Survey (USGS) es conocido como MODFLOW, de medio de
aplicación terrestre (*), usado para
hidrogeología, siendo un tipo de modelo de ecuaciones
diferenciales parciales (diferencias finitas y tridimensional)
junto a ecuaciones algebraicas estáticas, principalmente
para investigación. Utiliza regresión no lineal
para estimar los parámetros de entrada. Los
parámetros son estimados por minimización de una
función objetivo de potencias cuadradas mediante
Gauss-Newton.
La regresión no lineal es una técnica
para resolver las relaciones entre variables independientes (o
de regresión) en la definición de un modelo,
mediante ecuaciones no lineales.
El método de Gauss Newton consiste en minimizar
una función objetivo de potencias cuadradas, tal que la
suma de los cuadrados de los residuos (o errores) sea
mínima.
Otro modelo usado hoy día por los expertos en la
materia es el
PLASM, o Prickett Lonnquist Aquifer Simulation Model, aunque el
mismo es anterior al MODFLOW. El mismo también es de medio
terrestre (*), aplicado en hidrogeología, con una organización orientada al ecosistema, y
al igual que el ModFlow, resuelve ecuaciones diferenciales
parciales (diferencias finitas tridimensionales).
Las adaptaciones estocásticas a los modelos
numéricos tradicionales se programarán sobre el
modelo PRICKETT. Esas adaptaciones implica incorporar
simulaciones al estado inicial
del modelo (donde generalmente se desconocen los
parámetros iniciales) usando los algoritmos de
generación de fractales de Sierpinski, Lorenz y Henon para
la distribución aleatoria de valores iniciales y
generación de valores desconocidos al inicio de la corrida
del modelo. También se usa Monte Carlo para los mismos
fines.
(*) Clasificación adoptada por el Proyecto ECOBAS
(base ecológica de modelos numéricos), Universidad
de Kassel, Dinamarca (
) Incluye también otros medios de aplicación,
como ser acuáticos, y aéreos. Y no solo se
clasifica el medio de aplicación, sino la teoría
matemática
utilizada para resolverlos. Es una clasificación realmente
ejemplar.
6. Caso de Evaluación en
Laboratorio
6.0 Interfase del software para modelizar :
¿Como ejecutar el modelo?
Para todos los casos de evaluación del modelo,
se utilizó el software desarrollado. La interfase
gráfica y su nomenclatura,
se explican a continuación, en forma breve, y puede
hallarse una ampliación de la misma en el anexo
8.2
Una vez ejecutado el programa "Prickett.Exe", se
presenta el menú de selección para ejecutar el modelo en
cuestión.
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
La nomenclatura que hallamos es la siguiente:
- Niveles piezométricos = (m) metros
- Factor de almacenamiento (confinado) (m3 / m) =
metros cúbicos x metro lineal - Caudales de bombeo constante (m3 / día) =
metros cúbicos x día
Transmisividad entre 2 nodos cualesquiera (m3 /
día / m) = metros cúbico x día x metro
lineal
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
- Cantidad de filas / columnas: Número de nodos
laterales que contendrá la superficie a
modelizar. - Cantidad de Ciclos: Iteraciones del modelo antes de
la convergencia del error máximo admitido. - Delta del tiempo: Tiempo referencial entre cada
iteración. - Incremento del delta: Incremento del delta del tiempo
referencial. - Error admisible: Error máximo acumulado
admisible por las iteraciones del modelo. - Transmisividad inicial: indicador de esta propiedad
al inicio del modelo, en m3/día/m. - Nivel freático inicial: valor por
omisión de iniciación de la superficie, en cierto
nivel freático, en m. - Almacenamiento inicial: indicador de esta propiedad
al inicio del modelo, en m3/m. - Bombeo inicial: indicador de esta propiedad al inicio
del modelo, generalmente representativo de una
explotación artificial (planta de bombeo de agua), en
m3/día. - Evaporación inicial : indicador de esta
propiedad al inicio del modelo, en m3/día.
6.1 Presentación del caso de
laboratorio
Para el primer caso de evaluación y ajuste, se
tomó como sistema real a una perforación de
laboratorio, en la zona propiedad del Instituto Nacional de
Aguas, AU Ezeiza-Cañuelas, Tramo J. Newbery, Km 1,620
(B1804) Ezeiza, Pcia. Buenos Aires, Argentina
La zona cuenta con una única bomba para
extracción de agua, y es un terreno llano de la
típica Pampa Húmeda bonaerense, sobre un
área de campo de 100 x 100 m (1 hectárea),
simulada en una grilla de 20 x 20 celdas (separación de
5 m entre celdas), al aire
libre.
Para comparación de los métodos de
iniciación, se ejecutó el modelo PRICKETT en las
4 variantes posibles de distribución fractal
inicial.
Los parámetros de ejecución del modelo
se definieron en todos los casos como:
- Grilla de 20 x 20 celdas
- 10 ciclos de simulación representando 10
días - Error admisible acumulado de 1 en cada
ciclo - Transmisividad de 0,5 m3/ día /m
- Niveles de agua originalmente en 0 metros
- Almacenamiento inicial 0,1 m3/m
- Evaporación inicial 0.01 m3/día, no
uniforme, sino según distribución
inicial - Bomba de explotación en el centro del
área, posición [10,10] - Caudal de explotación de 2,5
m3/día
A continuación se presentan los resultados en
diversas grillas, según muestra el software
desarrollado, contando una grilla para cada caso de
iniciación estocástica y por Monte
Carlo.
6.2 Prickett estándar,
inicialización uniforme de
estados
Para la iniciación estándar, en forma
uniforme, se observa que al cabo de los 10 ciclos del modelo,
en la posición de la bomba de extracción se halla
una depresión del nivel freático de 2,203m con
respecto al nivel inicial, y en un radio de 5m, la
depresión es mayor a 1m, siendo aceptable entonces la
incidencia del bombeo sobre el terreno.
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
6.3 Prickett utilizando el método de
Lorenz para iniciación
Para la iniciación con el método de
Lorenz, se observa que al cabo de los 10 ciclos del modelo, en
la posición de la bomba de extracción se halla
una depresión del nivel freático de 2,047m con
respecto al nivel inicial, y en un radio de 5m, la
depresión es menor a 87cm, siendo aceptable entonces la
incidencia del bombeo sobre el terreno.
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
6.4 Prickett utilizando el método de Henon
para iniciación
Para la iniciación con el método de
Henon, se observa que al cabo de los 10 ciclos del modelo, en
la posición de la bomba de extracción se halla
una depresión del nivel freático de 2,095m con
respecto al nivel inicial, y en un radio de 5m, la
depresión es menor a 90cm, siendo aceptable entonces la
incidencia del bombeo sobre el terreno.
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
6.5 Prickett utilizando el método de
Sierpinski para iniciación
Para la iniciación con el método de
Sierpinski, se observa que al cabo de los 10 ciclos del modelo,
en la posición de la bomba de extracción se halla
una depresión del nivel freático de 2,025m con
respecto al nivel inicial, y en un radio de 5m, la
depresión es menor a 85cm, siendo aceptable entonces la
incidencia del bombeo sobre el terreno.
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
6.6 Prickett utilizando el
método de Monte Carlo para
iniciación
Para la iniciación con el método de
Sierpinski, se observa que al cabo de los 10 ciclos del modelo,
en la posición de la bomba de extracción se halla
una depresión del nivel freático de 2,006m con
respecto al nivel inicial, y en un radio de 5m, la
depresión es menor a 82cm, siendo aceptable entonces la
incidencia del bombeo sobre el terreno.
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
6.7 Correcciones al modelo de evaluación
en laboratorio
Contrastando los resultados obtenidos contra las
observaciones posteriores, al cabo de los 10 días, se
pudo verificar que:
- La transmisividad inicial de 0,5 m3/día/m es
correcta . La misma fue obtenida con un ensayo
de bombeo previo, mediante el método de
Theis-Dupuit. - El nivel freático inicial de 0 m , relativo
a nivel del mar, y relativo al primer nivel de agua
encontrado en las napas, es correcto. Terreno nivelado ,
acuífero también. - La evaporación inicial de 0,01 m3/día
debido a la incidencia de rayos solares y temperaturas por la
estación climática del año, fué
adecuada, ya que se registraron descensos uniformes en toda
la zona demarcada - El almacenamiento inicial de 0,25 m3/día es
en general correcto, aunque puede ser mayor según
reflejó un segundo ensayo de
bombeo, posterior a la corrida del modelo, donde se observaba
una recuperación más rápida del nivel de
agua.
Las correcciones al modelo del caso real, entonces,
deben hacerse sobre el parámetro inicial de
almacenamiento del acuífero.
En la nueva ejecución, se observan los mismos
parámetros pero con un almacenamiento duplicado . Como
resultado se obtuvo que la profundidad máxima luego de
10 días, es de 1,85m, y en un radio de 5m, alcanza a 71
cm., tomando como nivel inicial los cero metros (0m) , siempre
en forma relativa a nivel del mar, para la primera napa de agua
observada.
Este nivel de profundidad del cono de depresión
refleja mejor lo realmente observado en la explotación,
donde la medición indicó 1,80 m de
profundidad, y luego, en el resto del acuífero, se
ubicó una depresión uniforme por
evapotranspiración, prácticamente
nula.
6.8 Conclusiones para el caso de
evaluación en laboratorio
Como comparación entre métodos de
iniciación, siempre se ha observado que la
distribución uniforme en el modelo PRICKETT generaba
resultados que excedían lo registrado luego en la
realidad. Con las distribuciones aplicadas, tenemos una
corrección (Ajustado), que da como resultado, valores
menores a los obtenidos en forma estándar uniforme y
más ajustados a la contrastación posterior
(Realidad).
Método | Máximo | Profundidad en radio | Variación |
Estándar | 2,203 | 1,01 | N / A |
Lorenz | 2,047 | 0,87 | -7,0 |
Henon | 2,095 | 0,90 | -4,9 |
Sierpinski | 2,025 | 0,84 | -8,0 |
MonteCarlo | 2,006 | 0,82 | -8,9 |
Ajustado | 1,85 | 0,71 | N/A |
Realidad | 1,80 | 0,71 | N/A |
7.
Presentación del caso práctico de
explotación para riego
Para el caso de aplicación práctica, se
ejecutó sobre una perforación de
explotación para riego en la filial del INTA en la zona
de Tandil, Pcia. de Buenos Aires, Argentina, con una
única bomba para extracción de agua del
acuífero, y de terreno llano, sin observar depresiones
ni lomadas, sobre un área de campo de 200 x 200 m (4
hectáreas), simulada en una grilla de 100 x 100 celdas
(separación de 20 m entre celdas).
La bomba se utiliza para alimentar la red de riego del
establecimiento agrícola, y el estudio en concreto se
hace para evaluar la viabilidad de hacer trabajar la misma a un
caudal de extracción importante, o si el impacto
registrado hace necesario establecer una segunda bomba para no
producir un cono de depresión muy pronunciado, sino
más leve y más recuperable en menor
tiempo.
Los parámetros de ejecución del modelo
se definieron sobre la base de lo necesitado por el
establecimiento dueño de la perforación, una
proyección trimestral del estado de las napas
freáticas.
- Grilla de 100 x 100
- 10 ciclos de simulación representando 10
días de extracción de agua - Error admisible acumulado de 1 en cada
ciclo - Transmisividad de 0,5
- Niveles de agua originalmente en 0 m, según
inicialización MonteCarlo - Almacenamiento inicial 0,25, según
inicialización MonteCarlo - Evaporación inicial 0,02 según
iniciación MonteCarlo - Bomba de explotación en el cuadrante 1,
posición [10,10] - Caudal de explotación de 5 ,0
Como resultado se obtuvo que la profundidad
máxima luego de 10 días, es de 3,48m, y en un
radio de 20m, alcanza a 1,25m, tomando como nivel inicial los
cero metros (0m) , siempre en forma relativa a nivel del mar,
para la primera napa de agua observada.
A continuación, el resultado luego de la
ejecución del modelo tal como lo refleja el software
desarrollado al efecto.
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
7.3 Correcciones al modelo para
explotación para riego
Contrastando los resultados obtenidos contra las
observaciones posteriores, al cabo de los 10 días, se
pudo verificar que:
- La transmisividad inicial de 0,5 m3/día/m es
correcta ( fue obtenida con un ensayo de bombeo ) - El nivel freático inicial de 0 m , relativo
a nivel del mar, y relativo al primer nivel de agua
encontrado en las napas, es correcto, ya que se verifica un
terreno nivelado , lo mismo que el acuífero
subyacente. - La evaporación inicial de 0,02 m3/día
debido a la incidencia de rayos solares y temperaturas por la
estación climática del año, posiblemente
haya resultado inferior a lo real, ya que los niveles de
profundidad de la napa cayeron uniformemente en toda la zona
demarcada - El almacenamiento inicial de 0,25 m3/día es
en general correcto, aunque puede ser mayor según
reflejó un segundo ensayo de bombeo, posterior a la
corrida del modelo, donde se observaba una
recuperación más rápida del nivel de
agua.
Las correcciones al modelo del caso real, entonces,
deben hacerse sobre el parámetro inicial de
evapotranspiración (caída uniforme del nivel de
agua en todo el acuífero , sin mediar bombeos),
tentativamente triplicándolo, y asignar un 50% mas de
capacidad de almacenamiento al acuífero en líneas
generales.
En la nueva ejecución, se tiene :
- Grilla de 100 x 100
- 10 ciclos de simulación representando 10
días de extracción de agua - Error admisible acumulado de 1 en cada
ciclo - Transmisividad de 0,5
- Niveles de agua originalmente en 0 m, según
inicialización MonteCarlo - Almacenamiento inicial 0,375, según
inicialización MonteCarlo - Evaporación inicial 0,06 según
iniciación MonteCarlo - Bomba de explotación en el cuadrante 1,
posición [10,10] - Caudal de explotación de 5,0
m3/día
Como resultado se obtuvo que la profundidad
máxima luego de 10 días, es de 3,033m, y en un
radio de 20m, alcanza a 0,91 cm, tomando como nivel inicial los
cero metros (0m) , siempre en forma relativa a nivel del mar,
para la primera napa de agua observada.
Este nivel de profundidad del cono de depresión
refleja mejor lo realmente observado en la explotación,
donde la medición indicó 3.0 m de profundidad, y
luego, en el resto del acuífero, se ubicó una
depresión uniforme por evapotranspiración de
15cm.
A continuación, el resultado de la
ejecución corregida.
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
7.4 Caso de Máxima explotación
estimada
Para el caso de máxima explotación
posible para este pozo de extracción de agua, se
plantea el caso de conocer la profundidad máxima del
cono de depresión. En función de ello, se calcula
que diariamente se extraerán 50.000 litros de agua para
riego, o lo que es lo mismo, 50 m3/día, y con los mismos
parámetros corregidos del punto anterior.
- Grilla de 100 x 100
- 10 ciclos de simulación representando 10
días de extracción de agua - Error admisible acumulado de 1 en cada
ciclo - Transmisividad de 0,5
- Niveles de agua originalmente en 0 m, según
inicialización MonteCarlo - Almacenamiento inicial 0,375, según
inicialización MonteCarlo - Evaporación inicial 0,06 según
iniciación MonteCarlo - Bomba de explotación en el centro
geográfico, posición [50,50] - Caudal de explotación de 50,0
m3/día
Como resultado se obtuvo que la profundidad
máxima luego de 10 días, es de 30.1 m, y en un
radio de 20m, alcanza a 9.30 m, tomando como nivel inicial los
cero metros (0m) .
Este nivel de profundidad del cono de depresión
refleja aproximadamente lo observado en la explotación,
donde la medición indicó en realidad 28.0 m de
profundidad. Esto es atribuible a que no se contrastó
durante los 10 días de extracciones, sino solamente en
la primera jornada, debido a no poder disponer del equipo y de
lo costoso de la operación.
7.5 Conclusiones
para el caso de explotación para
riego
Al igual que para el caso del modelo de laboratorio,
la comparación entre métodos de iniciación
siempre arroja que la distribución uniforme en el modelo
PRICKETT genera resultados que exceden lo registrado luego en
la realidad. Aplicando la distribución de Monte Carlo,
que es la mas conservadora para descensos de niveles, se
obtiene una excelente aproximación a lo posteriormente
contrastado desde los puntos de observación y control.
Método | Máximo de Profundidad | Profundidad |
MonteCarlo (primer corrida) | 3,48 | 1,25 |
MonteCarlo (corrida | 3,03 | 0,91 |
Realidad | 3,00 | 0,90 |
8.1 Anexo 1 : Desarrollo de la teoría
para el Modelo Prickett-Lonnquist
El modelo Prickett-Lonnquist simula en medio
anisótropo bidimensional el flujo subterráneo
originado por la explotación en régimen
transitorio de acuíferos libres o confinados. La
resolución de la ecuación diferencial del flujo
es aproximada en diferencias finitas. (*)
Para poder definir un modelo así se necesitan
:
- Descripción de la geometría del terreno a
aplicar - Descripción de las propiedades físicas
del medio en cada punto del dominio.
Permeabilidad, transmisividad, coeficiente de almacenamiento,
etc. - Ley de Darcy que rige el movimiento del agua. Teorema
de la Continuidad. - Condiciones de los límites del
sistema - Condiciones en un tiempo inicial
t0 - Descripción de las acciones
exteriores al sistema
Con todo esto se tiene la ecuación diferencial
que describe el movimiento del agua para el caso bidimensional
(*) :
d
(Txd h)
+ d
(Tyd h)
+ q' = – Sd
h
d x
d x d y d y d t
siendo T y h funciones de x e y
(coordenadas rectangulares en un punto) , T,
función transmisividad, y h el nivel del
acuífero o napa de agua, en el instante t.
El balance instantáneo de volúmenes en
un elemento infinitesimal del acuífero para un punto
[x,y] en un momento dado (considerando a las propiedades
físicas del cuerpo de agua como constantes verticalmente
y que la velocidad es constante horizontalmente con un valor
dado por la Ley de Dupuit) se representa por:
V = – K grad h
siendo K la permeabilidad del suelo o
medio.
Este es el problema general para caudales. Si se
pretende resolver el movimiento y la concentración de
los cuerpos disueltos habría que considerar
además la ecuación del transporte
de masa o la de la dispersión hidrodinámica,
resolviéndolas conjuntamente con la anterior.
Si suponemos un esquema de acuífero constituido
por una malla de prismas rectangulares (matriz) de
base D
x, D
y, entonces el desarrollo del esquema
numérico se presenta a continuación.
(*) PRICKET & LONNQUIST, "Selected Digital
Computer Techniques for Groundwater Resource Evaluation",
Illinois State Water Supply, Bulletin 55, EE.UU.,
1971.
a) Para representar las derivadas
parciales, el esquema a emplear será:
d
f = f(x + D x) – f(x – D x) = f(x)
– f(x – D
x)
d
x 2D
x D
x
con un error K*D x^2.
b) Las expresiones en diferencias finitas para el
punto [x,y] son:
d
T = T(x + D x,y) – T(x –
D
x,y)
d
x 2D
x
d
T = T(x,y + D y) – T(x, y –
D
y)
d
y 2D
y
lo mismo para la función h.
c) El modelo utiliza un factor de
almacenamiento que se define como
SF1[i, j] = S*D X*D Y
donde SF1[i, j] es el factor de almacenamiento
para la celda de la grilla [i, j], en m3/m, S es el
coeficiente de almacenamiento de la napa de agua
subterránea en condiciones de confinamiento
(adimensional) y D
X y D
Y son las dimensiones de la grilla o malla, en
metros.
El primer paso es la discretización de las
propiedades físicas del acuífero o napa de agua
subterránea. A cada celda de la grilla se le asignan las
propiedades o valores de transmisividad, factor de
almacenamiento, nivel inicial y final del agua, y caudal de
bombeo. Estas propiedades físicas se representan por
medio de matrices, donde cada celda es la abstracción de
un cuadrado en el terreno, de N x M metros, siendo las mismas:
- La matriz t0 representa la transmisividad
inicial, en m3/día/m. - La matriz t1 representa la transmisividad
actual, en m3/día/m. - La matriz h representa los niveles de agua
actuales, en m. - La matriz h0 representa los niveles de agua
iniciales, en m. - La matriz sf1 representa el factor de
almacenamiento actual, en m3/m. - La matriz q representa el bombeo o
extracción actual, en m3/día. - La matriz dl representa las diferencias de
incremento de niveles de agua, en m.
La resolución consta de tres partes
principales: Entrada de datos, simulación propiamente
dicha, y exportación de resultados en formato coordenado
(i, j , valor).
Las dimensiones de filas y columnas están dadas
dinámicamente, y limitan el área de
cálculo. La variable time (tiempo) es puesta a
cero e incrementada con su delta. No forma parte de la
simulación sino de la salida o resultados por conjuntos de
tiempos.
La predicción de niveles freáticos o de
agua, predice el comportamiento del modelo en el futuro de
acuerdo a sus comportamientos en períodos de tiempo
anteriores.
La inclusión de la predicción aumenta la
convergencia de la solución: se hacen
hipótesis entre
los niveles presentes y anteriores, siendo su ecuación
(*):
h[i, j] = h[i, j]+D*F / F = D/DL[i, j] , D =
h[i, j] – h0[i, j]
Siendo D la diferencia de niveles entre la
corrida anterior y la actual, y F un factor
multiplicador según la capacidad de bombeo en ese punto
[i,j]. Cuando F no es calculable o predecible, se la
asume con el valor 1.0: También se contempla la
división por cero y se acota F en límites
razonables, entre 0.0 y 5.0.
Los últimos niveles freáticos calculados
en el último intervalo de tiempo se hallan en la matriz
h[i, j] y son trasladados a la matriz h0[i, j],
para preparación del siguiente intervalo de
tiempo.
Luego, se realizan los cálculos por columnas,
calculando el nivel como h[i, j]+D*F, donde D es
h[i, j] – h0[i, j]. Durante las iteraciones impares, se
procesan las columnas en orden creciente, mientras que en las
impares se lo hace en forma decreciente. Los términos
AA, BB, CC y DD son variables de soporte auxiliar de
resultados de ecuaciones.
En los vectores de
soporte de cálculos G y B, se hallan los
niveles de agua en cada celda para cada columna siguiendo un
orden contrario al llevado para su cálculo. En el
término E, que es el error de cálculo en
la iteración actual, se añade la suma de los valores
de dichos cambios. Al final del cálculo de todas las
columnas, el programa calcula por filas los niveles en las
celdas o nudos de la matriz. Este último paso es
exactamente el mismo que el utilizado para las columnas,
excepto por el cambio de
índices necesario.
Concluido esto, se comparan E y ERROR,
donde esta última es el error acumulado para todas las
iteraciones. Si E es mayor a ERROR, la
solución obtenida no es satisfactoriamente convergente,
y se recomienza una nueva iteración.
Cuando se satisface la condición de
convergencia, termina la simulación.
La condición de ERROR se elige en aquel
punto donde su valor no hace variar significativamente la
solución, y para esto se plantea una regla
práctica :
ERROR=Q*DELTA/10*SF1
Donde Q es el caudal en m3/día,
DELTA es el incremento de tiempo inicial, en
días, SF1 es el factor de almacenamiento medio de
agua, en m3/m.
(*) PRICKET & LONNQUIST, Op. Cit.
8.2 Anexo 2: Modelo Prickett-Lonnquist en
lenguaje
C/C++
La implementación programática del
modelo original, escrito es Fortran77, fue migrada a lenguaje C/C++
en clases y módulos, e implementada en Sistema Operativo
Ms.Windows y
Linux.
Lo que sigue a continuación, es la
definición formal en lenguaje C++ de la clase que
implementa al modelo Prickett-Lonnquist, junto a las clases
bases de soporte :
// notación acordada previamente para designar
elementos en el modelo:
// h0[i][j : niveles piezométricos iniciales
(m)
// h[i][j] : niveles piezométricos terminales
(m)
// sf1[i][j] : factor de almacenamiento (confinado)
(m3/m)
// q[i][j] : caudales de bombeo constante
(m3/día)
// t0[i][j] : transmisividad entre i,j y i,j+1
(m3/día/m)
// t1[i][j] : transmisividad entre i,j y i+1,j
(m3/día/m)
// Modelo Matemático con Teoría del
Caos
class ChaosMModel
{
public:
// Constructor
ChaosMModel(int x_dim=0,int y_dim=0);
// Lorenz method // Metodo de Lorenz
void Initialize_Lorenz(float a,float b,float c,float
dt, BaseReal **matrix, BaseReal value);
// Henon method // Metodo de Henon
void Initialize_Henon(float a,float b, BaseReal
**matrix, BaseReal value);
// Sierpinski method // Metodo de
Sierpinski
void Initialize_Sierpinski(BaseReal **matrix, BaseReal
value);
// MonteCarlo method // Metodo MonteCarlo
void Initialize_MonteCarlo(BaseReal **matrix, BaseReal
value, UInt ix, UInt jx);
// Set Dimensions // Establecer dimensiones
void SetDimensions(int x_dim,int y_dim);
private:
// Matrix Dimensions // Dimensiones de
matriz
UInt dimx, dimy;
};
// clase prickett-lonnquist derivado de un modelo
matricial base y unidad de punto flotante, y de otro de caos
(estocástico)
class PricketLonnquist : public BaseMModel, public
ChaosMModel
{
public:
PricketLonnquist(void); // constructor
~PricketLonnquist(void); // destructor
// Modelization for 1 pump // modelizacion para un
punto de bombeo
USInt Modelization(Int dimrows, Int dimcols, USInt
steps, BaseReal delta, BaseReal deltainc, BaseReal error, Byte
format, Int r, Int c, BaseReal vt0, BaseReal vt1, BaseReal
vsf1, BaseReal vh, BaseReal vq, ChaosType
ctType=Chaos_NoInit);
// Modelization for 1 pump // modelizacion para un
punto de bombeo
USInt Modelization(Int dimrows, Int dimcols, USInt
steps, BaseReal delta, BaseReal deltainc, BaseReal error, Byte
format,BaseReal ivt0, BaseReal ivsf1, BaseReal ivh, BaseReal
ivq, Int r, Int c, BaseReal vt0, BaseReal vt1, BaseReal vsf1,
BaseReal vh, BaseReal vq, ChaosType
ctType=Chaos_NoInit);
USInt Modelization(ChString nodesinfilename); //
modelizacion
inline USInt TotalIterations(void) { return totaliter;
} // iteraciones
inline Real TotalTime(void) { return totaltime; } //
tiempo
protected:
BaseReal **t0; // transmisivity m3/day/m //
transmisividad m3/día/m
BaseReal **t1; // transmisivity m3/day/m //
transmisividad m3/día/m
BaseReal **h; // ending piezometric level m // nivel
piezometrico final
BaseReal **h0; // piezometric level m // nivel
piezometrico m
BaseReal **sf1; // capacity m3/m // almacenamiento
m3/m
BaseReal **q; // pumping m3/day // bombeo
m3/día
BaseReal **dl; // ?
BaseReal *g, *b; // equations processing hold vectors
// vectores soporte de procesamiento de ecuaciones
USInt totaliter; // total iterations // total de
iteraciones
Real totaltime; // total time // tiempo
total
USInt ncount; // print-output ncount // cuenta de
salidas impresas
inline Dim Cols(void) { return nc; } // columns //
columnas
inline Dim Rows(void) { return nr; } // rows //
filas
inline void Cols(Dim ncols){ nc = ncols; } // columns
// columnas
inline void Rows(Dim nrows){ nr = nrows; } // rows //
filas
inline Dim MinCols(void) { return 0; } // min col //
columna minima
inline Dim MinRows(void) { return 0; } // min row //
fila minima
inline Dim MaxCols(void) { return nc-1; } // max col
// columna maxima
inline Dim MaxRows(void) { return nr-1; } // max row
// fila maxima
inline Boolean Precondition(void)
{
return ((h != NULL) && (h0 != NULL) &&
(sf1 != NULL) && (q != NULL) && dl != NULL)
&& (g != NULL) && (b != NULL) && (t0 !=
NULL) && t0 != NULL));
}
virtual void MatricesAllocation(void); // matrices
allocation // alojamiento de matrices
virtual void OutPut(Byte format); // external nodes //
nodos externos
virtual void Initialization(BaseReal tt, BaseReal s1,
BaseReal hh, BaseReal qq, ChaosType ctType=Chaos_NoInit); //
initialization // inicializacion
virtual void Prediction(USInt istep); // prediction //
prediccion
virtual void RowsProcess(USInt istep, USInt liter,
BaseReal ldelta, BaseReal *lerror);
virtual void ColumnsProcess(USInt istep, USInt liter,
BaseReal ldelta, BaseReal *lerror);
virtual void Simulation(USInt nsteps, BaseReal delta,
BaseReal deltainc, BaseReal error, Byte format); // simulation
// simulacion
private:
Dim nc; // number of columns // numero de
columnas
Dim nr; // number of rows // numero de
filas
};
////////////////////////////////////////
// Constructor de clase
////////////////////////////////////////
PricketLonnquist::PricketLonnquist(void)
{
t0 = NULL; // no matrices or vectors // sin matrices
ni vectores
t1 = NULL;
h = NULL;
h0 = NULL;
sf1 = NULL;
q = NULL;
dl = NULL;
g = NULL;
b = NULL;
totaltime = 0.0; // no statics // sin
estadisticas
totaliter = 0;
Cols(0); // assign the columns // asignar las
columnas
Rows(0); // assign the rows // asignar las
filas
ncount = 0; // output count to zero // salidas
impresas en cero
}
////////////////////////////////////////
// Destructor de clase
////////////////////////////////////////
PricketLonnquist::~PricketLonnquist(void)
{
if ( Precondition() )
{
Deallocation(t0 , Cols(), Rows()); // deallocate //
desalojar
Deallocation(t1 , Cols(), Rows());
Deallocation(h , Cols(), Rows());
Deallocation(h0 , Cols(), Rows());
Deallocation(sf1, Cols(), Rows());
Deallocation(q , Cols(), Rows());
Deallocation(dl , Cols(), Rows());
if (Cols() >= Rows()) // verificar el maximo
requerido
{
Deallocation(g, Cols());
Deallocation(b, Cols());
}
else
{
Deallocation(g, Rows());
Deallocation(b, Rows());
}
t0 = NULL; // no matrices or vectors // sin
matrices/vectores
t1 = NULL;
h = NULL;
h0 = NULL;
sf1 = NULL;
q = NULL;
dl = NULL;
g = NULL;
b = NULL;
}
ncount = 0; // output count to zero // salidas
impresas en cero
}
////////////////////////////////////////////////
// Alojamiento de la matriz
////////////////////////////////////////////////
void
PricketLonnquist::MatricesAllocation(void)
{
t0 = Allocation(Cols(), Rows()); // alojar matrices y
vectores
t1 = Allocation(Cols(), Rows());
h = Allocation(Cols(), Rows());
h0 = Allocation(Cols(), Rows());
sf1 = Allocation(Cols(), Rows());
q = Allocation(Cols(), Rows());
dl = Allocation(Cols(), Rows());
if (Cols() >= Rows())// verificar el maximo
requerido
{
g = Allocation(Cols());
b = Allocation(Cols());
}
else
{
g = Allocation(Rows());
b = Allocation(Rows());
}
if ( !Precondition() )
throw (-1); // verify // verificar
}
///////////////////////////////////////////////////////////////////////////
Inicializacion de toda la matriz con los parametros de
transmisividad,
// almacenamiento, niveles iniciales y
bombeo
/////////////////////////////////////////////////////////////////////////void
PricketLonnquist::Initialization(BaseReal tt, BaseReal s1,
BaseReal hh, BaseReal qq)
{
Int i, j;
// matrix initialization // inicializacion de la
matriz
for (i = MinCols(); i <= MaxCols(); i++) // para
cada columna
{
for (j = MinRows(); j <= MaxRows(); j++) // para
cada fila
{
t0[i][j] = tt; // asignar valores por
omision
t1[i][j] = tt;
sf1[i][j] = s1;
h[i][j] = hh;
h0[i][j] = hh;
q[i][j] = qq;
}
}
}
////////////////////////////////////////////////
// Prediccion para el paso actual
// istep=paso actual de procesamiento
////////////////////////////////////////////////
void PricketLonnquist::Prediction(USInt
istep)
{
// aux vars/ // variables auxiliares
Int i = 0.0, j = 0.0;
BaseReal d = 0.0, f = 0.0;
// prediction // prediccion
for (i = MinCols(); i <= MaxCols(); i++) // para
cada columna
{
for (j = MinRows(); j <= MaxRows(); j++) // para
cada fila
{
d = h[i][j] – h0[i][j];
h0[i][j] = h[i][j];
f = 1.0;
if (istep > 2)
{
if (dl[i][j] != 0.0) f = d/dl[i][j];
else f = d/ZERODIVIDE_REPLACE;
}
if (f > 5.0) f = 5.0;
if (f < 0.0) f = 0.0;
dl[i][j] = d;
h[i][j] += d*f;
} // endfor-byrow
} // endfor-byrow-prediction
}
/////////////////////////////////////////////////////////////////////
// Procesamiento por Columnas
// istep=indicador de paso o ciclo (input)
// liter=iteraccion actual (input)
// ldelta=tiempo acumulado (input)
// *lerror=error acumulado (output)
/////////////////////////////////////////////////////////////////////
void PricketLonnquist::ColumnsProcess(USInt istep,
USInt liter,
BaseReal ldelta, BaseReal *lerror)
{
// aux vars/ // variables auxiliares
Int ii = 0 , i = 0 , j = 0 , n = 0;
BaseReal aa = 0.0, bb = 0.0, cc = 0.0,
dd = 0.0, ha = 0.0, w = 0.0;
// column calculation process // proceso de calculo de
columnas
for (ii = MinCols(); ii <= MaxCols();
ii++)
{
if (((istep+liter)%2) == 1) i =
MaxCols()-ii+MinCols();
else i = ii;
for (j = MinRows(); j <= MaxRows(); j++)
{
// row initialization // inicializacion para
fila
aa = 0.0;
bb = 0.0;
cc = 0.0;
dd = 0.0;
if (ldelta != 0.0) // si hay un error acumulado
(delta)
{
bb = sf1[i][j]/ldelta;
dd = h0[i][j]*sf1[i][j]/ldelta-q[i][j];
}
else
{
bb = sf1[i][j]/ZERODIVIDE_REPLACE;
dd =
h0[i][j]*sf1[i][j]/ZERODIVIDE_REPLACE-q[i][j];
}
if ((j-MinRows()) != 0) // si no esta en
limite
{
aa = -t0[i][j-1];
bb += t0[i][j-1];
}
if ((j-MaxRows()) != 0) // si no esta en
limite
{
bb += t0[i][j];
cc = -t0[i][j];
}
if ((i-MinCols()) != 0) // si no esta en
limite
{
bb += t1[i-1][j];
dd += h[i-1][j]*t1[i-1][j];
}
if ((i-MaxCols()) != 0) // si no esta en
limite
{
bb += t1[i][j];
dd += h[i+1][j]*t1[i][j];
}
if ((j-MinRows()) != 0) // si no esta en
limite
{
w = bb-aa*b[j-1];
if (w != 0.0)
{
b[j] = cc/w;
g[j] = (dd-aa*g[j-1])/w;
}
else
{
b[j] = cc/ZERODIVIDE_REPLACE;
g[j] = (dd-aa*g[j-1])/ZERODIVIDE_REPLACE;
}
}
else
{
w = bb;
if (w != 0.0)
{
b[j] = cc/w;
g[j] = dd/w;
}
else
{
b[j] = cc/ZERODIVIDE_REPLACE;
g[j] = dd/ZERODIVIDE_REPLACE;
}
}
} // endfor-column-calculations
// error reestimation // reestimación del error
acumulado
*lerror +=
Absolute(h[i][MaxRows()]-g[MaxRows()]);
h[i][MaxRows()] = g[MaxRows()];
for (n = MaxRows()-1; n >= MinRows();
n–)
{
ha = g[n]-b[n]*h[i][n+1];
*lerror += Absolute(ha-h[i][n]);
h[i][n] = ha;
}// endfor-reestimation
} // endfor-column-process
}
/////////////////////////////////////////////////////////////////////
// Procesamiento por Filas
// istep=indicador de paso o ciclo (input)
// liter=iteraccion actual (input)
// ldelta=desvio acumulado (input)
// *lerror=error acumulado (output)
/////////////////////////////////////////////////////////////////////
void PricketLonnquist::RowsProcess(USInt istep, USInt
liter,
BaseReal ldelta, BaseReal *lerror)
{
// aux vars/ // variables auxiliares
Int i = 0 , j = 0 , jj = 0 , n = 0;
BaseReal aa = 0.0, bb = 0.0, cc = 0.0,
dd = 0.0, ha = 0.0, w = 0.0;
// rows calculations process // proceso de calculos de
filas
for (jj = MinRows(); jj <= MaxRows();
jj++)
{
if (((istep+liter)%2) == 1) j =
MaxRows()-jj+MinRows();
else j = jj;
for (i = MinCols(); i <= MaxCols(); i++)
{
// column initialization // inicializacion para
columna
aa = 0.0;
bb = 0.0;
cc = 0.0;
dd = 0.0;
if (ldelta != 0.0) // si hay un error acumulado
(delta)
{
bb = sf1[i][j]/ldelta;
dd = h0[i][j]*sf1[i][j]/ldelta-q[i][j];
}
else
{
bb = sf1[i][j]/ZERODIVIDE_REPLACE;
dd =
h0[i][j]*sf1[i][j]/ZERODIVIDE_REPLACE-q[i][j];
}
if ((j-MinRows()) != 0) // si no esta en
limite
{
bb += t0[i][j-1];
dd += h[i][j-1]*t0[i][j-1];
}
if ((j-MaxRows()) != 0) // si no esta en
limite
{
bb += t0[i][j];
dd += h[i][j+1]*t0[i][j];
}
if ((i-MinCols()) != 0) // si no esta en
limite
{
aa += -t1[i-1][j];
bb += t1[i-1][j];
}
if ((i-MaxCols()) != 0) // si no esta en
limite
{
bb += t1[i][j];
cc += -t1[i][j];
}
if ((i-MinCols()) != 0) // si no esta en
limite
{
w = bb-aa*b[i-1];
if (w != 0.0)
{
b[i] = cc/w;
g[i] = (dd-aa*g[i-1])/w;
}
else
{
b[i] = cc/ZERODIVIDE_REPLACE;
g[i] = (dd-aa*g[i-1])/ZERODIVIDE_REPLACE;
}
}
else
{
w = bb;
if (w != 0.0)
{
b[i] = cc/w;
g[i] = dd/w;
}
else
{
b[i] = cc/ZERODIVIDE_REPLACE;
g[i] = dd/ZERODIVIDE_REPLACE;
}
}
} // endfor-row-calculations
// reestimation // reestimacion
*lerror +=
Absolute(h[MaxCols()][j]-g[MaxCols()]);
h[MaxCols()][j] = g[MaxCols()];
for (n = MaxCols()-1; n >= MinCols();
n–)
{
ha = g[n]-b[n]*h[n+1][j];
*lerror += Absolute(h[n][j]-ha);
h[n][j] = ha;
} // endfor-reestimation
} // endfor-row-process
}
//////////////////////////////////////////////////////////////////////
// Proceso de Simulacion parametrizado
// nsteps=cantidad de pasos minimos y necesarios
(input)
// delta=tiempo acumulado maximo aceptable
(input)
// deltainc=incremento del delta (input)
// error=error acumulado maximo aceptable
(input)
// format=tipo de formato de salida {matricial,o por
puntos} (input)
//////////////////////////////////////////////////////////////////////
void PricketLonnquist::Simulation(USInt nsteps,
BaseReal delta,
BaseReal deltainc, BaseReal error,
Byte format)
{
USInt istep = 0, liter = 0;
BaseReal lerror = 0.0, perror = 0.0, ltime = 0.0,
ldelta = 0.0;
// prediction cicle up to N steps // ciclo de
prediccion hasta N pasos
for (ldelta = delta, ltime = ldelta, istep =
1;
istep <= nsteps;
istep++, ldelta *= deltainc, ltime += ldelta) //
simulation
{
Prediction(istep); // prediccion
liter = 0; // contar iteraciones
lerror = MAX_REAL; // limite del ciclo de
refinado
do // refinning // refinamiento
{
liter++;
perror = lerror; // keep previous error
lerror = 0.0; // null error
ColumnsProcess(istep, liter, ldelta,
&lerror);
RowsProcess(istep, liter, ldelta,
&lerror);
} while ((lerror > error) && (lerror <
perror));
// endwhile-refining
if (lerror < perror) // verificar error menor al
previo
{
OutPut(format); // print output // imprimir
salida
}
else
{
throw ("No converge, incrementar error");
break; // exit loop // salir del ciclo
}
} // endfor-simulation
totaltime = ltime; // statics //
estadisticas
totaliter = istep-1; // statics //
estadisticas
}
/////////////////////////////////////////////////////////////////////////
// Proceso de modelizacion con archivo de
entrada de nodos inicializados
// nodesfilename=archivo de nodos
inicializados
//////////////////////////////////////////////////////////////////////
USInt PricketLonnquist::Modelization(ChString
nodesfilename)
{
ifstream nodestream;
Char inbuffer[256+1];
Char format[256+1];
USInt steps;
Int dimrows, dimcols, r, c;
BaseReal delta, deltainc, error, vt0, vt1, vsf1, vh,
vq;
nodestream.open(nodesfilename); // abrir flujo
entrada
for (nodestream.getline(inbuffer,
sizeof(inbuffer)-1);
(inbuffer[0] == '/') && (nodestream.fail() ==
0);
nodestream.getline(inbuffer,
sizeof(inbuffer)-1));
// tomar primer linea valida
// buscar, convertir y guardar las 11
variables
if (sscanf(inbuffer, COMMON_SCANNING, &steps ,
&delta , &deltainc,
&error, &dimcols, &dimrows, &vt0,
&vsf1, &vh , &vq, &format)
!= 11)
{
throw ("Error COMMON_SCANNING | Argumentos iniciales
");
return (-1);
}
if ( (dimcols != 0) && (dimrows != 0)
)
{
Cols(dimcols);
Rows(dimrows);
MatricesAllocation(); // allocate matrices // alojar
matrices
Initialization(vt0, vsf1, vh, vq); //
inicializarlas
for (nodestream.getline(inbuffer,
sizeof(inbuffer)-1);
(nodestream.fail() == 0) &&
(nodestream.gcount() > 1);
nodestream.getline(inbuffer,
sizeof(inbuffer)-1))
{
// check validity // verificar
validéz
if (inbuffer[0] == '/')
{
}
// buscar, convertir y guardar las 7
variables
else if (sscanf(inbuffer,
SPECIFIC_SCANNING,
&c , &r , &vt0, &vt1, &vsf1,
&vh , &vq) == 7)
{
if ( (c >= MinCols() && c <= MaxCols())
&& (r >= MinRows() && r <= MaxRows())
)
{
t0[c][r] = vt0;
t1[c][r] = vt1;
sf1[c][r] = vsf1;
h[c][r] = vh;
q[c][r] = vq;
}
else
{
throw("Error SPECIFIC_SCANNING");
}
}
else
{
throw("Error SPECIFIC_SCANNING y
scanf()!=7");
}
}
nodestream.close(); // close input stream // cerrar
flujo entrada
Simulation(steps, delta, deltainc, error,
(Byte)format[0]); // simulation // simulación
}
// Total number of iterations // Numero total de
iteraciones
return (totaliter);
}
///////////////////////////////////////////////////////////////////////////
// Proceso de modelizacion con parametros indicativos
de cantidad de pasos,
// dimensiones fila-columna de la matriz, delta de
tiempo acumulado,
// acumulado de error maximo, etc.
// dimrows=filas
// dimcols=columnas
// steps=pasos de ciclado
// delta=delta de tiempo inicial
// deltainc=incremento del tiempo en cada
paso
// error=error maximo acumulado adminsible
// format=formato matriz o encolumnado
x-y-value
// ivt0=transmisividad inicial en la matriz
// ivsf1=almacenamiento incial en la matriz
// ivh=nivel inicial uniforme en la matriz
// ivq=bombeo inicial uniforme en la matriz
// r=fila del punto de bombeo
// c=columa del punto de bombeo
// vt0=transmisividad en el punto
// vt1=transmisividad en el punto
// vsf1=almcacenamiento en el punto
// vh=nivel inicial en el punto
// vq=bombeo en el punto
//////////////////////////////////////////////////////////////////////////
USInt PricketLonnquist::Modelization(Int dimrows, Int
dimcols, USInt steps, BaseReal delta,
BaseReal deltainc, BaseReal error, Byte
format,
BaseReal ivt0, BaseReal ivsf1, BaseReal ivh, BaseReal
ivq,
Int r, Int c,
BaseReal vt0, BaseReal vt1, BaseReal vsf1,
BaseReal vh, BaseReal vq)
{
// Precondition // Precondicion
if ( (dimcols != 0) && (dimrows != 0)
)
{
Cols(dimcols);
Rows(dimrows);
MatricesAllocation(); // allocate matrices // alojar
matrices
Initialization(ivt0, ivsf1, ivh, ivq); //
inicializarlas
// pumpin point // punto de bombeo
if ( (c >= MinCols() && c <= MaxCols())
&& (r >= MinRows() && r <= MaxRows())
)
{
t0[c][r] = vt0;
t1[c][r] = vt1;
sf1[c][r] = vsf1;
h[c][r] = vh;
q[c][r] = vq;
}
else
{
cout<<"Error en el Punto de Bombeo ";
}
// Simulation itself // Simalacion en si
misma
Simulation(steps, delta, deltainc, error, format); //
simulación
}
// Total number of iterations // Total de
iteraciones
return (totaliter);
}
///////////////////////////////////////////////////////////////////////////
// Proceso de modelizacion con parametros indicativos
de cantidad de pasos,
// dimensiones fila-columna de la matriz, delta de
tiempo acumulado,
// acumulado de error maximo, etc.
// dimrows=filas
// dimcols=columnas
// steps=pasos de ciclado
// delta=delta de tiempo inicial
// deltainc=incremento del tiempo en cada
paso
// error=error maximo acumulado adminsible
// format=formato matriz o encolumnado
x-y-value
// r=fila del punto de bombeo
// c=columa del punto de bombeo
// vt0=transmisividad en el punto
// vt1=transmisividad en el punto
// vsf1=almcacenamiento en el punto
// vh=nivel inicial en el punto
// vq=bombeo en el punto
//////////////////////////////////////////////////////////////////////////
USInt PricketLonnquist::Modelization(Int dimrows, Int
dimcols, USInt steps, BaseReal delta,
BaseReal deltainc, BaseReal error, Byte
format,
Int r, Int c,
BaseReal vt0, BaseReal vt1, BaseReal vsf1,
BaseReal vh, BaseReal vq)
{
// Precondition // Precondicion
if ( (dimcols != 0) && (dimrows != 0)
)
{
Cols(dimcols);
Rows(dimrows);
MatricesAllocation(); // allocate matrices // alojar
matrices
Initialization(vt0, vsf1, vh, 0.0); //
inicializarlas
// pumpin point // punto de bombeo
if ( (c >= MinCols() && c <= MaxCols())
&& (r >= MinRows() && r <= MaxRows())
)
{
t0[c][r] = vt0;
t1[c][r] = vt1;
sf1[c][r] = vsf1;
h[c][r] = vh;
q[c][r] = vq;
}
else
{
cout<<"Error en el Punto de Bombeo";
}
// Simulation itself // Simalacion en si
misma
Simulation(steps, delta, deltainc, error, format); //
simulation
}
// Total number of iterations // Total de
iteraciones
return (totaliter);
}
8.3 Anexo 3: Algoritmos de inicialización
del Modelo Prickett-Lonnquist
Lo que sigue a continuación, es la
implementación completa en lenguaje C++ de la clase
modelo Chaos , con los algoritmos de iniciación
implementados, estocásticos y de fractales.
Primeramente, se describe el generador de
números aleatorios utilizado en esta
implementación, el cual, parte de un numero base o
semilla, y luego arma vectores de acumulación
.
/////////////////////////////////////////////////////////////////////////
// Numero Base de generacion aleatoria
#define __SEED 161803398
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
// Random Generator class // Clase Generador
Random
class __random_generator {
protected:
unsigned long table[55];
size_t index1;
size_t index2;
public:
unsigned long operator()(unsigned long limit)
{
index1 = (index1 + 1) % 55;
index2 = (index2 + 1) % 55;
table[index1] = table[index1] –
table[index2];
return table[index1] % limit;
}
void seed(unsigned long j);
__random_generator(unsigned long j) { seed(j);
}
};
// Seed assign method // Metodo de asignacion de base
aleatoria
void __random_generator::seed(unsigned long j)
{
unsigned long k = 1;
table[54] = j;
for (size_t i = 0; i < 55; i++) {
size_t ii = 21 * i % 55;
table[ii] = k;
k = j – k;
j = table[ii];
}
for (int loop = 0; loop < 4; loop++) {
for (i = 0; i < 55; i++)
table[i] = table[i] – table[1 + (i + 30) %
55];
}
index1 = 0;
index2 = 31;
};
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
// Random generator instance // Instancia de Generador
Aleatorio
__random_generator rd(__SEED);
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
// Propietary random number function // Funcion
propietaria de numero aleatorio
unsigned long __long_random(unsigned long limit)
{
return rd(limit);
}
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
// Constructot
ChaosMModel::ChaosMModel(int x_dim,int
y_dim)
{
// Matrix dimension // Dimension de la
matriz
dimx = x_dim;
dimy = y_dim;
};
// Set Dimensiones // Establecer dimensiones de
Matriz
void ChaosMModel::SetDimensions(int x_dim,int
y_dim)
{
// Matrix dimension // Dimension de la
matriz
dimx = x_dim;
dimy = y_dim;
};
El método de Lorenz inicializa un volumen y/o
superficie en base a tres ecuaciones con polinomios, siguiendo
un patrón de generación de tipo
fractal.
void ChaosMModel::Initialize_Lorenz(float a,float
b,float c,float dt,BaseReal **matrix, BaseReal
value)
{
double x = 0.0, y = 0.0, z = 0.0,
dx = 0.0, dy = 0.0, dz = 0.0;
long cont = 0;
unsigned int xx = 0, yy = 0;
const long limit = min(10000,dimx*dimy);
for(x = y = z = 1 ; cont < limit ;
cont++)
{
dx = a*(y-x);
dy = x*(b-z)-y;
dz = x*y-c*z;
x += dt*dx;
y += dt*dy;
z += dt*dz;
xx = (long)(x*16) % dimx;
yy = (long)(z*16) % dimy;
if(xx < dimx && yy < dimy && xx
>= 0 && yy >= 0)
matrix[xx][yy] = value;
}
};
El método de Henon inicializa una superficie en
base a dos ecuaciones de polinomios, siguiendo un patrón
de generación de tipo fractal.
void ChaosMModel::Initialize_Henon(float a,float
b,BaseReal **matrix, BaseReal value)
{
long i = 0;
unsigned int xp = 0, yp = 0;
double x = 0.0, y = 0.0, xx = 0.0, yy =
0.0;
const long limit = min(10000,dimx*dimy);
for(i = 0 ; i < limit ; i++)
{
xx = 1+y-a*x*x;
yy = b*x;
x = xx;
y = yy;
xp = (long)x % dimx;
yp = (long)y % dimy;
if(xp < dimx && yp < dimy && xp
>= 0 && yp >= 0)
matrix[xp][yp] = value;
}
};
El método de Sierpinski inicializa una
superficie en base a dos ecuaciones de polinomios,
inicializados en forma aleatoria en arreglos vectoriales, y
siguiendo un patrón de generación de tipo
fractal.
void ChaosMModel::Initialize_Sierpinski(BaseReal
**matrix, BaseReal value)
{
float a[3]={0.5,0.5,0.5};
float b[3]={0,0,0};
float c[3]={0,0,0};
float d[3]={0.5,0.5,0.5};
float e[3]={1,50,50};
float f[3]={1,1,50};
float xx = 0.0, x = 0.0,
yy = 0.0, y = 0.0;
unsigned long i = 0;
long k = 0;
unsigned int xp = 0, yp = 0;
const unsigned long limit =
min(10000,dimx*dimy);
for(i = 0 ; i < limit ; i++)
{
k = __long_random( sizeof(a)/sizeof(a[0])
);
xx = a[k]*x+b[k]*y+e[k];
yy = c[k]*x+d[k]*y+f[k];
x = xx;
y = yy;
xp = (long)(x * 4.5 + 0.5) % dimx;
yp = (long)(y * 4.5 + 0.5) % dimy;
if(xp < dimx && yp < dimy && xp
>= 0 && yp >= 0)
matrix[xp][yp] = value;
}
};
El método de Monte Carlo inicializa una
superficie en base a una iteración aleatoria de posicionamiento
dentro de la misma, con valores predeterminados, siguiendo un
patrón estocástico.
void ChaosMModel::Initialize_MonteCarlo(BaseReal
**matrix, BaseReal value, UInt ix, UInt jx)
{
UInt i, j, in, jn, // indices de matrices
n, // indice de ciclo
middlex, middley, // puntos medios de los
ejes
quadrx, quadry; // cuadrante actual
Boolean end; // indicador para terminar
ciclo
const unsigned long limit =
min(10000,dimx*dimy);
// ciclo principal de generación de base
aleatoria y posicionamiento
for (middlex = dimx/2, middley = dimy/2,
n = 0;
n < limit;
n++)
{
// posiciones resguardadas en la matriz
(i,j)
i = in = ix;
j = jn = jx;
// señal de fin de ciclado a FALSO
end = FALSE;
// ciclado SET de nodos según posiciones
aleatorias generadas
while (end == FALSE)
{
quadrx = (UInt)__long_random(dimx);
quadry = (UInt)__long_random(dimy);
if ((quadrx > middlex) && (quadry >
middley)) // cuadrante 1
{
if ((i+1) < dimx && matrix[i+1][j] !=
value)
in = i + 1;
else
{
matrix[i][j] = value;
end = TRUE;
}
}
else if ((quadrx > middlex) && (quadry <
middley)) // cuad. 2
{
if ((j-1) < dimy && (j-1) > 0 &&
matrix[i][j-1] != value)
jn = j – 1;
else
{
matrix[i][j] = value;
end = TRUE;
}
}
else if ((quadrx < middlex) && (quadry <
middley)) // cuad. 3
{
if ((i-1) < dimx && (i-1) >= 0
&& matrix[i-1][j] != value)
in = i – 1;
else
{
matrix[i][j] = value;
end = TRUE;
}
}
else // cuadrante 4
{
if ((j+1) < dimy && matrix[i][j+1] !=
value)
jn = j + 1;
else
{
matrix[i][j] = value;
end = TRUE;
}
}
i = in;
j = jn;
}
}
};
/////////////////////////////////////////////////////////////////////////
8.4 Anexo 4:
Diálogo Principal de la aplicación
modelo Prickett-Lonnquist con iniciación
estocástica / fractal
MENU DE SELECCIÓN PARA EJECUTAR EL MODELO
PRICKETT-LONQUIST
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
NOMENCLATURA DE PARAMETROS para 2
DIMENSIONES
- Niveles piezométricos = (m) metros
- Factor de almacenamiento (confinado) (m3 / m) =
metros cúbicos x metro lineal - Caudales de bombeo constante (m3 / día) =
metros cúbicos x día
Transmisividad entre 2 nodos cualesquiera (m3 /
día / m) = metros cúbico x día x metro
lineal
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
NOMENCLATURA DE PARAMETROS INCLUYENDO METODOS
ESTOCASTICOS
Para ver el gráfico completo
seleccione la opción "Descargar" del menú
superior
- Cantidad de filas / columnas: Número de nodos
laterales que contendrá la superficie a
modelizar. - Cantidad de Ciclos: Iteraciones del modelo antes de
la convergencia del error máximo admitido. - Delta del tiempo: Tiempo referencial entre cada
iteración. Representativo. - Incremento del delta: Incremento del delta del tiempo
referencial. Representativo. - Error admisible: Error máximo acumulado
admisible por las iteraciones del modelo. - Transmisividad inicial: indicador de esta propiedad
al inicio del modelo, en m3/día/m. - Nivel freático inicial: valor por
omisión de iniciación de la superficie, en cierto
nivel freático. En metros. - Almacenamiento inicial: indicador de esta propiedad
al inicio del modelo. En m3/m. - Bombeo inicial: indicador de esta propiedad al inicio
del modelo, generalmente representativo de una
explotación artificial (planta de bombeo de agua). En
m3/día. - Evaporación inicial : indicador de esta
propiedad al inicio del modelo. En m3/día.
8.5 Anexo 5: Aplicación Comercial "Visual
ModFlow"
Visual MODFLOW es el estándar
americano en el área de modelización para
transporte de contaminantes y flujo de agua subterránea en
3-D. Combina una interfase poderosa e intuitiva, soportando
calibración automática. Permite al
usuario:
- Diseñar gráficamente la grilla de
modelación. - Digitalizar y visualizar los parámetros del
modelo. - Ejecutar el modelo.
- Calibrar el modelo manual o
automáticamente. - Mostrar e interpretar los resultados.
[A] Vistas superficiales y por cortes
longitudinales en la grilla
Característica principales de Visual
ModFlow
- Interfase gráfica poderosa y facil de
usar - Vista interactiva superficial y por
cortes - Importación de mapas bases
en formato AutoCAD - Rotación y alineación de modelos con
respecto a los mapas bases - Diseño automático de grillas y
correcciones - Niveles del terreno importados directamente desde
archivos
- Soporta los modelos de contaminantes denominados
MT3DMS, RT3D, MT3D99 y WinPEST - Integración directa con Win32 MODFLOW del
USGS - Vista previa interactiva para convergencia de la
solucion del modelo - Incluye el solucionador de ecuaciones WHS
Solver - Procesamiento por lotes para simulaciones pesadas y
de larga ejecución
[B] Contornos y depresiones con matices
de colores
- Selección de puntos de calibración y
estadísticas - Calibración automática mediante
WinPEST
- Contorneado mediante matices de colores, de
resultados y puntos de referencia - Detalles gráficos detallados
- Impresión en alta resolución en
cualquier impresora o
plotter - Exportación de visualizaciones a formatos
gráficos AutoCad, ESRI y Windows - Animación 3-D de avanzada
[C] Visualización y
animación 3D
Aplicaciones profesionales de Visual
ModFlow
- Evaluación de Sistemas de Aguas
Subterráneas - Delimitar zonas de captura para perforaciones de
explotación de aguas subterráneas - Simular la atenuación natural en la
contaminación del agua subterránea - Diseñar y optimizar las localizaciones de
perforaciones para proyectos
comerciales - Determinar los contaminantes y su exposición para evaluación de
riesgos
Visual MODFLOW fue lanzado por primera vez al mercado
en Agosto de 1994 y actualmente está siendo usado por
mas de 5.000 consultores, reguladores y educadores en todo el
mundo.
9.
Bibliografía y Referencias
Profesionales
- Dr. Jorge Santa Cruz, Geólogo de la
Universidad de Buenos Aires, Argentina. Doctor en Gestión de Aguas Subterráneas de
la Universidad Complutense de Madrid, España. Director del Programa Nacional
de Tecnología Sustentable en Aguas
Subterráneas (PNTSAS) del Instituto Nacional del Agua,
Argentina. (*) - Dr. Adrián A. Silva Busso, Geólogo de
la Universidad de Buenos Aires, Argentina. Especialista en
hidrogeología de la Universidad Complutense de Madrid,
España. Miembro del Programa Nacional de
Tecnología Sustentable en Aguas Subterráneas
(PNTSAS) del Instituto Nacional del Agua, Argentina.
(*)
(*) Instituto Nacional del Agua, AU
Ezeiza-Cañuelas, Tramo J. Newbery Km 1,620 (1804)
Ezeiza, Pcia. Buenos Aires, Argentina. TE: (54 11) 4480-9219/25
Fax: (54 11)
4480-0094 . PNTSAS : (54 11)4480-0295.
LIBROS, TESIS, INFORMES y
PORCIONES DE SOFTWARE
- ANGUITA, CUSTODIO y otros, "Teoría
Básica de Modelos Analógicos y Digitales de
Acuíferos", Servicio Geológico de Obras
Públicas y Gabinete de Cálculo del Ministerio
de Obras Públicas y Transportes, España,
1976. - BIERMAN, BONNINI y otros. "Análisis
Cuantitativo para la Toma de
Decisiones", IRWIN, 8va. Edición, México,
1999. - CERNADAS, Martín. "Sistema Nacional de Aguas
Subterráneas (SIAS)", Informe
Final de Beca del PNTSAS, INA. Librería del Instituto
Nacional del Agua, Argentina, 1996. - LINSLEY, KOHLER y PAULUS, "Hidrología para
Ingenieros", 2da. Edición, traducida al castellano, McGraw-Hill de México S.A.,
México, 1977. - PRICKET y LONNQUIST, "Selected Digital Computer
Techniques for Groundwater Resource Evaluation", Illinois
State Water Supply, Bulletin 55, EE.UU., 1971. - SANTA CRUZ, Jorge. "Estudio del Acuífero
Puelches", Librería del Instituto Nacional de Agua,
Argentina, 1975. - SILVA BUSSO, Adrián. "Estudio del
Acuífero Puelches, Argentina", Librería del
Instituto Nacional de Agua, Argentina, 1995. - STEVENS, "Object-Oriented Graphics Programming in
C++", Academic Press Inc., EE.UU., 1994. - WALPONE Y MYERS, "Probabilidad y
Estadística", 4ta Edición, Editorial
McGraw-Hill, México-USA, 1992. - WALTON, "Selected Analytical Methods for Well and
Aquifer Evaluation", Illinois State Water Supply, Bulletin
49, EE.UU., 1962. - HORNSBY, "Agua Subterránea : El Recurso
Oculto", documento SL48S, Instituto de Ciencias Alimenticias
y Agrícolas, Universidad de Florida. Primera
Impresión, Enero de 1986. - ESRI, "Map Objects LT 2.0", Environmental Systems
Research Institute, Inc., 380 New York Street, Redlands, CA
92373-8100 USA.
- Banco de datos de modelos numéricos.
Universidad de Hannover.
http://www.fi.uni-hannover.de/~am/isess97/isess1997.html - CSEP (Computational Science Education Project),
email ,
referencias sobre método Monte Carlo y
modelización en aguas subterráneas
http://www.cped.ornl.gov/cad_cp/text/imy.html - Interfase visual para el modelo ModFlow.
http://www.visual-modflow.com,
por la Waterloo Hydrogeologic. - InquiMap. Software modular para la
Modelación y análisis de
acuíferos. http://www.geoandsoft.com/espanol/ground_water.htm - Instituto Nacional de Agua : http://www.ina.gov.ar
. - Modelo de Simulación de Acuíferos.
Universidad de Kassel, Dinamarca. http://www.wiz.uni-kassel.de/model_db/mdb/asm.htmls
y Proyecto ECOBAS (base ecológica de modelos
numéricos) : http://eco.wiz.uni-kassel.de/ecobas.html - Paradigm. Componentes estocásticos del
modelo Paradigm para modelado de sistemas de
acuíferos. http://ncl.ac.uk/wrgi/wrsl/gwms/gwms.pdf - Prickett – Lonnquist Acuifer Simulation
Model, en el banco de datos de modelos numéricos de la
Universidad de Kassel. http://www.wiz.uni-kassel.de/model_db/mdb/plasm.html - Programa Nacional de Tecnología Sustentable
en Aguas Subterráneas (PNTSAS), .
(Perteneciente al Instituto Nacional de Agua) AU
Ezeiza-Cañuelas, Tramo J. Newbery Km 1,620 (1804)
Ezeiza, Pcia. Buenos Aires, Argentina. TE: (54 11)
4480-0295. http://www.ina.gov.ar - Revistas Técnicas CPRM, Brasil.
URL: http://www.cprm.gov.br/rev/agua0401.html - Sistema Nacional de Aguas Subterráneas
(SIAS) : http://www.sias.freeservers.com
. Sobre banco de registros hidrogeológicos en el
ámbito de la República Argentina, actualizados
hasta el año 1995. Producto del PNTSAS, del Inst.
Nacional del Agua, de la RR. AA. - Departamento de Ciencias de Suelos y Agua. Servicio
Cooperativo de Extensión del Instituto de Ciencias
Alimenticias y Agrícolas, Universidad de
Florida, http://edis.ifas.ufl.edu
LICENCIAS DE SOFTWARE Y AVISOS
LEGALES
Sobre MAP OBJECTS LT 2.0 , "U.S. Government
Restricted/Limited Rights: Use, duplication, and disclosure by
the U.S. Government are subject to restrictions as set forth in
FAR section 52.227-14 Alternate III (g)(3) (JUN 1987), FAR
section 52.227-19 (JUN 1987), DFARS section 252.227-7015 (NOV
1995) [Technical Data], and/or DFARS section 227.7202 [Computer
Software], as applicable. Contractor/Manufacturer is
Environmental Systems Research Institute, Inc., 380 New York
Street, Redlands, CA 92373-8100 USA."
Sobre este documento, "Queda prohibida la reproducción total o parcial por
cualquier medio y para cualquier destino, sin el permiso del
autor. Copyright @2002 , Martín D. Cernadas. Hecho el
depósito que marca la Ley de
Derecho de Autor, 11.723"
Sobre el software adjunto, Modelo Prickett
Estocástico, versión 2.0, "Queda autorizada la
distribución en formato binario ejecutable, sin
restricciones. Copyright @2002 , Martín D. Cernadas.
Hecho el depósito que marca la Ley de Derecho de Autor,
11.723, y sucesivos decretos y leyes
modificatorios."
Dedicatoria
A mi esposa Roxana, y a mi hijo Nicolás, que
son lo mejor de la vida.
Agradecimientos
Al estimado profesor Ing. Víctor
Rodríguez Carro, tutor de la presente tesina, que
dedicó muchas horas y reuniones para las sucesivas
correcciones que parecían no tener fin.
Martin Cernadas