<jupyter_start><jupyter_text>Cómo afecta el ancho del glaciar a su capacidad de almacenar agua? Pregunta: **Cómo difiere [este glaciar] de [este]?**Ya hemos visto que la inclinación y el balance de masa del glaciar afectan a su volumen, y por eso a su almacenamiento de agua.  Pero también el ancho del glaciar, especificamente el ancho en la zona de acumulación, es importante.  Vamos a investigar el efecto del ancho en este cuaderno.[este glaciar]: https://www.swisseduc.ch/glaciers/earth_icy_planet/glaciers02-en.html?id=4[este]: https://www.swisseduc.ch/glaciers/alps/grosser_aletschgletscher/aletsch_flugbilder-en.html?id=8<jupyter_code># import oggm-edu helper package
import oggm_edu as edu
# import modules, constants and set plotting defaults
%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (9, 6)  # Default plot size

# Scientific packages
import numpy as np

# Constants
from oggm import cfg
cfg.initialize()

# OGGM models
from oggm.core.massbalance import LinearMassBalance
from oggm.core.flowline import FluxBasedModel, RectangularBedFlowline
# There are several numerical implementations in OGGM core. We use the "FluxBasedModel"
from functools import partial
FlowlineModel = partial(FluxBasedModel, min_dt=0, cfl_number=0.01)

# Local library
import CdeC as cdec<jupyter_output><empty_output><jupyter_text>Lo esencial Seguimos pasos similares a los que hicimos en [inclinacion_de_la_base](1_inclinacion_de_la_base.ipynb) para configurar el modelo básico.  Configurar la base y añadir hielo (con balance de masa)<jupyter_code># define horizontal resolution of the model:
# nx: number of grid points
# map_dx: grid point spacing in meters
nx = 200
map_dx = 100
# define glacier slope and how high up it is
slope = 0.1
top = 3400 #m, the peak elevation
initial_width = 300 # width in meters
# create a linear bedrock profile from top to bottom
bottom = top - nx*map_dx*slope #m, elevation of the bottom of the incline based on the slope we defined
bed_h, surface_h = edu.define_linear_bed(top, bottom, nx)
# ask the model to calculate the distance from the top to the bottom of the glacier in km
distance_along_glacier = edu.distance_along_glacier(nx, map_dx)
# Now describe the widths in "grid points" for the model, based on grid point spacing map_dx
widths = np.zeros(nx) + initial_width/map_dx
# Define our bed
init_flowline = RectangularBedFlowline(surface_h=surface_h, bed_h=bed_h, widths=widths, map_dx=map_dx)
# ELA at 3000m a.s.l., gradient 4 mm m-1
ELA = 3000 #equilibrium line altitude in meters above sea level
altgrad = 4 #altitude gradient in mm/m
mb_model = LinearMassBalance(ELA, grad=altgrad)
example_model = FlowlineModel(init_flowline, mb_model=mb_model, y0=0.)
example_model.run_until_equilibrium(rate=0.006)<jupyter_output><empty_output><jupyter_text>Hacemos una gráfica para confirmar que hemos configurado correctamente el glaciar.<jupyter_code>plt.plot(distance_along_glacier, example_model.fls[-1].surface_h, label='Glacier geometry')
edu.plot_xz_bed(x=distance_along_glacier, bed=bed_h)<jupyter_output><empty_output><jupyter_text>Glaciares de varios anchos Cómo sabemos del [cuaderno 2](2_balance_de_masa.ipynb), los glaciares recolectan masa (de nieve) en arriba.  Investigaremos la influencia del ancho en esta recolección de masa, en comparando tres glaciares similares a nuestro primero, pero cada tendrá otro ancho en arriba.Primero definimos los anchos a comparar (`width_tests`), y cuántos años dejar crecer los glaciares con estos anchos.<jupyter_code># Define the widths we want to compare: (our first experiment used a width of 300 m)
width_tests = [150, 300, 1000]
# Define the time period for which the glacier should be calculated:
years = 300<jupyter_output><empty_output><jupyter_text>Actividad: formules un hipótesisEn la foto abajo, hecho por Hambrey y Alean ([más aquí]), hay glaciares de varios anchos en arriba. **Para cada ancho que comparemos en width_tests, elige un glaciar de la foto que corresponde.** ![Hintereisferner](https://www.swisseduc.ch/glaciers/alps/hintereisferner/icons/hintereisferner_overview.jpg "Hintereisferner with Weißkugel, Hambrey & Alean")**Basado en la foto y tu intuición, dibuja una diagrama de la relación entre (axis X) el ancho de la zona de acumulación y (axis Y) la longitud del glaciar.**[más aquí]: https://www.swisseduc.ch/glaciers/ Ahora pedimos que el modelo hace glaciares de nuestros anchos elegidos.  Usamos un bucle "for" porque queremos hacer los mismos pasos (configurar un glaciar y guardar la forma resultante) para cada prueba (cada ancho diferente). En la celda abajo, puedes identificar cómo modificamos el ancho *sólo en arriba (la zona de acumulación)*?  Qué modificaríamos para simular un ancho diferente mas en abajo?<jupyter_code># Here is where we will store the results of our test
models = []
# Colors for the graphs
colors = ['C1', 'C3', 'C5'] 

for k, width in enumerate(width_tests):
    widths_k = np.copy(widths)
    widths_k[0:15] = width/map_dx #set different width only in the upper portion
    flowline = RectangularBedFlowline(surface_h=surface_h, bed_h=bed_h, widths=widths_k, map_dx=map_dx)
    # The models require the initial glacier bed, a mass balance model, and an initial time (the year y0)
    models.append(FlowlineModel(flowline, mb_model=mb_model, y0=0.))
    # First, look at the state of the glacier models after the chosen amount of years
    models[k].run_until(years)<jupyter_output><empty_output><jupyter_text>Grafiquemos la forma de nuestros glaciares:<jupyter_code>f1, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(21,5))
ax_list = (ax1, ax2, ax3)

for k, width in enumerate(width_tests):
    ax = ax_list[k]
    ax.plot(distance_along_glacier, models[k].fls[-1].surface_h, label='Upstream width {} m'.format(width), color=colors[k])
    cdec.plot_xz_bed(distance_along_glacier, models[k].fls[-1].bed_h, ax=ax)<jupyter_output><empty_output><jupyter_text>**Este resultado apoya tu hipótesis o no?  Describe porque lo apoya o no.** Ahora, hacemos otra grafica para conocer qué volumen de hielo almacena cada glaciar:<jupyter_code># Now plot the volume of each of our test glaciers versus upstream width
plt.figure()
ax = plt.axes()
for k, width in enumerate(width_tests):
    ax.scatter(width, models[k].volume_km3, color=colors[k])
ax.set_xlabel('Upstream width [m]')
ax.set_ylabel('Ice volume [km3]');<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08304767840448737, 'fraction_numerical': 0.013555624805235277, 'mean_word_length': 5.799788135593221, 'pattern_counts': {'":': 0, '<': 29, '<?xml version=': 0, '>': 29, 'https://': 4, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '342607', 'license': 'MIT', 'n_tokens_mistral': 2320, 'n_tokens_neox': 2213, 'n_words': 731, 'path': '3_ancho_del_glaciar.ipynb', 'repo_name': 'ehultee/glacio-CdeC', 'size': '6418'}