diff --git a/notebooks/tutorials/building_the_prepro_gdirs.ipynb b/notebooks/tutorials/building_the_prepro_gdirs.ipynb index 738f6837..feac13d4 100644 --- a/notebooks/tutorials/building_the_prepro_gdirs.ipynb +++ b/notebooks/tutorials/building_the_prepro_gdirs.ipynb @@ -698,7 +698,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8bf9e338d3864230", + "id": "34", "metadata": {}, "outputs": [], "source": [] diff --git a/notebooks/tutorials/distribute_flowline.ipynb b/notebooks/tutorials/distribute_flowline.ipynb index 5ee1f10d..ae1d8e94 100644 --- a/notebooks/tutorials/distribute_flowline.ipynb +++ b/notebooks/tutorials/distribute_flowline.ipynb @@ -823,7 +823,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9c7a9237721c1d87", + "id": "60", "metadata": {}, "outputs": [], "source": [] diff --git a/notebooks/tutorials/numeric_solvers.ipynb b/notebooks/tutorials/numeric_solvers.ipynb index efa35e3a..ca9aa49f 100644 --- a/notebooks/tutorials/numeric_solvers.ipynb +++ b/notebooks/tutorials/numeric_solvers.ipynb @@ -35,7 +35,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e7b417acffaed499", + "id": "3", "metadata": {}, "outputs": [], "source": [ @@ -45,7 +45,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3", + "id": "4", "metadata": { "tags": [] }, @@ -72,7 +72,7 @@ }, { "cell_type": "markdown", - "id": "4", + "id": "5", "metadata": {}, "source": [ "## Flux-Based model is more flexible, but unstable" @@ -80,7 +80,7 @@ }, { "cell_type": "markdown", - "id": "5", + "id": "6", "metadata": {}, "source": [ "The big advantage of the Flux-Based model is that it works for all flowline representations (multiple flowlines and different bed shapes). See the tutorial [\"elevation band\" and \"centerline\" flowlines](../tutorials/elevation_bands_vs_centerlines.ipynb) for a\n", @@ -90,7 +90,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6", + "id": "7", "metadata": { "tags": [] }, @@ -114,7 +114,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7", + "id": "8", "metadata": { "tags": [] }, @@ -139,7 +139,7 @@ }, { "cell_type": "markdown", - "id": "8", + "id": "9", "metadata": {}, "source": [ "Whereas the Semi-Implicit model only works for single trapezoidal flowlines (elevation bands)." @@ -148,7 +148,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9", + "id": "10", "metadata": { "tags": [] }, @@ -169,7 +169,7 @@ { "cell_type": "code", "execution_count": null, - "id": "10", + "id": "11", "metadata": { "tags": [] }, @@ -197,7 +197,7 @@ }, { "cell_type": "markdown", - "id": "11", + "id": "12", "metadata": {}, "source": [ "You see that for the elevation band flowlines, both produce similar results. The differences arise from numeric instabilities in the Flux-Based model (see next paragraph). You can redo the experiment with a glacier where these instabilities are not that severe (e.g. RGI60-11.00897 Hintereisferner) and you will see both models produce the same result." @@ -205,7 +205,7 @@ }, { "cell_type": "markdown", - "id": "12", + "id": "13", "metadata": { "tags": [] }, @@ -215,7 +215,7 @@ }, { "cell_type": "markdown", - "id": "13", + "id": "14", "metadata": {}, "source": [ "Even the Semi-Implicit model is not as flexible as the Flux-Based one, we see it is faster when comparing the computing time:" @@ -224,7 +224,7 @@ { "cell_type": "code", "execution_count": null, - "id": "14", + "id": "15", "metadata": { "tags": [] }, @@ -236,7 +236,7 @@ }, { "cell_type": "markdown", - "id": "15", + "id": "16", "metadata": {}, "source": [ "For a single glacier, this speed-up is probably not that important, but when thinking about regional to global simulations it can save you a lot of time.\n", @@ -247,7 +247,7 @@ { "cell_type": "code", "execution_count": null, - "id": "16", + "id": "17", "metadata": { "tags": [] }, @@ -270,7 +270,7 @@ }, { "cell_type": "markdown", - "id": "17", + "id": "18", "metadata": {}, "source": [ "In this case instabilities are visible for the FluxBasedModel at around 30 km distance along the flowline. They can lead to very large velocities which reduce the maximum possible step size due to the cfl-criterion (see also in the [documentation](https://docs.oggm.org/en/latest/faq.html#ice-velocities-in-oggm-are-sometimes-noisy-or-unrealistic-how-so)).\n", @@ -283,7 +283,7 @@ { "cell_type": "code", "execution_count": null, - "id": "18", + "id": "19", "metadata": { "tags": [] }, @@ -294,7 +294,7 @@ }, { "cell_type": "markdown", - "id": "19", + "id": "20", "metadata": {}, "source": [ "## Have 5 minutes more? The bed shape of the downstream line" @@ -302,7 +302,7 @@ }, { "cell_type": "markdown", - "id": "20", + "id": "21", "metadata": {}, "source": [ "This paragraph deals with the downstream line, the initially ice-free part in front of the glacier. You can see it below as the red line connecting the end of the outline with the left border of the figure:" @@ -311,7 +311,7 @@ { "cell_type": "code", "execution_count": null, - "id": "21", + "id": "22", "metadata": { "tags": [] }, @@ -324,7 +324,7 @@ }, { "cell_type": "markdown", - "id": "22", + "id": "23", "metadata": {}, "source": [ "In OGGM before v1.6, with the FluxBasedModel, the shape of this downstream line was defined by fitting a parabola to the valley walls. However, for the SemiImplicitModel we had to change the shape to a trapezoidal, even though a parabola approximates a mountain valley arguably better. We checked the influence of this change on advancing glaciers and found negligibly small differences in the volume on a regional scale. There might be some differences in the area.\n", @@ -335,7 +335,7 @@ { "cell_type": "code", "execution_count": null, - "id": "23", + "id": "24", "metadata": {}, "outputs": [], "source": [ @@ -345,7 +345,7 @@ }, { "cell_type": "markdown", - "id": "24", + "id": "25", "metadata": {}, "source": [ "But if for any reason you decided to use the FluxBasedModel you also can switch back to a parabolic downstream line using `cfg.PARAMS['downstream_line_shape'] = 'parabola'`." @@ -354,7 +354,7 @@ { "cell_type": "code", "execution_count": null, - "id": "25", + "id": "26", "metadata": { "tags": [] }, @@ -372,7 +372,7 @@ }, { "cell_type": "markdown", - "id": "26", + "id": "27", "metadata": {}, "source": [ "# What's next?" @@ -380,7 +380,7 @@ }, { "cell_type": "markdown", - "id": "27", + "id": "28", "metadata": {}, "source": [ "- return to the [OGGM documentation](https://docs.oggm.org)\n", diff --git a/notebooks/tutorials/observed_thickness_with_dynamic_spinup.ipynb b/notebooks/tutorials/observed_thickness_with_dynamic_spinup.ipynb index 83af8a30..575ade68 100644 --- a/notebooks/tutorials/observed_thickness_with_dynamic_spinup.ipynb +++ b/notebooks/tutorials/observed_thickness_with_dynamic_spinup.ipynb @@ -170,7 +170,7 @@ { "cell_type": "code", "execution_count": null, - "id": "388d418a3d5ad023", + "id": "11", "metadata": {}, "outputs": [], "source": [ @@ -180,7 +180,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b50794ed54c905de", + "id": "12", "metadata": {}, "outputs": [], "source": [ @@ -204,7 +204,7 @@ { "cell_type": "code", "execution_count": null, - "id": "11", + "id": "13", "metadata": { "tags": [] }, @@ -246,7 +246,7 @@ { "cell_type": "code", "execution_count": null, - "id": "12", + "id": "14", "metadata": { "tags": [] }, @@ -328,7 +328,7 @@ { "cell_type": "code", "execution_count": null, - "id": "13", + "id": "15", "metadata": {}, "outputs": [], "source": [ @@ -337,7 +337,7 @@ }, { "cell_type": "markdown", - "id": "14", + "id": "16", "metadata": {}, "source": [ "In all three simulations, we observe that both the area and geodetic mass balance align within the target boundaries. Nevertheless, the volume is only coincidentally matched for the consensus estimate. This discrepancy arises because the current deformation parameter was calibrated during the inversion for OGGM default initialization, which incorporates an equilibrium assumption (see [documentation](https://docs.oggm.org/en/stable/inversion.html) for more information). However, when defining the glacier bed from thickness observations, it becomes possible/necessary to calibrate the deformation parameter to match the observed volume during initialization. Although there is currently no implemented function for this, the following code should provide an idea of how it can be achieved:" @@ -346,7 +346,7 @@ { "cell_type": "code", "execution_count": null, - "id": "15", + "id": "17", "metadata": { "tags": [] }, @@ -404,7 +404,7 @@ }, { "cell_type": "markdown", - "id": "16", + "id": "18", "metadata": {}, "source": [ "Now, we achieve dynamic consistency by calibrating the Glen A factor, ensuring a match in area, geodetic mass balance **and** volume." @@ -413,7 +413,7 @@ { "cell_type": "code", "execution_count": null, - "id": "17", + "id": "19", "metadata": { "tags": [] }, @@ -424,7 +424,7 @@ }, { "cell_type": "markdown", - "id": "18", + "id": "20", "metadata": {}, "source": [ "Note that if the optimized Glen A factor falls outside expected boundaries, considering the use of a sliding factor `fs` is advisable.\n", @@ -435,7 +435,7 @@ { "cell_type": "code", "execution_count": null, - "id": "19", + "id": "21", "metadata": { "tags": [] }, @@ -448,7 +448,7 @@ }, { "cell_type": "markdown", - "id": "20", + "id": "22", "metadata": {}, "source": [ "With this configuration, you can conduct projections as outlined in the tutorial [10 minutes to... a glacier change projection with GCM data](../10minutes/run_with_gcm.ipynb).\n", @@ -458,7 +458,7 @@ }, { "cell_type": "markdown", - "id": "21", + "id": "23", "metadata": { "tags": [] }, @@ -473,7 +473,7 @@ { "cell_type": "code", "execution_count": null, - "id": "df533387f44b135e", + "id": "24", "metadata": {}, "outputs": [], "source": [] diff --git a/requirements.txt b/requirements.txt index 60185ed3..a50122f3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -jupyter-book +jupyter-book<2 rioxarray bokeh panel