diff --git a/examples/pangeo-vorticity.ipynb b/examples/pangeo-vorticity.ipynb
new file mode 100644
index 00000000..bd776418
--- /dev/null
+++ b/examples/pangeo-vorticity.ipynb
@@ -0,0 +1,1318 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "f5a954d5",
+ "metadata": {},
+ "source": [
+ "# Pangeo Vorticity Workload\n",
+ "\n",
+ "This is a notebook for exploring a simplified version of the example in https://github.com/pangeo-data/distributed-array-examples/issues/1.\n",
+ "\n",
+ "In particular, it is the code from https://github.com/coiled/coiled-runtime/issues/174"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "8d745a7b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import cubed.array_api as xp\n",
+ "import cubed.random\n",
+ "from cubed.extensions.tqdm import TqdmProgressBar"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "1bff01e3",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a = cubed.random.random((1000, 900, 800), chunks=100)\n",
+ "b = cubed.random.random((1000, 900, 800), chunks=100)\n",
+ "x = cubed.random.random((900, 800), chunks=100)\n",
+ "y = cubed.random.random((900, 800), chunks=100)\n",
+ "\n",
+ "result = a[1:] * x + b[1:] * y\n",
+ "result = xp.mean(result)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "f8ca9389",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ ""
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "result.visualize(\"pangeo-vorticity\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "0b9b8905",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.00949406623840332,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-019",
+ "rate": null,
+ "total": 1,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "8f268522a58240a180abd2d8f534e021",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-019: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.010219097137451172,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-003",
+ "rate": null,
+ "total": 1,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "dfb4ef680fca4d6d9bd91d72a1e80620",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-003: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.009206056594848633,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-011",
+ "rate": null,
+ "total": 1,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "81ae94a175984e9fb1131e02107cc197",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-011: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.010650157928466797,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-024",
+ "rate": null,
+ "total": 1,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "a743802a0fd341c3a33307fc4f2ea5e7",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-024: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.010951757431030273,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-007",
+ "rate": null,
+ "total": 1,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "e369e87fa8194412a86a3304aa6e27fe",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-007: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.010428190231323242,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-015",
+ "rate": null,
+ "total": 1,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "43d44d6778e742358d64e6b1b162e889",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-015: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.009390830993652344,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-004",
+ "rate": null,
+ "total": 720,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "3c9742ffe47a4cbaa3b88041e0191bb8",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-004: 0%| | 0/720 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.010357141494750977,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-012",
+ "rate": null,
+ "total": 72,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "775f7d5962164c298af839a9ee2bce68",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-012: 0%| | 0/72 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.009840726852416992,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-008",
+ "rate": null,
+ "total": 720,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "6e4a1a3767d54f5aaad15f14c1ac493a",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-008: 0%| | 0/720 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.009896993637084961,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-016",
+ "rate": null,
+ "total": 72,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "606eaece7de04f90b35c041b66c9d8f5",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-016: 0%| | 0/72 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.009586095809936523,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-020",
+ "rate": null,
+ "total": 720,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "943eac73a2f043cdb773ec06aa79bc50",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-020: 0%| | 0/720 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.009861230850219727,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-025",
+ "rate": null,
+ "total": 720,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "80e06dc9dc924569ae7306b75a240afe",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-025: 0%| | 0/720 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.009711980819702148,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-021",
+ "rate": null,
+ "total": 720,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "42d14a49d59f47e595938beb30573377",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-021: 0%| | 0/720 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.009489059448242188,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-026",
+ "rate": null,
+ "total": 720,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "2677cd1065b94159a214e5fe3e91f43c",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-026: 0%| | 0/720 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.009962081909179688,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-028",
+ "rate": null,
+ "total": 720,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "c4fa81e309a94caaac28c78c091c762c",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-028: 0%| | 0/720 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.015202999114990234,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-029",
+ "rate": null,
+ "total": 1,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "4d5c63356bfc422d9b9cb1722f67a611",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-029: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/json": {
+ "ascii": false,
+ "bar_format": null,
+ "colour": null,
+ "elapsed": 0.009958744049072266,
+ "initial": 0,
+ "n": 0,
+ "ncols": null,
+ "nrows": 47,
+ "postfix": null,
+ "prefix": "array-032",
+ "rate": null,
+ "total": 1,
+ "unit": "it",
+ "unit_divisor": 1000,
+ "unit_scale": false
+ },
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "2e84719265a749f28a5c12b3f5822d87",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "array-032: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "array(0.49998837)"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "progress = TqdmProgressBar()\n",
+ "result.compute(callbacks=[progress])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "ce1b6bc5",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.8.13"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/examples/pangeo-vorticity.svg b/examples/pangeo-vorticity.svg
new file mode 100644
index 00000000..78d9c707
--- /dev/null
+++ b/examples/pangeo-vorticity.svg
@@ -0,0 +1,472 @@
+
+
+
+
+