{ "cells": [ { "cell_type": "markdown", "id": "9785cfa6", "metadata": {}, "source": [ "\n", "# Getting Started — `fluxfootprints.new_ffp.FFPclim`\n", "\n", "This notebook demonstrates how to compute a simple flux‐footprint climatology using the **`FFPclim`** class from `new_ffp.py` in the `fluxfootprints` library.\n", "\n", "You'll learn how to:\n", "1. Load the included sample data (`US-UTE` half-hourly file) and site INI.\n", "2. Prepare columns expected by `FFPclim`.\n", "3. Run the model and view the footprint climatology.\n", "4. Derive and plot an 80% source-area contour.\n", "5. (Optional) Export results to a NetCDF file.\n", "\n", "> Tip: The code is written to work in your repo layout (using `sys.path.append(\"../../src\")`) **or** directly with a local copy of `new_ffp.py` if you drop this notebook next to it.\n" ] }, { "cell_type": "code", "id": "f0633ad4", "metadata": { "ExecuteTime": { "end_time": "2025-08-31T01:18:07.349377Z", "start_time": "2025-08-31T01:18:05.429876Z" } }, "source": [ "\n", "# --- Imports & path setup ----------------------------------------------------\n", "import sys, os\n", "from pathlib import Path\n", "import configparser\n", "import numpy as np\n", "import pandas as pd\n", "import xarray as xr\n", "import matplotlib.pyplot as plt\n", "\n", "\n", "sys.path.append(\"../../src\")\n", "from fluxfootprints.new_ffp import FFPclim\n", "\n" ], "outputs": [], "execution_count": 1 }, { "cell_type": "code", "id": "131b1513", "metadata": { "ExecuteTime": { "end_time": "2025-08-31T01:19:42.475529Z", "start_time": "2025-08-31T01:19:42.469777Z" } }, "source": [ "\n", "def first_existing(paths):\n", " for p in paths:\n", " if p.exists():\n", " return p\n", " return None\n", "\n", "ini_path = Path(\"./input_data/US-UTE.ini\")\n", "csv_path = Path(\"./input_data/US-UTE_HH_202406241430_202409251400.csv\")\n", "\n", "print(\"INI path:\", ini_path)\n", "print(\"CSV path:\", csv_path)\n" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INI path: input_data\\US-UTE.ini\n", "CSV path: input_data\\US-UTE_HH_202406241430_202409251400.csv\n" ] } ], "execution_count": 2 }, { "cell_type": "code", "id": "fc4ed659", "metadata": { "ExecuteTime": { "end_time": "2025-08-31T01:20:54.499011Z", "start_time": "2025-08-31T01:20:54.450347Z" } }, "source": [ "\n", "# --- Read site INI and time series CSV ---------------------------------------\n", "cfg = configparser.ConfigParser(interpolation=None)\n", "# Ensure case-sensitive keys in the [DATA] section (we map explicitly below anyway)\n", "cfg.optionxform = str\n", "cfg.read(ini_path)\n", "\n", "date_fmt = cfg.get(\"METADATA\", \"date_parser\", fallback=\"%Y%m%d%H%M\")\n", "date_col = cfg.get(\"DATA\", \"datestring_col\", fallback=\"TIMESTAMP_START\")\n", "\n", "# Load a subset of columns we need for FFPclim\n", "# These names come from the US-UTE sample and FFPclim expectations\n", "usecols = [\n", " date_col,\n", " \"MO_LENGTH\", # will be renamed to 'ol'\n", " \"USTAR\", # -> 'ustar'\n", " \"V_SIGMA\", # -> 'sigmav'\n", " \"WD\", # we convert to 'wd' (lower) so FFPclim can map -> 'wind_dir'\n", " \"WS\", # we convert to 'ws' (lower) so FFPclim can map -> 'umean'\n", "]\n", "\n", "df = pd.read_csv(\n", " csv_path,\n", " usecols=lambda c: c in usecols, # robust to extra columns\n", " parse_dates=[date_col],\n", ")\n", "\n", "# Make the timestamp a proper index\n", "df = df.rename(columns={date_col: \"time\"}).set_index(\"time\").sort_index()\n", "\n", "# The library's new_ffp.py currently renames lowercase 'wd' -> 'wind_dir' and 'ws' -> 'umean'\n", "# so we mirror that here to keep the workflow consistent.\n", "if \"WD\" in df.columns and \"wd\" not in df.columns:\n", " df = df.rename(columns={\"WD\": \"wd\"})\n", "if \"WS\" in df.columns and \"ws\" not in df.columns:\n", " df = df.rename(columns={\"WS\": \"ws\"})\n", "\n", "print(\"Columns after basic normalization:\", list(df.columns))\n", "print(df.head())\n" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Columns after basic normalization: ['wd', 'ws', 'USTAR', 'MO_LENGTH', 'V_SIGMA']\n", " wd ws USTAR MO_LENGTH V_SIGMA\n", "time \n", "2024-06-24 14:30:00 83.82242 4.118659 0.285427 -21.72663 1.243537\n", "2024-06-24 15:00:00 84.50763 3.128728 0.228795 -16.70326 1.085609\n", "2024-06-24 15:30:00 98.68390 2.669845 0.278461 -38.81393 0.901596\n", "2024-06-24 16:00:00 99.19427 2.552504 0.307955 -48.47143 0.830604\n", "2024-06-24 16:30:00 115.64840 1.786293 0.301376 275.48160 0.658542\n" ] } ], "execution_count": 5 }, { "cell_type": "code", "id": "cc71c888", "metadata": { "ExecuteTime": { "end_time": "2025-08-31T01:21:02.551583Z", "start_time": "2025-08-31T01:21:02.545491Z" } }, "source": [ "\n", "# --- (Optional) Pick a short demo period for speed ---------------------------\n", "# Using a small time window keeps the demo snappy while you’re exploring.\n", "# Set these to None to use the full period.\n", "demo_start = df.index.min()\n", "demo_end = demo_start + pd.Timedelta(days=2) # ~2 days of half-hourly data\n", "\n", "df_demo = df.loc[demo_start:demo_end].copy()\n", "print(f\"Using rows from {df_demo.index.min()} to {df_demo.index.max()} (n={len(df_demo)})\")\n" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using rows from 2024-06-24 14:30:00 to 2024-06-26 14:30:00 (n=97)\n" ] } ], "execution_count": 6 }, { "cell_type": "code", "id": "a30ce83a", "metadata": { "ExecuteTime": { "end_time": "2025-08-31T01:22:19.808068Z", "start_time": "2025-08-31T01:22:19.784649Z" } }, "source": [ "\n", "# --- Instantiate FFPclim -----------------------------------------------------\n", "# You can tweak the domain size and grid resolution as needed.\n", "# Smaller grids = faster; larger = more detail.\n", "\n", "ffp = FFPclim(\n", " df=df_demo,\n", " domain=[-300.0, 300.0, -300.0, 300.0], # meters [xmin, xmax, ymin, ymax]\n", " dx=5, dy=5, # grid spacing (m)\n", " nx=400, ny=400, # number of cells in x and y\n", " rs=[0.5, 0.8], # we’ll use 50% and 80% contours later\n", " inst_height=2.5, # instrument height (m) if not in df\n", " atm_bound_height=2000.0, # boundary layer height (m) if not in df\n", " crop_height=0.2, # canopy/veg height (m)\n", " smooth_data=True, # Gaussian smooth the footprint\n", " verbosity=1, # 0-5 (lower = quieter)\n", ")\n", "ffp\n" ], "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 13 }, { "cell_type": "code", "id": "5e4f3254", "metadata": { "ExecuteTime": { "end_time": "2025-08-31T01:22:25.109809Z", "start_time": "2025-08-31T01:22:22.188158Z" } }, "source": [ "\n", "# --- Run the footprint calculation ------------------------------------------\n", "out = ffp.run()\n", "list(out.keys())\n" ], "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\paulinkenbrandt\\.conda\\envs\\py313\\Lib\\site-packages\\xarray\\core\\computation.py:824: RuntimeWarning: overflow encountered in exp\n", " result_data = func(*input_data)\n" ] }, { "data": { "text/plain": [ "['x_2d', 'y_2d', 'fclim_2d', 'f_2d', 'rs']" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 14 }, { "cell_type": "code", "id": "e9253f53", "metadata": { "ExecuteTime": { "end_time": "2025-08-31T01:22:25.404533Z", "start_time": "2025-08-31T01:22:25.156371Z" } }, "source": [ "\n", "# --- Visualize the accumulated footprint climatology -------------------------\n", "fclim = out[\"fclim_2d\"] # xarray.DataArray with dims ('x','y')\n", "\n", "plt.figure(figsize=(6,5))\n", "plt.imshow(fclim.T, origin=\"lower\",\n", " extent=[ffp.x.min(), ffp.x.max(), ffp.y.min(), ffp.y.max()])\n", "plt.colorbar(label=\"Climatological footprint (sum over time)\")\n", "plt.xlabel(\"x (m)\")\n", "plt.ylabel(\"y (m)\")\n", "plt.title(\"Footprint Climatology (Accumulated)\")\n", "plt.tight_layout()\n", "plt.show()\n" ], "outputs": [ { "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHdCAYAAAANaj3BAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAjOJJREFUeJzt3XlcVOX+B/DPmYFhAAFBFMRAcUkxNA0q0QyXhLRcWjVvprkUmamgpWjm0nVJDcncruWSN0tvqWXFVajcpdzQ3K79MhQViNzAlWXm+f0xzHGGWWDGARz4vF+vk/DMc54550jD1++zSUIIASIiIiIyS1HdF0BERER0L2OwRERERGQFgyUiIiIiKxgsEREREVnBYImIiIjICgZLRERERFYwWCIiIiKygsESERERkRUMloiIiIisYLBUS6xevRqSJJk9xo8fXynveeLECUybNg1nzpyplPbPnDkDSZKwevVqu86fNWsWvvnmG5vOKSgowMyZMxEZGQlvb2+4ubmhSZMmGDp0KA4dOiTX0z9vw3sfMmQImjRpYte13q29e/di2rRpuHr1qt1tVOf122LXrl1wc3PD2bNnzb7+0EMPQZIkzJ8/v4qvrPrdzf8z2dnZmDZtGg4fPuzw6zL3/8vjjz+OsWPHOvy9iOzBYKmWWbVqFdLT042O0aNHV8p7nThxAtOnT6+0YKlhw4ZIT0/HU089Zdf5tgZLp0+fRvv27TFnzhx07doVX375JVJTUzF9+nT89ddfiIiIQH5+vsXzp0yZgk2bNtl1rXdr7969mD59+l0FS85ACIGxY8dixIgRaNy4scnrhw8fRkZGBgBgxYoVVX15Ti07OxvTp0+vlGDJnPfffx9LlizBqVOnquT9iKxxqe4LoKoVHh6OyMjI6r6Mu6LRaFBSUgI3Nzd06NChyt7zmWeewcWLF5Geno7w8HD5tejoaAwePBj//e9/4erqarGNZs2aVcWl1mpbtmzBoUOH8MUXX5h9/dNPPwUAPPXUU/jhhx+wd+9edOzYsSovkSooOjoaLVu2xIcffojly5dX9+VQLcfMEhnZvHkzoqKi4OHhAS8vL/To0QPp6ekm9Xbv3o3u3bvDy8sLHh4e6NixI3744Qf59dWrV+OFF14AAHTt2lXu8tOn/7t06YLw8HDs2rULHTp0gLu7Oxo1aoQpU6ZAo9HI7ei7DebOnYt//vOfCA0NhZubG7Zt22a2S2HatGmQJAnHjx/HSy+9BB8fHwQEBGDo0KFGWR9JknDjxg189tln8rV16dLF4nP55ptvcPToUSQmJhoFSoZ69uwJDw8Pi22Y68aSJAmjRo3CqlWr0LJlS7i7uyMyMhK//PILhBCYN28eQkNDUadOHXTr1g1//PGH0flpaWno27cv7rvvPqjVajRv3hyvv/46Ll68aPRM3n77bQBAaGiofL/bt28HAGi1WsydOxetWrWCm5sbGjRogFdeeQXnz5+3eC96t2/fRmJiIkJDQ6FSqdCoUSO8+eabJhmswsJCjBs3DoGBgfDw8MDjjz+OgwcPokmTJhgyZAgA3d+1i4sLZs+ebfI+O3fuhCRJ+Oqrr6xez9KlS/Hwww+jZcuWZq/1iy++QEREBBYsWAAAWLlypdl2tmzZgu7du8PHxwceHh4ICwszua5ff/0VvXv3Rr169aBWq9GsWTOjbiNL3Zb6n1FDd/tzYPgcDXXp0sXqzzUA/PHHH3j11VfRokULeHh4oFGjRujduzeOHj0q19m+fTsefvhhAMCrr74q/wxNmzZNrnPgwAH06dMHfn5+UKvVaN++Pf7zn/+YvN8vv/yCTp06Qa1WIygoCImJiSguLjZ7bYMGDcIXX3yBa9euWb0HokonqFZYtWqVACB++eUXUVxcbHTorV27VgAQMTEx4ptvvhHr168XERERQqVSiV27dsn1tm/fLlxdXUVERIRYv369+Oabb0RMTIyQJEmsW7dOCCFEXl6emDVrlgAgFi9eLNLT00V6errIy8sTQggRHR0t6tWrJ4KCgsTChQvF1q1bxejRowUA8eabb8rvlZmZKQCIRo0aia5du4qvv/5apKamiszMTPm1VatWyfWnTp0qAIiWLVuK9957T6SlpYmkpCTh5uYmXn31Vbleenq6cHd3F7169ZKv7fjx4xaf32uvvSYAiJMnT9r0vDMzM+WywYMHi8aNGxvVAyAaN24sOnbsKDZu3Cg2bdok7r//fuHn5yfi4+NF3759xffffy/Wrl0rAgICRNu2bYVWq5XPX7p0qZg9e7bYvHmz2LFjh/jss8/Egw8+KFq2bCmKioqEEEKcO3dOvPXWWwKA2Lhxo3y/+fn5Rvc2atQosWXLFrFs2TJRv359ERwcLP7++2+L16/VakVsbKxwcXERU6ZMEampqWL+/PnC09NTtG/fXty+fVuu+9JLLwmFQiEmTpwoUlNTRXJysggODhY+Pj5i8ODBcr1nnnlGhISEiJKSEqPn9MILL4igoCCjn9eyCgsLhbu7u3jnnXfMvq7/+V68eLEQQojHHntM1KlTR1y7ds2o3qeffiokSRJdunQRX3zxhfjxxx/FkiVLxMiRI+U6W7ZsEa6urqJt27Zi9erV4ueffxYrV64UAwYMsPi89PQ/o4bu9uegcePGRs9RLzo6WkRHR8vfm/t/ZseOHWLcuHHi66+/Fjt27BCbNm0S/fr1E+7u7uJ///ufEEKI/Px8+Wf63XfflX+Gzp07J4QQ4ueffxYqlUp07txZrF+/XmzZskUMGTLE5L2OHz8uPDw8ROvWrcWXX34pvv32WxEbGytCQkJM/n8RQohff/1VABCbN282uTeiqsRgqZbQf9CZO4qLi4VGoxFBQUGiTZs2QqPRyOddu3ZNNGjQQHTs2FEu69Chg2jQoIHRL5mSkhIRHh4u7rvvPvlD/KuvvhIAxLZt20yuJzo6WgAQ3377rVH5iBEjhEKhEGfPnhVC3Plwb9asmfzLX89asDR37lyjuiNHjhRqtdroF4ynp6fZXzDmPPnkkwKAUQBgjS3BUmBgoLh+/bpc9s033wgAol27dkbXm5ycLACI3377zex7arVaUVxcLM6ePWvybOfNm2f2l9HJkycFAKNAQIg7v6QmTZpk8fq3bNli9lmvX79eABDLly8XQuh+QQIQEyZMMKr35ZdfCgBGfwfbtm0TAMSmTZvksgsXLggXFxcxffp0s/dd9pr1AXtZ3bp1E2q1Wly5ckUIcefvaMWKFXKda9euCW9vb/HYY48ZPfuymjVrJpo1ayZu3bplsY6twdLd/BzcTbBUVklJiSgqKhItWrQQ8fHxcvn+/fstntuqVSvRvn17k2D26aefFg0bNpQ/U/r37y/c3d1Fbm6u0fu1atXK7M9nUVGRkCTJ5GeHqKqxG66WWbNmDfbv3290uLi44NSpU8jOzsagQYOgUNz5sahTpw6ee+45/PLLL7h58yZu3LiBX3/9Fc8//zzq1Kkj11MqlRg0aBDOnz9f4QGZXl5e6NOnj1HZwIEDodVqsXPnTqPyPn36WB0PVFbZdtu2bYvbt28jLy+vwm1Ula5du8LT01P+PiwsDICuW8+wu0ZfbjjLKy8vD3FxcQgODoaLiwtcXV3lgc0nT54s9723bdsGACZdOI888gjCwsLw008/WTz3559/NnvuCy+8AE9PT/ncHTt2AABefPFFo3rPP/88XFyMh0126dIFDz74IBYvXiyXLVu2DJIk4bXXXrN6L9nZ2QCABg0amLyWmZmJbdu24dlnn0XdunXl6/Ty8jLqitu7dy8KCgowcuRIk64yvd9//x2nT5/GsGHDoFarrV6TLe7m5+BulJSUYNasWWjdujVUKhVcXFygUqnwf//3fxX6Gfrjjz/wv//9D//4xz/k9vRHr169kJOTI38mbNu2Dd27d0dAQIB8vlKpRP/+/c227erqirp16+LChQsOuNOa5/bt2ygoKHDocfv27eq+rXsSB3jXMmFhYWYHeF+6dAmAboZZWUFBQdBqtbhy5QqELhtpsZ5hW+Ux/MDUCwwMNNuGufezpl69ekbfu7m5AQBu3bplUzt6ISEhAHS/dFu1amVXG5b4+fkZfa9SqayW6z/MtFotYmJikJ2djSlTpqBNmzbw9PSEVqtFhw4dKnSv5f29W/uFfOnSJbi4uKB+/fpG5ZIkITAwUG5b/2fZv28XFxeTvycAGD16NIYPH45Tp06hadOm+OSTT/D888/LPxuW6O/XXACzcuVKCCHw/PPPG42n6tOnD9auXYv//e9/aNWqFf7++28AwH333WfxfSpSxx72/hzcrYSEBCxevBgTJkxAdHQ0fH19oVAoMHz48Ar9DP31118AgPHjx1tchkQ/hu7SpUtm/x6t/d2q1Wq7/7+tyW7fvo3QxnWQm6cpv7INAgMDkZmZ6dB/CNQEDJYIwJ3gIicnx+S17OxsKBQK+Pr6QggBhUJhsR4A+Pv7V+g99R+yhnJzc42uR8/Sv/KrSmxsLJYvX45vvvkGEydOrNZr0Tt27BiOHDmC1atXY/DgwXJ52cG/1hj+vZf95Z+dnW3177JevXooKSnB33//bRQwCSGQm5srDwjWv8dff/2FRo0ayfVKSkrMBtYDBw7EhAkTsHjxYnTo0AG5ubl48803y70X/bVevnzZqFyr1cqTAJ599lmz565cuRJz586V78Pa4PaK1AF0v+QLCwtNyg0H3zuKtfcq7//Hzz//HK+88gpmzZplcq4+C2eNvv3ExESLz1c/4L5evXry/+OGzJXpXblypcKfKbVJUVERcvM0OHuwCby9HNNJVHBNi8YRZ1BUVMRgqQx2wxEA3YdZo0aN8MUXX0AIIZffuHEDGzZskGfIeXp64tFHH8XGjRuN/rWn1Wrx+eef47777sP9998PoPxszrVr17B582ajsi+++AIKhQKPP/64o2/RhJubW4X/xdq3b1+0adMGs2fPxrFjx8zW2bp1K27evOnIS7RKH0Dqn7Pev/71L5O6lv4uunXrBkD3C9PQ/v37cfLkSXTv3t3i++tfK3vuhg0bcOPGDfl1/d/l+vXrjep9/fXXKCkpMWlXrVbjtddew2effYakpCS0a9cOnTp1sngdevruqdOnTxuVb926FefPn8ebb76Jbdu2mRwPPPAA1qxZg5KSEnTs2BE+Pj5YtmyZ0f8Hhu6//340a9YMK1euNBug6DVp0gR5eXlG/ygoKirC1q1by70XWzVp0gS//fabUdnvv/9eoS5xSZJMfoZ++OEHk64vSz9DLVu2RIsWLXDkyBFERkaaPby8vADouhp/+ukno2ei0WhMfjb0srOzcfv2bbRu3brc+6it6nhJDj3IPGaWCACgUCgwd+5c/OMf/8DTTz+N119/HYWFhZg3bx6uXr2KOXPmyHVnz56NHj16oGvXrhg/fjxUKhWWLFmCY8eO4csvv5R/ieun2C9fvhxeXl5Qq9UIDQ2VMw316tXDG2+8gaysLNx///1ISUnBJ598gjfeeEPu9qpMbdq0wfbt2/Hdd9+hYcOG8PLyMjvlHNCNq9i0aRNiYmIQFRWFN954Qx5jcvbsWXz99df47rvvcOXKlUq/br1WrVqhWbNmmDhxIoQQ8PPzw3fffYe0tDSTum3atAEAfPTRRxg8eDBcXV3RsmVLtGzZEq+99ho+/vhjKBQK9OzZE2fOnMGUKVMQHByM+Ph4i+/fo0cPxMbGYsKECSgoKECnTp3w22+/YerUqWjfvj0GDRoEAHjggQfw0ksv4cMPP4RSqUS3bt1w/PhxfPjhh/Dx8TEaI6c3cuRIzJ07FwcPHpTXRirPfffdh6ZNm+KXX34xWmh1xYoVcHFxwaRJk+SuYkOvv/46Ro8ejR9++AF9+/bFhx9+iOHDh+OJJ57AiBEjEBAQgD/++ANHjhzBokWLAACLFy9G79690aFDB8THxyMkJARZWVnYunUr1q5dCwDo378/3nvvPQwYMABvv/02bt++jYULFxotjeEogwYNwssvv4yRI0fiueeew9mzZ40yZdY8/fTTWL16NVq1aoW2bdvi4MGDmDdvnkmmsVmzZnB3d8fatWsRFhaGOnXqICgoCEFBQfjXv/6Fnj17IjY2FkOGDEGjRo1w+fJlnDx5EocOHZKXfHj33XexefNmdOvWDe+99x48PDywePFi3Lhxw+y1/fLLLwB0QRaZpxFaaMzH9Xa1RRZU39hyqkr6mT/79++3Wu+bb74Rjz76qFCr1cLT01N0795d7Nmzx6Terl27RLdu3YSnp6dwd3cXHTp0EN99951JveTkZBEaGiqUSqXRTJro6GjxwAMPiO3bt4vIyEjh5uYmGjZsKCZNmmQ0o0Y/e2fevHkmbVubDWc45d3w/g1n2xw+fFh06tRJeHh4CABGs4YsuXr1qnj//ffFQw89JOrUqSNcXV1FSEiIePnll42eky2z4QyXSrB2z/qZYl999ZVcduLECdGjRw/h5eUlfH19xQsvvCCysrIEADF16lSj8xMTE0VQUJBQKBRGsxQ1Go344IMPxP333y9cXV2Fv7+/ePnll+Vp4dau/9atW2LChAmicePGwtXVVTRs2FC88cYb8owzvdu3b4uEhATRoEEDoVarRYcOHUR6errw8fExmnFlqEuXLsLPz0/cvHnT7OvmTJkyRfj6+sqzFv/++2+hUqlEv379LJ5z5coV4e7uLnr37i2XpaSkiOjoaOHp6SlPdf/ggw+MzktPTxc9e/YUPj4+ws3NTTRr1szkXlJSUkS7du2Eu7u7aNq0qVi0aJHF2XB383Og1WrF3LlzRdOmTYVarRaRkZHi559/rtBsuCtXrohhw4aJBg0aCA8PD/HYY4+JXbt2mZwrhG4GY6tWrYSrq6vJz9iRI0fEiy++KBo0aCBcXV1FYGCg6Natm1i2bJlRG3v27BEdOnQQbm5uIjAwULz99tti+fLlZmfDDRo0SLRp00aQqfz8fAFA5J1qLG5nhzrkyDvVWACQlxWhOyQhLOSaiSpRly5dcPHiRYtdWlTz7d27F506dcLatWsxcOBAo9fy8vLQuHFjvPXWW5g7d26F28zOzkZoaCjWrFljcYYVOYeCggIEBQVhwYIFGDFiRHVfzj2noKAAPj4+yD0V4tAxS4Ets5Cfnw9vb2+HtFlTsBuOiCpdWloa0tPTERERAXd3dxw5cgRz5sxBixYtjAYFnz9/Hn/++SfmzZsHhUKBMWPG2PQ+QUFBGDt2LGbOnIkXXnjBbBcfOYcFCxYgJCQEr776anVfChGDJSKqfN7e3khNTUVycjKuXbsGf39/9OzZE7NnzzaadfPpp59ixowZaNKkCdauXWs0e66i3n33XXh4eODChQsIDg525G1QFfL29sbq1atN1uIiY1po4aiRRo5rqeZhNxwREZGT0XfDnftfI4d2wwW3usBuODOcJke9dOlStG3bFt7e3vD29kZUVBT++9//yq8LITBt2jQEBQXB3d0dXbp0wfHjx43aKCwsxFtvvQV/f394enqiT58+FdoslIiIiMxbsmQJQkNDoVarERERgV27dlmtv2PHDkRERECtVqNp06ZYtmyZSZ3k5GR5U2n9zNzqXF3caYKl++67D3PmzMGBAwdw4MABdOvWDX379pUDorlz5yIpKQmLFi3C/v37ERgYiB49ehjtVj127Fhs2rQJ69atw+7du3H9+nU8/fTTlTKVl4iIqLJpIRx62Gr9+vUYO3YsJk+ejIyMDHTu3Bk9e/ZEVlaW2fqZmZno1asXOnfujIyMDEyaNAmjR4/Ghg0b5Dpr167FxIkTMXXqVJw8eRIrVqzA+vXrkZiYaPdzultO3Q3n5+eHefPmYejQofLAzgkTJgDQZZECAgLwwQcf4PXXX0d+fj7q16+Pf//73/IsmezsbAQHByMlJQWxsbHVeStEREQVpu+Gy/xfQ3g5qBvu2jUtQlvl2NQN9+ijj+Khhx7C0qVL5bKwsDD069cPs2fPNqk/YcIEbN682Wjfwbi4OBw5cgTp6ekAgFGjRuHkyZNGe1OOGzcO+/btKzdrVVmccuScRqPBV199hRs3biAqKgqZmZnIzc1FTEyMXMfNzQ3R0dHYu3cvXn/9dRw8eBDFxcVGdYKCghAeHo69e/daDZYKCwuNVurVarW4fPky6tWrV+3bcBAR0b1HCIFr164hKCjI6WZlFhQUGH3v5uZmsso7oFuR/uDBgyZbQMXExGDv3r1m205PTzf6PQzotpNasWIFiouL4erqisceewyff/459u3bh0ceeQR//vknUlJSjLZ1qmpOFSwdPXoUUVFRuH37NurUqYNNmzahdevW8l9K2Y06AwIC5I1Ac3NzoVKp4Ovra1LH2r5EgG7F6unTpzvwToiIqDY4d+6cwzddNmRv95mltgCYzCKdOnUqpk2bZlL/4sWL0Gg0Zn/3Wvq9mpuba7Z+SUkJLl68iIYNG2LAgAH4+++/8dhjj0EIgZKSErzxxhvVui+nUwVLLVu2xOHDh3H16lVs2LABgwcPxo4dO+TXy2Z5hBDlZn4qUicxMREJCQny9/n5+QgJCcFj6AUXuNpxJ0REVJOVoBi7kSLvi+dMzp07Z9QNZy6rZMjW373m6huWb9++HTNnzsSSJUvw6KOP4o8//sCYMWPQsGFDTJkyxaZ7cRSnCpZUKhWaN28OAIiMjMT+/fvx0UcfyeOUcnNz0bBhQ7l+Xl6eHMEGBgaiqKgIV65cMcou5eXloWPHjlbf11IK0gWucJEYLBERURmlyZ7KHqqhEQIaBw091rejn3VeHn9/fyiVSpMskuHv3rICAwPN1ndxcZH3DZ0yZQoGDRqE4cOHA9DtbXnjxg289tprmDx5crV0azpXR2oZQggUFhYiNDQUgYGBRhuIFhUVYceOHXIgFBERAVdXV6M6OTk5OHbsWLnBEhER0b1I6+DDFiqVChERESabd6elpVn8vRoVFWVSPzU1FZGRkXB11SUfbt68aRIQKZVKCCFQXXPSnCazNGnSJPTs2RPBwcG4du0a1q1bh+3bt2PLli2QJAljx47FrFmz0KJFC7Ro0QKzZs2Ch4eHvOeUj48Phg0bhnHjxqFevXrw8/PD+PHj0aZNGzzxxBPVfHdERETOJyEhAYMGDUJkZCSioqKwfPlyZGVlIS4uDoBuGMuFCxewZs0aALqZb4sWLUJCQgJGjBiB9PR0rFixAl9++aXcZu/evZGUlIT27dvL3XBTpkxBnz59oFQqq+U+nSZY+uuvvzBo0CDk5OTAx8cHbdu2xZYtW9CjRw8AwDvvvINbt25h5MiRuHLlCh599FGkpqYa9RcvWLAALi4uePHFF3Hr1i10794dq1evrraHT0REdDc0ENA4aIC3Pe30798fly5dwowZM5CTk4Pw8HCkpKSgcePGAHQ9OIZrLoWGhiIlJQXx8fFYvHgxgoKCsHDhQjz33HNynXfffReSJOHdd9/FhQsXUL9+ffTu3RszZ868+5u0k1Ovs1Rd9OtbdEFfjlkiIiITJaIY2/FtpW0dov89dPxkA4eus/RAWB63OzHDaTJLREREZEwjdIej2iLzGCwRERE5KXsGZltri8xz6tlwRERERJWNmSUiIiInpYUEDRyzlpPWQe3URMwsEREREVnBzBIREZGT0grd4ai2yDwGS0RERE5K48BuOEe1UxOxG46IiIjICmaWiIiInBQzS1WDwRIREZGT0goJWuGg2XAOaqcmYjccERERkRXMLBERETkpdsNVDWaWiIiIiKxgZomIiMhJaaCAxkF5D41DWqmZGCwRERE5KeHAAd6CA7wtYjccERERkRXMLBERETkpDvCuGswsEREREVnBzBIREZGT0ggFNMJBA7y5ka5FDJaIiIiclBYStA7qJNKC0ZIl7IYjIiIisoKZJSIiIifFAd5Vg5klIiIiIiuYWSIiInJSjh3gzTFLljBYIiIiclK6Ad6O6T5zVDs1EbvhiIiIiKxgZomIiMhJaR24kS6XDrCMwRIREZGT4pilqsFuOCIiIiIrmFkiIiJyUloouIJ3FWBmiYiIiMgKZpaIiIiclEZI0AgHreDtoHZqIgZLRERETkrjwNlwGnbDWcRuOCIiIiIrmFkiIiJyUlqhgNZBSwdouXSARcwsEREREVnBzBIREZGT4pilqsFgiYiIyElp4bhZbFqHtFIzsRuOiIiIyApmloiIiJyUY1fwZv7EEj4ZIiIistuSJUsQGhoKtVqNiIgI7Nq1y2r9HTt2ICIiAmq1Gk2bNsWyZcuMXu/SpQskSTI5nnrqqcq8DasYLBERETkpjVA49LDV+vXrMXbsWEyePBkZGRno3LkzevbsiaysLLP1MzMz0atXL3Tu3BkZGRmYNGkSRo8ejQ0bNsh1Nm7ciJycHPk4duwYlEolXnjhBbuf091iNxwREZGT0kKCFo4a4G17O0lJSRg2bBiGDx8OAEhOTsbWrVuxdOlSzJ4926T+smXLEBISguTkZABAWFgYDhw4gPnz5+O5554DAPj5+Rmds27dOnh4eFRrsMTMEhEREckKCgqMjsLCQrP1ioqKcPDgQcTExBiVx8TEYO/evWbPSU9PN6kfGxuLAwcOoLi42Ow5K1aswIABA+Dp6WnH3TgGgyUiIiInVRndcMHBwfDx8ZEPcxkiALh48SI0Gg0CAgKMygMCApCbm2v2nNzcXLP1S0pKcPHiRZP6+/btw7Fjx+TMVXVhNxwREZGTcuyilLp2zp07B29vb7nczc3N6nmSZNx9J4QwKSuvvrlyQJdVCg8PxyOPPGL94isZgyUiIiKSeXt7GwVLlvj7+0OpVJpkkfLy8kyyR3qBgYFm67u4uKBevXpG5Tdv3sS6deswY8YMG+/A8dgNR0RE5KS0QnLoYQuVSoWIiAikpaUZlaelpaFjx45mz4mKijKpn5qaisjISLi6uhqV/+c//0FhYSFefvllm66rMjBYIiIiIrskJCTg008/xcqVK3Hy5EnEx8cjKysLcXFxAIDExES88sorcv24uDicPXsWCQkJOHnyJFauXIkVK1Zg/PjxJm2vWLEC/fr1M8k4VQd2wxERETkprQPHLNmzgnf//v1x6dIlzJgxAzk5OQgPD0dKSgoaN24MAMjJyTFacyk0NBQpKSmIj4/H4sWLERQUhIULF8rLBuj9/vvv2L17N1JTU+/uphxEEvqRVVRhBQUF8PHxQRf0hYvkWv4JRERUq5SIYmzHt8jPz6/Q+B9b6X8PzdrXFeo6jsl73L5egkmPbKu0a3Zm7IYjIiIisoLdcERERE5KAwkaB63g7ah27iWFhYXlLn1QEcwsERERUY2wdetWDBkyBM2aNYOrqys8PDzg5eWF6OhozJw5E9nZ2Xa1y2CJiIjISWmFwqGHs/rmm2/QsmVLDB48GAqFAm+//TY2btyIrVu3YsWKFYiOjsaPP/6Ipk2bIi4uDn///bdN7TvNk5k9ezYefvhheHl5oUGDBujXrx9OnTplVEcIgWnTpiEoKAju7u7o0qULjh8/blSnsLAQb731Fvz9/eHp6Yk+ffrg/PnzVXkrREREDqHBna64uz+c16xZszB//nxkZ2dj5cqViIuLQ+/evfHEE0/gxRdfxIwZM7Bt2zacPn0a3t7eWLNmjU3tO02wtGPHDrz55pv45ZdfkJaWhpKSEsTExODGjRtynblz5yIpKQmLFi3C/v37ERgYiB49euDatWtynbFjx2LTpk1Yt24ddu/ejevXr+Ppp5+GRuPMPyZERES11759+9C7d28oFNbDmkaNGmHu3LkYN26cTe07zQDvLVu2GH2/atUqNGjQAAcPHsTjjz8OIQSSk5MxefJkPPvsswCAzz77DAEBAfjiiy/w+uuvIz8/HytWrMC///1vPPHEEwCAzz//HMHBwfjxxx8RGxtr9r0LCwuNdl0uKCiopLskIiKqOEd2nzlzN5w5RUVFyMzMRLNmzeDicnfhjtM+mfz8fACAn58fACAzMxO5ubmIiYmR67i5uSE6Ohp79+4FABw8eBDFxcVGdYKCghAeHi7XMWf27NlGOzAHBwdXxi0RERHRXbp58yaGDRsGDw8PPPDAA/KimKNHj8acOXPsatMpgyUhBBISEvDYY48hPDwcAOSN+cpu3hcQECC/lpubC5VKBV9fX4t1zElMTER+fr58nDt3zpG3Q0REZBeNUDj0qAkSExNx5MgRbN++HWq1Wi5/4oknsH79ervadJpuOEOjRo3Cb7/9ht27d5u8JknG60QIIUzKyiqvjpubm0PWaSAiInIkAQlaB62PJGrIOkvffPMN1q9fjw4dOhj9bm/dujVOnz5tV5tOF0a+9dZb2Lx5M7Zt24b77rtPLg8MDAQAkwxRXl6enG0KDAxEUVERrly5YrEOEREROa+///4bDRo0MCm/ceNGuckTS5wmWBJCYNSoUdi4cSN+/vlnhIaGGr0eGhqKwMBApKWlyWVFRUXYsWMHOnbsCACIiIiAq6urUZ2cnBwcO3ZMrkNEROQs2A1n6uGHH8YPP/wgf68PkD755BNERUXZ1abTdMO9+eab+OKLL/Dtt9/Cy8tLziD5+PjA3d0dkiRh7NixmDVrFlq0aIEWLVpg1qxZ8PDwwMCBA+W6w4YNw7hx41CvXj34+flh/PjxaNOmjTw7joiIiJzX7Nmz8eSTT+LEiRMoKSnBRx99hOPHjyM9PR07duywq02nCZaWLl0KAOjSpYtR+apVqzBkyBAAwDvvvINbt25h5MiRuHLlCh599FGkpqbCy8tLrr9gwQK4uLjgxRdfxK1bt9C9e3esXr0aSqWyqm6FiIjIIbRCglY4ZqyRo9qpbh07dsSePXswf/58NGvWDKmpqXjooYeQnp6ONm3a2NWmJIQQDr7OGq+goAA+Pj7ogr5wkVyr+3KIiOgeUyKKsR3fIj8/H97e3g5vX/97aOyePnCr45jfQ4XXi5HcaXOlXbMzc5rMEhEREVFF5eXlIS8vD1qt1qi8bdu2NrfFYImIiMhJsRvO1MGDBzF48GCcPHkSZTvPJEmya3szBktEREROSgsFtA6a2O6odqrbq6++ivvvvx8rVqxAQECA3csFGGKwRERERDVGZmYmNm7ciObNmzuszZoRRhIREdVCGiE59KgJunfvjiNHjji0TWaWiIiIqMb49NNPMXjwYBw7dgzh4eFwdTWeLdinTx+b22SwRERE5KQ4wNvU3r17sXv3bvz3v/81ec3eAd7shiMiInJSQiigddAhash2J6NHj8agQYOQk5MDrVZrdNgTKAEMloiIiKgGuXTpEuLj4xEQEOCwNhksEREROSkNJIceNcGzzz6Lbdu2ObRNjlkiIiKiGuP+++9HYmIidu/ejTZt2pgM8B49erTNbTJYIiIiclJa4biB2doaslPsp59+ijp16mDHjh3YsWOH0WuSJDFYIiIiqk30g7Md1VZNkJmZ6fA2a8aTISIiIqokzCwRERE5KS0kaB00MNtR7VSHhIQEvP/++/D09ERCQoLVuklJSTa3z2CJiEyZ23hS1JABDURU42RkZKC4uFj+2tEYLBHRHdZ259a/xqCJ6J7hyD3dnHlvOMOlAhy9bADAMUtEBOgCIWuBUtm6RHRPcNTq3Y4cKF7dhg4dimvXrpmU37hxA0OHDrWrzZrxZIjIfvYEPwyYiOge9dlnn+HWrVsm5bdu3cKaNWvsapPdcES12d0EPZLELjmiaqaFAzfSdeIB3gBQUFAAIQSEELh27RrUarX8mkajQUpKCho0aGBX2wyWiMh+DJiIqpVw4Gw44eTBUt26dSFJEiRJwv3332/yuiRJmD59ul1tM1giqq0c1ZXGgImI7gHbtm2DEALdunXDhg0b4OfnJ7+mUqnQuHFjBAUF2dU2gyWi2sjRY44YMBFVC61wYDecE8+GA4Do6GgAuhW8Q0JCIDnwc47BEhEREdUYjRs3dnibDJaIapvKmsnG7BJRlePecFWDT4aoNqnsKf9cUoCoSum74Rx12GPJkiUIDQ2FWq1GREQEdu3aZbX+jh07EBERAbVajaZNm2LZsmUmda5evYo333wTDRs2hFqtRlhYGFJSUuy6PkdgsERERER2Wb9+PcaOHYvJkycjIyMDnTt3Rs+ePZGVlWW2fmZmJnr16oXOnTsjIyMDkyZNwujRo7Fhwwa5TlFREXr06IEzZ87g66+/xqlTp/DJJ5+gUaNG5V6PEAJnz541u87S3WA3HFFtUVVZH3bHEVWZ6t5INykpCcOGDcPw4cMBAMnJydi6dSuWLl2K2bNnm9RftmwZQkJCkJycDAAICwvDgQMHMH/+fDz33HMAgJUrV+Ly5cvYu3cvXF1dAVR8HJIQAi1atMDx48fRokULm+/HEmaWiMjx2B1H5LQKCgqMjsLCQrP1ioqKcPDgQcTExBiVx8TEYO/evWbPSU9PN6kfGxuLAwcOyBvhbt68GVFRUXjzzTcREBCA8PBwzJo1CxqNptxrVygUaNGiBS5dulSRW60wBktEtQGDF6IaqTLGLAUHB8PHx0c+zGWIAODixYvQaDQICAgwKg8ICEBubq7Zc3Jzc83WLykpwcWLFwEAf/75J77++mt51e13330XH374IWbOnFmhZzJ37ly8/fbbOHbsWIXqVwS74YiocrA7jqjSVcY6S+fOnYO3t7dc7ubmZvW8susZCSGsrnFkrr5huVarRYMGDbB8+XIolUpEREQgOzsb8+bNw3vvvVfufbz88su4efMmHnzwQahUKri7uxu9fvny5XLbKIvBElFNx6wSEdnA29vbKFiyxN/fH0ql0iSLlJeXZ5I90gsMDDRb38XFBfXq1QMANGzYEK6urlAqlXKdsLAw5ObmoqioCCqVyup16cdDORKDJSKqPMwuEVWq6lzBW6VSISIiAmlpaXjmmWfk8rS0NPTt29fsOVFRUfjuu++MylJTUxEZGSkP5u7UqRO++OILaLVaKBS60UK///47GjZsWG6gBACDBw+26T4qgmOWiKhyMbNFVGMlJCTg008/xcqVK3Hy5EnEx8cjKysLcXFxAIDExES88sorcv24uDicPXsWCQkJOHnyJFauXIkVK1Zg/Pjxcp033ngDly5dwpgxY/D777/jhx9+wKxZs/Dmm29W+LpOnz6Nd999Fy+99BLy8vIAAFu2bMHx48ftuk8GS0Q1GeMUohqtuhel7N+/P5KTkzFjxgy0a9cOO3fuREpKijzVPycnx2jNpdDQUKSkpGD79u1o164d3n//fSxcuFBeNgDQDTBPTU3F/v370bZtW4wePRpjxozBxIkTK3RNO3bsQJs2bfDrr79i48aNuH79OgDgt99+w9SpU22+RwCQhGCO3FYFBQXw8fFBF/SFi+Ra3ZdDZNm9lNXhRw3VIiWiGNvxLfLz8ys0/sdW+t9DT6S8DhdP6wOwK6rkRiF+7PWvSrvmqhIVFYUXXngBCQkJ8PLywpEjR9C0aVPs378f/fr1w4ULF2xuk5klIiIiqjGOHj1qNIZKr379+navv8RgiYiIyElVdzfcvahu3brIyckxKc/IyKjQlinmMFgiqqnupS444N67HqIagMGSqYEDB2LChAnIzc2FJEnQarXYs2cPxo8fbzTY3BYMloiIiKjGmDlzJkJCQtCoUSNcv34drVu3xuOPP46OHTvi3XfftatNrrNEVBM5MotTtq27GajNdZeIHKo611m6V7m6umLt2rWYMWMGMjIyoNVq0b59+7vaWJfBEhGZJwdJZT5A9d8y6CGie9COHTsQHR2NZs2aoVmzZg5pk91wRGRMkkoDJf1hUkF3yPXsaJ+IHIJjlkz16NEDISEhmDhxosM202WwRFTT3E0wYjVIMqkMOWgiomohhOTQoybIzs7GO++8g127dqFt27Zo27Yt5s6di/Pnz9vdJoMlItKRKhokmZzIgImI7hn+/v4YNWoU9uzZg9OnT6N///5Ys2YNmjRpgm7dutnVJscsEZEDSLo4q6LjmDjQm8ghtJCgddC+Ro5q514SGhqKiRMn4sEHH8SUKVOwY8cOu9phZomoJrE3w2N3Vsmokbs8n4jIcfbs2YORI0eiYcOGGDhwIB544AF8//33drXFzBJRbeeQQMmgLWaMiKoMlw4wNWnSJHz55ZfIzs7GE088geTkZPTr1w8eHh52t8lgiYgcyIbuOAZWRHfNkQOza8oA7+3bt2P8+PHo378//P39HdImgyWimsLuafyO/oC0cfwSEZED7d271+FtMlgiqq0qJVCSGwfAYImosrEbzrzTp08jOTkZJ0+ehCRJCAsLw5gxY+xepJIDvImoclQk08UlB4jIwbZu3YrWrVtj3759aNu2LcLDw/Hrr7/igQceQFpaml1tMrNEVBPYGnRUalZJfhMwu0RUuThmydTEiRMRHx+POXPmmJRPmDABPXr0sLlNZpaIyCpJkiApzB8VONkxdYjILOHArU5qSrB08uRJDBs2zKR86NChOHHihF1tOlWwtHPnTvTu3RtBQUGQJAnffPON0etCCEybNg1BQUFwd3dHly5dcPz4caM6hYWFeOutt+Dv7w9PT0/06dPnrpZAJ6qp9EGStQRU+QFTzfjwJSLnUb9+fRw+fNik/PDhw2jQoIFdbTpVsHTjxg08+OCDWLRokdnX586di6SkJCxatAj79+9HYGAgevTogWvXrsl1xo4di02bNmHdunXYvXs3rl+/jqeffhoajaaqboPIsSqhC06SrAdJRnXLyzIxc0RUaQR0E08dclT3zTjIiBEj8Nprr+GDDz7Arl27sHv3bsyZMwevv/46XnvtNbvadKoxSz179kTPnj3NviaEQHJyMiZPnoxnn30WAPDZZ58h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mDFjBurXrw+FQgGFQoHHHnsMs2fPtnu7EwZLRERETkrfDeeow1ZJSUkYNmwYhg8fjrCwMCQnJyM4OBhLly41W3/ZsmUICQlBcnIywsLCMHz4cAwdOhTz58+X66xduxYjR45Eu3bt0KpVK3zyySfQarX46aefKnRNGo0GderUAQD4+/sjOzsbgG4A+KlTp2y/STBYIiIiIgMFBQVGR2Fhodl6RUVFOHjwIGJiYozKY2JisHfvXrPnpKenm9SPjY3FgQMHUFxcbPacmzdvori4GH5+fhW6/vDwcHmBykcffRRz587Fnj17MGPGDDRt2rRCbZTFYImIiMhZ6ZcOcNQBIDg4GD4+PvIxe/Zss2998eJFaDQaBAQEGJUHBAQYrZ5tKDc312z9kpISXLx40ew5EydORKNGjfDEE09U6JG8++678vIB//znP3H27Fl07twZKSkpWLhwYYXaKIuz4YiIiJxUZcyGO3fuHLy9veVyNzc36+eVzjLTE0KYlJVX31w5AMydOxdffvkltm/fDrVabfU69GJjY+WvmzZtihMnTuDy5cvw9fW1el3WMFgiIiIimbe3t1GwZIm/vz+USqVJFikvL88ke6QXGBhotr6Liwvq1atnVD5//nzMmjULP/74I9q2bWvjXRiraBeeJQyWiIiInFU1bqSrUqkQERGBtLQ0PPPMM3J5Wloa+vbta/acqKgofPfdd0ZlqampiIyMhKurq1w2b948/POf/8TWrVsRGRlp03Xdvn0bH3/8MbZt24a8vDyTFb0PHTpkU3sAgyUiIiKyU0JCAgYNGoTIyEhERUVh+fLlyMrKQlxcHAAgMTERFy5cwJo1awAAcXFxWLRoERISEjBixAikp6djxYoV+PLLL+U2586diylTpuCLL75AkyZN5ExUnTp15Flu1gwdOhRpaWl4/vnn8cgjj9jd9WaIwRIREZGTqu4VvPv3749Lly5hxowZyMnJQXh4OFJSUuR92nJycozWXAoNDUVKSgri4+OxePFiBAUFYeHChXjuuefkOkuWLEFRURGef/55o/eaOnUqpk2bVu41/fDDD0hJSUGnTp1svyELGCwRERE5K63QHY5qyw4jR47EyJEjzb62evVqk7Lo6GirXWFnzpyx6zr0GjVqBC8vr7tqoywuHUBEREQ1xocffogJEybg7NmzDmuTmSUiIiJnVY0DvO9V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" }, "metadata": {}, "output_type": "display_data" } ], "execution_count": 15 }, { "cell_type": "code", "id": "b2bc30bf", "metadata": { "ExecuteTime": { "end_time": "2025-08-31T01:22:28.528077Z", "start_time": "2025-08-31T01:22:28.180735Z" } }, "source": [ "\n", "# --- Compute and plot an 80% source-area contour -----------------------------\n", "# Normalize the climatology to sum to 1.0\n", "f_norm = fclim / np.nansum(fclim.values)\n", "\n", "# Convert to numpy arrays for thresholding\n", "F = np.nan_to_num(f_norm.values, nan=0.0, posinf=0.0, neginf=0.0)\n", "\n", "# Find the threshold value such that the sum of all cells >= threshold is ~0.80 of total\n", "flat = F.ravel()\n", "sort_idx = np.argsort(flat)[::-1] # descending\n", "cumsum = np.cumsum(flat[sort_idx])\n", "target = 0.80\n", "k = np.searchsorted(cumsum, target)\n", "thresh = flat[sort_idx[k]] if k < len(flat) else flat[sort_idx[-1]]\n", "\n", "# Plot\n", "X, Y = np.meshgrid(ffp.x, ffp.y, indexing=\"xy\")\n", "plt.figure(figsize=(6,5))\n", "plt.imshow(F.T, origin=\"lower\",\n", " extent=[ffp.x.min(), ffp.x.max(), ffp.y.min(), ffp.y.max()])\n", "cs = plt.contour(X, Y, F, levels=[thresh])\n", "plt.clabel(cs, inline=True, fmt={thresh: \"80%\"})\n", "#plt.colorbar(label=\"Normalized footprint\")\n", "plt.xlabel(\"x (m)\")\n", "plt.ylabel(\"y (m)\")\n", "plt.title(\"Normalized Footprint with ~80% Contour\")\n", "plt.tight_layout()\n", "plt.show()\n" ], "outputs": [ { "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfsAAAHqCAYAAAADAefsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXXhJREFUeJzt3Xl4FFW+PvC3qreEbIYEEiI7ch2RRQUXcAFEQEZA7owKMgJRZERBBxHlh84oeAcQ5eI4LjiOiqOjog7iBioomwwMIMsV9HFnDzHKkrAkne6u7++P6qp09ZJ0drryfp6nla4+XX2qSHj7nDrnlCIiAiIiIrIttbErQERERPWLYU9ERGRzDHsiIiKbY9gTERHZHMOeiIjI5hj2RERENsewJyIisjmGPRERkc0x7ImIiGyOYZ+gXnrpJSiKgqSkJOzduzfi9X79+qFr166NULO6kZ+fj/bt21u2tW/fHvn5+Q1ajz179kBRFLz00kuVlluzZg0URYn6uO666+qlbgUFBZg5cyZ27NhRL/sHAEVRMHPmzBq995lnnqnyvNWWcd7XrFljblu+fHnMOiuKgsmTJ9drnaIpLCzE5MmT0bFjRyQnJ6Ndu3YYP3489u3bF1G2qKgI+fn5yM7ORrNmzdC7d298+umnEeUWLlyI9u3bIzMzEzfddBOOHTtmed3v9+O8887Dgw8+WK26er1ePPXUU7jsssuQmZkJt9uNM888EzfccAPWrl1brX1V12uvvYa//OUv9foZTZZQQlq0aJEAEABy0003Rbzet29fOffccxuhZnVj3Lhx0q5dO8u2bdu2yffff9+g9di9e7cAkEWLFlVabvXq1QJA5syZIxs3brQ8vv3223qp25YtW+KqW21s3LhR9u/fX6P3nnvuudK3b9+6rVCY4uJi2bhxoxQXF5vbJk2aJLH+aQMgkyZNqtc6hSsrK5POnTtLdna2PP3007J69Wp59tlnJScnR84880wpKSmxlO3atau0bt1a/vnPf8qKFSvk2muvFafTKWvWrDHLrV27VhwOh/zlL3+RDz74QDp37izjx4+3fO68efOkc+fOUlZWFnddf/75Z+nZs6e4XC657bbb5J133pF169bJ66+/LqNGjRKHwyE7duyo/UmJ4Zprron4vae64WzE7xlUB66++mq89tprmDZtGnr06FFvn1NaWork5OR62388zj///Eb9/Hh07twZl1xySWNXo1ZEBGVlZUhOTj7tjyU9Pf20r+Nnn32G7777Ds8//zzGjx8PQO95S09Px+jRo/HJJ5/gv//7vwEAL7zwAnbt2oUNGzagd+/eAID+/fujR48euO+++7Bp0yYAwLJlyzBgwAD84Q9/AAAUFxdj6tSp5mfu3r0bs2bNwgcffACPxxN3XceOHYv/+7//w8cff4wrr7zS8tqoUaMwdepUZGZm1vxknOZOnTqFZs2aNXY16gW78RPcfffdh6ysLEyfPr3KsmVlZZgxYwY6dOhgds1NmjQpovuvffv2GDp0KN5++22cf/75SEpKwqxZs8wu09deew3Tp09Hq1atkJqaimHDhuGnn37C8ePH8fvf/x7Z2dnIzs7GzTffjBMnTlj2/fTTT+OKK65Ay5YtkZKSgm7duuHRRx+Fz+ersv7h3fj9+vWL2XUe2n1cWFiI2267Da1bt4bb7UaHDh0wa9Ys+P1+y/4LCgpwww03IC0tDRkZGRg5ciQKCwurrFd1rF+/HgMGDEBaWhqaNWuGPn36YNmyZRHldu3ahWuvvRaZmZlISkrCeeedh3/84x/m62vWrMGFF14IALj55pvN4za6r/Pz85Gamoovv/wSAwYMQEpKClq0aIHJkyfj1KlTls8yurafffZZnHPOOfB4POZnhXfjG5ePVq9ejdtvvx3Z2dnIysrCb37zGxQUFJjl2rdvjy+//BJr16416xZ+WSbU9ddfj3PPPdeybdiwYVAUBW+99Za5bdu2bVAUBe+//755HkK78fPz8/H000+bdTcee/bssez7lVdewTnnnINmzZqhR48e+OCDD2LWrbZcLhcAICMjw7L9jDPOAAAkJSWZ25YuXYqzzz7bDHoAcDqduOmmm7B582YcPHgQgP67nJKSYpZJTU1FWVmZ+fz222/HyJEj0b9//7jruXXrVnz44YcYP358RNAbLrzwQrRt29Z8XtXPKVDxd/T666/jgQceQF5eHtLT03HVVVfhm2++Mcv169cPy5Ytw969ey1/d4YjR47gjjvuwJlnngm3242OHTvigQcegNfrNctUdtkt/Gd55syZUBQF27Ztw3XXXYfMzEx06tQp7vOVcBq7a4FqxujG37JlizzxxBMCQD799FPz9fBufE3TZPDgweJ0OuVPf/qTrFixQubPny8pKSly/vnnW7r62rVrJ61atZKOHTvKiy++KKtXr5bNmzebXdXt2rWT/Px8+eijj+TZZ5+V1NRU6d+/vwwcOFCmTZsmK1askHnz5onD4ZA777zTUu+7775bFi5cKB999JGsWrVKHn/8ccnOzpabb77ZUi5aN367du1k3Lhx5vMvv/wyosv8qquuEofDIRs2bBARkUOHDkmbNm2kXbt28re//U0++eQT+Z//+R/xeDySn59v7uvUqVNyzjnnSEZGhjz55JPy8ccfy1133SVt27atVjf+G2+8IT6fz/IwrFmzRlwul/Ts2VPeeOMNeeedd2TQoEGiKIosXrzYLPf1119LWlqadOrUSV5++WVZtmyZ3HjjjQJA5s2bJyJ697XxM/DHP/7RPH6jy33cuHHidrulbdu2Mnv2bFmxYoXMnDlTnE6nDB061FJ3AHLmmWdK9+7d5bXXXpNVq1bJrl27zNceeughs6zxmR07dpQ777xTPv74Y3n++eclMzNT+vfvb5bbtm2bdOzYUc4//3yzbtu2bYt5/p599lkBIAUFBSIi4vP5JC0tTZKTk2XChAlmuXnz5onT6TS7vo3zvnr1ahER+f777+W6664TAJafC+PnG4C0b99eLrroInnzzTdl+fLl0q9fP3E6nfLDDz9U+ndcUz6fT3r27CnnnnuubN68WY4fPy5bt26V8847Ty644AIpLy83y+bm5sr1118fsY8PPvhAAMjHH38sIiKLFy+WlJQU2bBhg/z0008yYMAAGTJkiIiIvPrqq9KiRQv55ZdfqlXPOXPmCAD58MMP4yofz8+pSMXfUfv27eV3v/udLFu2TF5//XVp27atdO7cWfx+v4jov8+XXnqp5ObmWv7uRERKS0ule/fukpKSIvPnz5cVK1bIn/70J3E6nfLrX//a/KzKLruF/yw/9NBD5r9n06dPl5UrV8o777xTrXOWSBj2CSo07L1er3Ts2FF69eolmqaJSGTYf/TRRwJAHn30Uct+3njjDQEgzz33nLmtXbt24nA45JtvvrGUNX5phw0bZtk+ZcoUASB33XWXZfuIESOkefPmMY8hEAiIz+eTl19+WRwOhxw5csR8LZ6wD/fYY49FHMttt90mqampsnfvXkvZ+fPnCwD58ssvRURk4cKFAkDeffddS7kJEyZUK+yjPb777jsREbnkkkukZcuWcvz4cfN9fr/fvEZr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iKAH9C+UgUAAW7ZssWz/9ttvcfjwYbRu3drc9t///d/4+uuvzSl2gP6l7Z///Ccuvvhi8+c13Jw5c+B2uzFt2jQA+u8VAJw8eRKAfinB6/Wa26O54IILMGTIELzwwgvmZb9wn3/+ubkQULw/p9UR62dmwIABOHHiBN55552IzzJeB/RLMklJSfjiiy8s5d59991q18Vu2LK3mXnz5qFnz54oKiqyTGUaOHAgBg8ejOnTp6OkpASXXnopvvjiCzz00EM4//zzMWbMmHqv28CBA+F2u3HjjTfivvvuQ1lZGRYuXIijR4/WaH9DhgzBsWPH8NRTT+HLL7+0vNapUye0aNECDz/8MFauXIk+ffrgrrvuwtlnn42ysjLs2bMHy5cvx7PPPovWrVtj7NixePzxxzF27FjMnj0bnTt3xvLly/Hxxx/XxaEDAObOnYuBAweif//+mDZtGtxuN5555hns2rULr7/+uvll6KGHHjLHGjz44INo3rw5Xn31VSxbtgyPPvqoOYWrU6dOSE5OxquvvopzzjkHqampyMvLMwPB7Xbjf//3f3HixAlceOGF2LBhA/785z9jyJAhuOyyy+rsuGLp1q0bFi9ejDfeeAMdO3ZEUlISunXrFrN8y5Yt0bVrV6xYsQL9+/c35ztfddVVOHLkCI4cOYIFCxbE9bmA/rswZMgQOBwOdO/ePWoQN4Sbb74Zjz/+OH7729/ij3/8I84++2z8+OOPmDNnDlJSUjBx4kSz7C233IKnn34a119/PR555BG0bNkSzzzzDL755htzPEO4r7/+Go8++ihWr14Np1P/J/3ss89Gu3btcPvtt2PSpEl444034HQ6qwzgl19+GVdffTWGDBmCW265BUOGDEFmZiYOHTqE999/H6+//jq2bt2Ktm3bxv1zWh3dunXD22+/jYULF6Jnz55QVRW9evXC2LFj8fTTT2PcuHHYs2cPunXrhvXr12POnDn49a9/bV7aURQFN910E1588UV06tQJPXr0wObNm+vsS3tCa8zRgVRzoaPxw40ePVoARKygV1paKtOnT5d27dqJy+WSVq1aye233y5Hjx61lGvXrp1cc801Efs1RtW+9dZbcdXFGO36888/m9vef/996dGjhyQlJcmZZ54p9957r3z44YcRI6rjGY2PGKPfETYa9+eff5a77rpLOnToIC6XS5o3by49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1g25ublYunRp3R4cURPEsCeiCC1atMCLL76ImTNn4vPPP8eJEydw00034Y477qj0evxnn32GXr16RWxftWoVCgoKsG7dOixYsAAzZ87E0KFDkZmZiU2bNmHixImYOHEi9u/fb3nfRRddhM8++6zOj4+oqeE1eyKKadKkSfjkk09w4YUX4v/+7/+wZcsWJCUlRS177NgxZGZmYt26dZZu/Pz8fKxZswY//vgjVFVvX/zqV79Cy5YtsW7dOgBAIBBARkYGnn/+eYwaNcp879SpU7F9+3asXr26Ho+SyP7YsieimObPnw+/348333wTr776asygB4DS0lIAiFrm3HPPNYMeAHJyctCtWzfzucPhQFZWFoqKiizvS05OxqlTp2p7GERNHsOeiGL68ccfUVBQAE3TsHfv3krLZmVlQVGUqAPqXC6X5bmiKFG3aZpm2XbkyBG0aNGihrUnIgPDnoiiKi8vx+9+9zuMHDkSf/7znzF+/Hj89NNPMcu73W506dIFX331VZ3VYdeuXTj//PPrbH9ETRXDnoiieuCBB1BcXIy//vWvuO+++3DOOedg/Pjxlb5n8ODBWL9+fZ18/qlTp7B169ZaL9BDRAx7IopizZo1+Mtf/oJXXnkF6enpUFUVr7zyCtavX4+FCxfGfN+ECROwfPlyFBcX17oO7777Ltq2bVsnc/aJmjqOxieiOnXDDTfg/PPPx4wZM2q1n4suughTpkzB6NGj66hmRE0XW/ZEVKcee+wxpKam1mofRUVFuO6663DjjTfWUa2Imja27ImIiGyOLXsiIiKbY9gTERHZHMOeiIjI5hj2RERENsewJyIisjmGPRERkc0x7ImIiGyOYU9ERGRzDHsiIiKb+/8VINxqYtqy1QAAAABJRU5ErkJggg==" }, "metadata": {}, "output_type": "display_data" } ], "execution_count": 16 }, { "cell_type": "code", "id": "aa10334b", "metadata": { "ExecuteTime": { "end_time": "2025-08-31T01:22:32.980551Z", "start_time": "2025-08-31T01:22:32.976518Z" } }, "source": [ "\n", "# --- (Optional) Export to NetCDF --------------------------------------------\n", "# Save the accumulated climatology and the per-timestep field.\n", "export_nc = False # set True to write a file\n", "\n", "if export_nc:\n", " ds = xr.Dataset({\n", " \"fclim_2d\": fclim, # accumulated climatology\n", " \"f_2d\": ffp.f_2d # per-timestep field [time, x, y]\n", " })\n", " out_nc = Path(\"ffp_demo_output.nc\")\n", " ds.to_netcdf(out_nc)\n", " print(\"Wrote\", out_nc.resolve())\n", "else:\n", " print(\"Set export_nc=True above to write a NetCDF file.\")\n" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Set export_nc=True above to write a NetCDF file.\n" ] } ], "execution_count": 17 }, { "cell_type": "markdown", "id": "e8277ea0", "metadata": {}, "source": [ "\n", "## Next steps\n", "\n", "- Increase `nx`, `ny` or shrink `dx`, `dy` for a higher-resolution grid (at the cost of compute time).\n", "- Use your entire dataset by setting the demo window to `None` or expanding it.\n", "- Try additional contours (e.g., `rs=[0.5, 0.8, 0.9, 0.95]`) and export polygons if needed.\n", "- Integrate with your GIS workflow by converting the contour(s) to shapely and saving a GeoPackage.\n", "- Explore weighting the climatology by flux magnitude before normalizing, if that suits your analysis goals.\n" ] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 5 }