{ "cells": [ { "cell_type": "markdown", "id": "b76675cd", "metadata": {}, "source": [ "# RAPID 26.5ºN\n", "This notebook demonstrates creating sections at 26.5ºN — the location of the RAPID-MOCHA array." ] }, { "cell_type": "code", "execution_count": null, "id": "c8360f55", "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", "import matplotlib.pyplot as plt\n", "import cartopy.crs as ccrs\n", "import iconspy as ispy\n", "from iconspy.tests.conftest import get_ds_tgrid_lr" ] }, { "cell_type": "markdown", "id": "ee340bfe", "metadata": {}, "source": [ "## Grid setup" ] }, { "cell_type": "code", "execution_count": 3, "id": "1681fe7a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 7MB\n",
       "Dimensions:                 (cell: 15105, vertex: 8067, edge: 23207, nc_e: 2,\n",
       "                             nv_c: 3, ne_c: 3, nv_v: 6, ne_v: 6, nv_e: 2,\n",
       "                             nc_v: 6, nc_c: 3, cart: 3)\n",
       "Coordinates:\n",
       "  * cell                    (cell) int32 60kB 0 1 2 3 ... 15102 15103 15104\n",
       "    clon                    (cell) float64 121kB 69.12 73.0 ... 74.57 76.01\n",
       "    clat                    (cell) float64 121kB 72.74 74.52 ... -46.83 -44.85\n",
       "  * vertex                  (vertex) int32 32kB 0 1 2 3 ... 8063 8064 8065 8066\n",
       "    vlon                    (vertex) float64 65kB 73.0 69.39 ... 80.59 77.56\n",
       "    vlat                    (vertex) float64 65kB 73.27 71.49 ... -45.35 -45.49\n",
       "  * edge                    (edge) int32 93kB 0 1 2 3 ... 23204 23205 23206\n",
       "    elon                    (edge) float64 186kB 71.11 76.98 ... 75.34 76.04\n",
       "    elat                    (edge) float64 186kB 72.39 73.25 ... -46.52 -45.54\n",
       "Dimensions without coordinates: nc_e, nv_c, ne_c, nv_v, ne_v, nv_e, nc_v, nc_c,\n",
       "                                cart\n",
       "Data variables: (12/40)\n",
       "    grid_sphere_radius      float64 8B 6.371e+06\n",
       "    grav                    float64 8B 9.807\n",
       "    earth_angular_velocity  float64 8B 7.292e-05\n",
       "    rho0                    float64 8B 1.025e+03\n",
       "    rhoi                    float64 8B 917.0\n",
       "    rhos                    float64 8B 300.0\n",
       "    ...                      ...\n",
       "    edge_cart_vec           (edge, cart) float64 557kB 0.09797 ... -0.7137\n",
       "    dual_edge_cart_vec      (edge, cart) float64 557kB 0.09801 ... -0.7136\n",
       "    edge_prim_norm          (edge, cart) float64 557kB 0.6463 -0.7466 ... 0.7001\n",
       "    fc                      (cell) float64 121kB 0.0001393 ... -0.0001029\n",
       "    fe                      (edge) float64 186kB 0.000139 ... -0.0001041\n",
       "    fv                      (vertex) float64 65kB 0.0001397 ... -0.000104\n",
       "Attributes:\n",
       "    converted_tgrid:      True\n",
       "    boundary_BallTree:    <iconspy.balltree.IspyBoundaryBallTree object at 0x...\n",
       "    wet_BallTree:         <iconspy.balltree.IspyWetBallTree object at 0x7ffb5...\n",
       "    uuidOfHGrid:          5bd948e8-ac1a-11ea-a6b1-d317264fdca9\n",
       "    IsD_compatible_flag:  True
" ], "text/plain": [ " Size: 7MB\n", "Dimensions: (cell: 15105, vertex: 8067, edge: 23207, nc_e: 2,\n", " nv_c: 3, ne_c: 3, nv_v: 6, ne_v: 6, nv_e: 2,\n", " nc_v: 6, nc_c: 3, cart: 3)\n", "Coordinates:\n", " * cell (cell) int32 60kB 0 1 2 3 ... 15102 15103 15104\n", " clon (cell) float64 121kB 69.12 73.0 ... 74.57 76.01\n", " clat (cell) float64 121kB 72.74 74.52 ... -46.83 -44.85\n", " * vertex (vertex) int32 32kB 0 1 2 3 ... 8063 8064 8065 8066\n", " vlon (vertex) float64 65kB 73.0 69.39 ... 80.59 77.56\n", " vlat (vertex) float64 65kB 73.27 71.49 ... -45.35 -45.49\n", " * edge (edge) int32 93kB 0 1 2 3 ... 23204 23205 23206\n", " elon (edge) float64 186kB 71.11 76.98 ... 75.34 76.04\n", " elat (edge) float64 186kB 72.39 73.25 ... -46.52 -45.54\n", "Dimensions without coordinates: nc_e, nv_c, ne_c, nv_v, ne_v, nv_e, nc_v, nc_c,\n", " cart\n", "Data variables: (12/40)\n", " grid_sphere_radius float64 8B 6.371e+06\n", " grav float64 8B 9.807\n", " earth_angular_velocity float64 8B 7.292e-05\n", " rho0 float64 8B 1.025e+03\n", " rhoi float64 8B 917.0\n", " rhos float64 8B 300.0\n", " ... ...\n", " edge_cart_vec (edge, cart) float64 557kB 0.09797 ... -0.7137\n", " dual_edge_cart_vec (edge, cart) float64 557kB 0.09801 ... -0.7136\n", " edge_prim_norm (edge, cart) float64 557kB 0.6463 -0.7466 ... 0.7001\n", " fc (cell) float64 121kB 0.0001393 ... -0.0001029\n", " fe (edge) float64 186kB 0.000139 ... -0.0001041\n", " fv (vertex) float64 65kB 0.0001397 ... -0.000104\n", "Attributes:\n", " converted_tgrid: True\n", " boundary_BallTree: " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Define the target stations\n", "rapid_target_west = ispy.TargetStation(\n", " name=\"RAPID West\",\n", " lon=-80,\n", " lat=26.5,\n", " boundary=True\n", ")\n", "\n", "rapid_target_gulf = ispy.TargetStation(\n", " name=\"RAPID Gulf\",\n", " lon= -76.25,\n", " lat=26.5,\n", " boundary=False\n", ")\n", "\n", "rapid_target_east = ispy.TargetStation(\n", " name=\"RAPID East\",\n", " lon=-14,\n", " lat=26.5,\n", " boundary=True\n", ")\n", "\n", "# Find the closest model stations to our target stations\n", "rapid_targets = [rapid_target_west, rapid_target_gulf, rapid_target_east]\n", "rapid_model_stations = [target.to_model_station(ds_IsD) for target in rapid_targets]\n", "\n", "# Check the target and model sections appear roughly where we expect them too\n", "fig, ax = plt.subplots(subplot_kw={\"projection\": ccrs.PlateCarree()})\n", "for station in rapid_model_stations:\n", " station.plot(ax=ax)\n", "ax.set_extent([-90, -10, 20, 30])" ] }, { "cell_type": "code", "execution_count": 7, "id": "8e930090", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Construct sections from our model stations\n", "\n", "florida_current = ispy.Section(\n", " name=\"Florida Current\",\n", " model_station_a=rapid_model_stations[0],\n", " model_station_b=rapid_model_stations[1],\n", " ds_IsD=ds_IsD,\n", " section_type=\"isolat\",\n", ")\n", "\n", "interior = ispy.Section(\n", " name=\"Interior 26.5N\",\n", " model_station_a=rapid_model_stations[1],\n", " model_station_b=rapid_model_stations[2],\n", " ds_IsD=ds_IsD,\n", " section_type=\"isolat\",\n", ")\n", "\n", "# Visualise the section\n", "fig, ax = plt.subplots(subplot_kw={\"projection\": ccrs.PlateCarree()})\n", "florida_current.plot(ax=ax)\n", "interior.plot(ax=ax)\n", "ax.set_extent([-85, -10, 20, 30])" ] }, { "cell_type": "markdown", "id": "1fd60fab", "metadata": {}, "source": [ "Convert the section objects into xarray datasets we can reuse later" ] }, { "cell_type": "code", "execution_count": 11, "id": "bc985418", "metadata": {}, "outputs": [], "source": [ "attrs = {\n", " \"Created in\": Path(f\"{ispy.__path__[0]}/../examples/rapid-26N.ipynb\").resolve(),\n", "}\n", "\n", "ds_florida_current = florida_current.to_ispy_section(attrs=attrs)\n", "ds_interior = interior.to_ispy_section(attrs=attrs)" ] }, { "cell_type": "code", "execution_count": 12, "id": "985dfe19", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 220B\n",
       "Dimensions:           (step_in_path: 3, step_in_path_v: 4)\n",
       "Coordinates:\n",
       "  * step_in_path      (step_in_path) int64 24B 0 1 2\n",
       "    elon              (step_in_path) float64 24B -79.58 -78.44 -77.3\n",
       "    elat              (step_in_path) float64 24B 26.37 26.44 26.5\n",
       "  * step_in_path_v    (step_in_path_v) int64 32B 0 1 2 3\n",
       "    vlon              (step_in_path_v) float64 32B -80.21 -78.96 -77.92 -76.69\n",
       "    vlat              (step_in_path_v) float64 32B 27.33 25.41 27.47 25.52\n",
       "Data variables:\n",
       "    edge_path         (step_in_path) int32 12B 8094 8098 8108\n",
       "    vertex_path       (step_in_path_v) int32 16B 2947 2946 2950 2953\n",
       "    path_orientation  (step_in_path) float64 24B 1.0 -1.0 1.0\n",
       "Attributes:\n",
       "    date:          2026-07-14 13:05:21\n",
       "    ispy version:  0.2.0\n",
       "    uuidOfHGrid:   5bd948e8-ac1a-11ea-a6b1-d317264fdca9\n",
       "    section name:  Florida Current\n",
       "    Created by:    m301014\n",
       "    Created in:    /work/mh0256/m301014/iconspy/examples/rapid-26N.ipynb
" ], "text/plain": [ " Size: 220B\n", "Dimensions: (step_in_path: 3, step_in_path_v: 4)\n", "Coordinates:\n", " * step_in_path (step_in_path) int64 24B 0 1 2\n", " elon (step_in_path) float64 24B -79.58 -78.44 -77.3\n", " elat (step_in_path) float64 24B 26.37 26.44 26.5\n", " * step_in_path_v (step_in_path_v) int64 32B 0 1 2 3\n", " vlon (step_in_path_v) float64 32B -80.21 -78.96 -77.92 -76.69\n", " vlat (step_in_path_v) float64 32B 27.33 25.41 27.47 25.52\n", "Data variables:\n", " edge_path (step_in_path) int32 12B 8094 8098 8108\n", " vertex_path (step_in_path_v) int32 16B 2947 2946 2950 2953\n", " path_orientation (step_in_path) float64 24B 1.0 -1.0 1.0\n", "Attributes:\n", " date: 2026-07-14 13:05:21\n", " ispy version: 0.2.0\n", " uuidOfHGrid: 5bd948e8-ac1a-11ea-a6b1-d317264fdca9\n", " section name: Florida Current\n", " Created by: m301014\n", " Created in: /work/mh0256/m301014/iconspy/examples/rapid-26N.ipynb" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds_florida_current" ] }, { "cell_type": "code", "execution_count": 13, "id": "5ed99a14", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 3kB\n",
       "Dimensions:           (step_in_path: 41, step_in_path_v: 42)\n",
       "Coordinates:\n",
       "  * step_in_path      (step_in_path) int64 328B 0 1 2 3 4 5 ... 36 37 38 39 40\n",
       "    elon              (step_in_path) float64 328B -76.16 -75.01 ... -16.15\n",
       "    elat              (step_in_path) float64 328B 26.55 26.58 ... 26.24 26.55\n",
       "  * step_in_path_v    (step_in_path_v) int64 336B 0 1 2 3 4 5 ... 37 38 39 40 41\n",
       "    vlon              (step_in_path_v) float64 336B -76.69 -75.61 ... -15.03\n",
       "    vlat              (step_in_path_v) float64 336B 25.52 27.57 ... 26.4 26.69\n",
       "Data variables:\n",
       "    edge_path         (step_in_path) int32 164B 8150 8152 7600 ... 8486 8485\n",
       "    vertex_path       (step_in_path_v) int32 168B 2953 2961 2777 ... 3091 3093\n",
       "    path_orientation  (step_in_path) float64 328B 1.0 1.0 1.0 ... -1.0 1.0 1.0\n",
       "Attributes:\n",
       "    date:          2026-07-14 13:05:21\n",
       "    ispy version:  0.2.0\n",
       "    uuidOfHGrid:   5bd948e8-ac1a-11ea-a6b1-d317264fdca9\n",
       "    section name:  Interior 26.5N\n",
       "    Created by:    m301014\n",
       "    Created in:    /work/mh0256/m301014/iconspy/examples/rapid-26N.ipynb
" ], "text/plain": [ " Size: 3kB\n", "Dimensions: (step_in_path: 41, step_in_path_v: 42)\n", "Coordinates:\n", " * step_in_path (step_in_path) int64 328B 0 1 2 3 4 5 ... 36 37 38 39 40\n", " elon (step_in_path) float64 328B -76.16 -75.01 ... -16.15\n", " elat (step_in_path) float64 328B 26.55 26.58 ... 26.24 26.55\n", " * step_in_path_v (step_in_path_v) int64 336B 0 1 2 3 4 5 ... 37 38 39 40 41\n", " vlon (step_in_path_v) float64 336B -76.69 -75.61 ... -15.03\n", " vlat (step_in_path_v) float64 336B 25.52 27.57 ... 26.4 26.69\n", "Data variables:\n", " edge_path (step_in_path) int32 164B 8150 8152 7600 ... 8486 8485\n", " vertex_path (step_in_path_v) int32 168B 2953 2961 2777 ... 3091 3093\n", " path_orientation (step_in_path) float64 328B 1.0 1.0 1.0 ... -1.0 1.0 1.0\n", "Attributes:\n", " date: 2026-07-14 13:05:21\n", " ispy version: 0.2.0\n", " uuidOfHGrid: 5bd948e8-ac1a-11ea-a6b1-d317264fdca9\n", " section name: Interior 26.5N\n", " Created by: m301014\n", " Created in: /work/mh0256/m301014/iconspy/examples/rapid-26N.ipynb" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds_interior" ] } ], "metadata": { "kernelspec": { "display_name": "ispy_py311", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.14" } }, "nbformat": 4, "nbformat_minor": 5 }