Repository: UXARRAY/uxarray

Issue:
Area adjustment
### Proposed new feature or change:

 In the current implementation we assume that spherical triangles are composed of great circle arcs. However, if one edge of the triangle is a line of constant latitude then an area adjustment is necessary to account for the slight differences in face area induced by the difference

Hints from issue comments:

Solution patch:
diff --git a/docs/user-guide/area_calc.ipynb b/docs/user-guide/area_calc.ipynb
index 757b7e9bc..8b1733658 100644
--- a/docs/user-guide/area_calc.ipynb
+++ b/docs/user-guide/area_calc.ipynb
@@ -19,25 +19,194 @@
     "Computing and working with face areas is important for the analysis of unstructured grids, with many algorithms and workflows requiring them. This section will showcase the different face area calculation options provided with UXarray:\n",
     "\n",
     "1. Calculate Total Face Area\n",
-    "2. Options for `Grid.calculate_total_face_area` Function\n",
+    "2. Quadrature and Order Options for `Grid.calculate_total_face_area` Function\n",
     "3. Getting Area of Individual Faces\n",
     "4. Calculate Area of a Single Triangle in Cartesian Coordinates\n",
-    "5. Calculate Area from Multiple Faces in Spherical Coordinates"
+    "5. Calculate Area from Multiple Faces in Spherical Coordinates\n",
+    "6. Show Face Area Correction Formulae When an Edge is the Line of Constant Lattitude\n",
+    "7. Demonstrate the Need for Area Correction During Zonal Averaging Calculations Etc."
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 1,
    "metadata": {
     "collapsed": false,
     "jupyter": {
      "outputs_hidden": false
     }
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<script type=\"esms-options\">{\"shimMode\": true}</script><style>*[data-root-id],\n",
+       "*[data-root-id] > * {\n",
+       "  box-sizing: border-box;\n",
+       "  font-family: var(--jp-ui-font-family);\n",
+       "  font-size: var(--jp-ui-font-size1);\n",
+       "  color: var(--vscode-editor-foreground, var(--jp-ui-font-color1));\n",
+       "}\n",
+       "\n",
+       "/* Override VSCode background color */\n",
+       ".cell-output-ipywidget-background:has(\n",
+       "    > .cell-output-ipywidget-background > .lm-Widget > *[data-root-id]\n",
+       "  ),\n",
+       ".cell-output-ipywidget-background:has(> .lm-Widget > *[data-root-id]) {\n",
+       "  background-color: transparent !important;\n",
+       "}\n",
+       "</style>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/javascript": "(function(root) {\n  function now() {\n    return new Date();\n  }\n\n  const force = true;\n  const py_version = '3.5.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n  const reloading = false;\n  const Bokeh = root.Bokeh;\n\n  // Set a timeout for this load but only if we are not already initializing\n  if (typeof (root._bokeh_timeout) === \"undefined\" || (force || !root._bokeh_is_initializing)) {\n    root._bokeh_timeout = Date.now() + 5000;\n    root._bokeh_failed_load = false;\n  }\n\n  function run_callbacks() {\n    try {\n      root._bokeh_onload_callbacks.forEach(function(callback) {\n        if (callback != null)\n          callback();\n      });\n    } finally {\n      delete root._bokeh_onload_callbacks;\n    }\n    console.debug(\"Bokeh: all callbacks have finished\");\n  }\n\n  function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n    if (css_urls == null) css_urls = [];\n    if (js_urls == null) js_urls = [];\n    if (js_modules == null) js_modules = [];\n    if (js_exports == null) js_exports = {};\n\n    root._bokeh_onload_callbacks.push(callback);\n\n    if (root._bokeh_is_loading > 0) {\n      // Don't load bokeh if it is still initializing\n      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n      return null;\n    } else if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n      // There is nothing to load\n      run_callbacks();\n      return null;\n    }\n\n    function on_load() {\n      root._bokeh_is_loading--;\n      if (root._bokeh_is_loading === 0) {\n        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n        run_callbacks()\n      }\n    }\n    window._bokeh_on_load = on_load\n\n    function on_error(e) {\n      const src_el = e.srcElement\n      console.error(\"failed to load \" + (src_el.href || src_el.src));\n    }\n\n    const skip = [];\n    if (window.requirejs) {\n      window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n      root._bokeh_is_loading = css_urls.length + 0;\n    } else {\n      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n    }\n\n    const existing_stylesheets = []\n    const links = document.getElementsByTagName('link')\n    for (let i = 0; i < links.length; i++) {\n      const link = links[i]\n      if (link.href != null) {\n        existing_stylesheets.push(link.href)\n      }\n    }\n    for (let i = 0; i < css_urls.length; i++) {\n      const url = css_urls[i];\n      const escaped = encodeURI(url)\n      if (existing_stylesheets.indexOf(escaped) !== -1) {\n        on_load()\n        continue;\n      }\n      const element = document.createElement(\"link\");\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.rel = \"stylesheet\";\n      element.type = \"text/css\";\n      element.href = url;\n      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n      document.body.appendChild(element);\n    }    var existing_scripts = []\n    const scripts = document.getElementsByTagName('script')\n    for (let i = 0; i < scripts.length; i++) {\n      var script = scripts[i]\n      if (script.src != null) {\n        existing_scripts.push(script.src)\n      }\n    }\n    for (let i = 0; i < js_urls.length; i++) {\n      const url = js_urls[i];\n      const escaped = encodeURI(url)\n      if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n        if (!window.requirejs) {\n          on_load();\n        }\n        continue;\n      }\n      const element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (let i = 0; i < js_modules.length; i++) {\n      const url = js_modules[i];\n      const escaped = encodeURI(url)\n      if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n        if (!window.requirejs) {\n          on_load();\n        }\n        continue;\n      }\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (const name in js_exports) {\n      const url = js_exports[name];\n      const escaped = encodeURI(url)\n      if (skip.indexOf(escaped) >= 0 || root[name] != null) {\n        if (!window.requirejs) {\n          on_load();\n        }\n        continue;\n      }\n      var element = document.createElement('script');\n      element.onerror = on_error;\n      element.async = false;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      element.textContent = `\n      import ${name} from \"${url}\"\n      window.${name} = ${name}\n      window._bokeh_on_load()\n      `\n      document.head.appendChild(element);\n    }\n    if (!js_urls.length && !js_modules.length) {\n      on_load()\n    }\n  };\n\n  function inject_raw_css(css) {\n    const element = document.createElement(\"style\");\n    element.appendChild(document.createTextNode(css));\n    document.body.appendChild(element);\n  }\n\n  const js_urls = [\"https://cdn.holoviz.org/panel/1.5.4/dist/bundled/reactiveesm/es-module-shims@^1.10.0/dist/es-module-shims.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.5.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.5.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.5.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.5.2.min.js\", \"https://cdn.holoviz.org/panel/1.5.4/dist/panel.min.js\"];\n  const js_modules = [];\n  const js_exports = {};\n  const css_urls = [];\n  const inline_js = [    function(Bokeh) {\n      Bokeh.set_log_level(\"info\");\n    },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n  ];\n\n  function run_inline_js() {\n    if ((root.Bokeh !== undefined) || (force === true)) {\n      for (let i = 0; i < inline_js.length; i++) {\n        try {\n          inline_js[i].call(root, root.Bokeh);\n        } catch(e) {\n          if (!reloading) {\n            throw e;\n          }\n        }\n      }\n      // Cache old bokeh versions\n      if (Bokeh != undefined && !reloading) {\n        var NewBokeh = root.Bokeh;\n        if (Bokeh.versions === undefined) {\n          Bokeh.versions = new Map();\n        }\n        if (NewBokeh.version !== Bokeh.version) {\n          Bokeh.versions.set(NewBokeh.version, NewBokeh)\n        }\n        root.Bokeh = Bokeh;\n      }\n    } else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(run_inline_js, 100);\n    } else if (!root._bokeh_failed_load) {\n      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n      root._bokeh_failed_load = true;\n    }\n    root._bokeh_is_initializing = false\n  }\n\n  function load_or_wait() {\n    // Implement a backoff loop that tries to ensure we do not load multiple\n    // versions of Bokeh and its dependencies at the same time.\n    // In recent versions we use the root._bokeh_is_initializing flag\n    // to determine whether there is an ongoing attempt to initialize\n    // bokeh, however for backward compatibility we also try to ensure\n    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n    // before older versions are fully initialized.\n    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n      // If the timeout and bokeh was not successfully loaded we reset\n      // everything and try loading again\n      root._bokeh_timeout = Date.now() + 5000;\n      root._bokeh_is_initializing = false;\n      root._bokeh_onload_callbacks = undefined;\n      root._bokeh_is_loading = 0\n      console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n      load_or_wait();\n    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n      setTimeout(load_or_wait, 100);\n    } else {\n      root._bokeh_is_initializing = true\n      root._bokeh_onload_callbacks = []\n      const bokeh_loaded = root.Bokeh != null && (root.Bokeh.version === py_version || (root.Bokeh.versions !== undefined && root.Bokeh.versions.has(py_version)));\n      if (!reloading && !bokeh_loaded) {\n        if (root.Bokeh) {\n          root.Bokeh = undefined;\n        }\n        console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n      }\n      load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n        console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n        run_inline_js();\n      });\n    }\n  }\n  // Give older versions of the autoload script a head-start to ensure\n  // they initialize before we start loading newer version.\n  setTimeout(load_or_wait, 100)\n}(window));",
+      "application/vnd.holoviews_load.v0+json": ""
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/javascript": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n    function JupyterCommManager() {\n    }\n\n    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        comm_manager.register_target(comm_id, function(comm) {\n          comm.on_msg(msg_handler);\n        });\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n          comm.onMsg = msg_handler;\n        });\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n          var messages = comm.messages[Symbol.asyncIterator]();\n          function processIteratorResult(result) {\n            var message = result.value;\n            console.log(message)\n            var content = {data: message.data, comm_id};\n            var buffers = []\n            for (var buffer of message.buffers || []) {\n              buffers.push(new DataView(buffer))\n            }\n            var metadata = message.metadata || {};\n            var msg = {content, buffers, metadata}\n            msg_handler(msg);\n            return messages.next().then(processIteratorResult);\n          }\n          return messages.next().then(processIteratorResult);\n        })\n      }\n    }\n\n    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n      if (comm_id in window.PyViz.comms) {\n        return window.PyViz.comms[comm_id];\n      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n        if (msg_handler) {\n          comm.on_msg(msg_handler);\n        }\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n        comm.open();\n        if (msg_handler) {\n          comm.onMsg = msg_handler;\n        }\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        var comm_promise = google.colab.kernel.comms.open(comm_id)\n        comm_promise.then((comm) => {\n          window.PyViz.comms[comm_id] = comm;\n          if (msg_handler) {\n            var messages = comm.messages[Symbol.asyncIterator]();\n            function processIteratorResult(result) {\n              var message = result.value;\n              var content = {data: message.data};\n              var metadata = message.metadata || {comm_id};\n              var msg = {content, metadata}\n              msg_handler(msg);\n              return messages.next().then(processIteratorResult);\n            }\n            return messages.next().then(processIteratorResult);\n          }\n        }) \n        var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n          return comm_promise.then((comm) => {\n            comm.send(data, metadata, buffers, disposeOnDone);\n          });\n        };\n        var comm = {\n          send: sendClosure\n        };\n      }\n      window.PyViz.comms[comm_id] = comm;\n      return comm;\n    }\n    window.PyViz.comm_manager = new JupyterCommManager();\n    \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n  var div = document.createElement(\"div\");\n  var script = document.createElement(\"script\");\n  node.appendChild(div);\n  node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n  var output_area = handle.output_area;\n  var output = handle.output;\n  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n    return\n  }\n  var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n  var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n  if (id !== undefined) {\n    var nchildren = toinsert.length;\n    var html_node = toinsert[nchildren-1].children[0];\n    html_node.innerHTML = output.data[HTML_MIME_TYPE];\n    var scripts = [];\n    var nodelist = html_node.querySelectorAll(\"script\");\n    for (var i in nodelist) {\n      if (nodelist.hasOwnProperty(i)) {\n        scripts.push(nodelist[i])\n      }\n    }\n\n    scripts.forEach( function (oldScript) {\n      var newScript = document.createElement(\"script\");\n      var attrs = [];\n      var nodemap = oldScript.attributes;\n      for (var j in nodemap) {\n        if (nodemap.hasOwnProperty(j)) {\n          attrs.push(nodemap[j])\n        }\n      }\n      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n      newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n      oldScript.parentNode.replaceChild(newScript, oldScript);\n    });\n    if (JS_MIME_TYPE in output.data) {\n      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n    }\n    output_area._hv_plot_id = id;\n    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n      window.PyViz.plot_index[id] = Bokeh.index[id];\n    } else {\n      window.PyViz.plot_index[id] = null;\n    }\n  } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n    var bk_div = document.createElement(\"div\");\n    bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n    var script_attrs = bk_div.children[0].attributes;\n    for (var i = 0; i < script_attrs.length; i++) {\n      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n    }\n    // store reference to server id on output_area\n    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n  }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n  var id = handle.cell.output_area._hv_plot_id;\n  var server_id = handle.cell.output_area._bokeh_server_id;\n  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n  var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n  if (server_id !== null) {\n    comm.send({event_type: 'server_delete', 'id': server_id});\n    return;\n  } else if (comm !== null) {\n    comm.send({event_type: 'delete', 'id': id});\n  }\n  delete PyViz.plot_index[id];\n  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n    var doc = window.Bokeh.index[id].model.document\n    doc.clear();\n    const i = window.Bokeh.documents.indexOf(doc);\n    if (i > -1) {\n      window.Bokeh.documents.splice(i, 1);\n    }\n  }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n  delete PyViz.comms[\"hv-extension-comm\"];\n  window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n  handle_clear_output(event, {cell: {output_area: handle.output_area}})\n  handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n  function append_mime(data, metadata, element) {\n    // create a DOM node to render to\n    var toinsert = this.create_output_subarea(\n    metadata,\n    CLASS_NAME,\n    EXEC_MIME_TYPE\n    );\n    this.keyboard_manager.register_events(toinsert);\n    // Render to node\n    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n    render(props, toinsert[0]);\n    element.append(toinsert);\n    return toinsert\n  }\n\n  events.on('output_added.OutputArea', handle_add_output);\n  events.on('output_updated.OutputArea', handle_update_output);\n  events.on('clear_output.CodeCell', handle_clear_output);\n  events.on('delete.Cell', handle_clear_output);\n  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n    safe: true,\n    index: 0\n  });\n}\n\nif (window.Jupyter !== undefined) {\n  try {\n    var events = require('base/js/events');\n    var OutputArea = require('notebook/js/outputarea').OutputArea;\n    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n      register_renderer(events, OutputArea);\n    }\n  } catch(err) {\n  }\n}\n",
+      "application/vnd.holoviews_load.v0+json": ""
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.holoviews_exec.v0+json": "",
+      "text/html": [
+       "<div id='754de43d-5472-4d60-a6e2-e4970ea4f8f3'>\n",
+       "  <div id=\"d81b32d2-bc3a-444f-b29d-0142b6d1bca5\" data-root-id=\"754de43d-5472-4d60-a6e2-e4970ea4f8f3\" style=\"display: contents;\"></div>\n",
+       "</div>\n",
+       "<script type=\"application/javascript\">(function(root) {\n",
+       "  var docs_json = {\"cfc90d42-5e79-448a-a310-687496d1e03f\":{\"version\":\"3.5.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"panel.models.browser.BrowserInfo\",\"id\":\"754de43d-5472-4d60-a6e2-e4970ea4f8f3\"},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"979ad0f0-8b5a-469d-8fbc-3bfa9cd5f2b6\",\"attributes\":{\"plot_id\":\"754de43d-5472-4d60-a6e2-e4970ea4f8f3\",\"comm_id\":\"8761858f91cf4c8cbc5559e75d720665\",\"client_comm_id\":\"3decdb247a5d48c6b1b82aae2678a9e1\"}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"gap\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"TemplateEditor1\",\"properties\":[{\"name\":\"layout\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"ReactiveESM1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"JSComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"ReactComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"AnyWidgetComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"request_value1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"_synced\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_request_sync\",\"kind\":\"Any\",\"default\":0}]}]}};\n",
+       "  var render_items = [{\"docid\":\"cfc90d42-5e79-448a-a310-687496d1e03f\",\"roots\":{\"754de43d-5472-4d60-a6e2-e4970ea4f8f3\":\"d81b32d2-bc3a-444f-b29d-0142b6d1bca5\"},\"root_ids\":[\"754de43d-5472-4d60-a6e2-e4970ea4f8f3\"]}];\n",
+       "  var docs = Object.values(docs_json)\n",
+       "  if (!docs) {\n",
+       "    return\n",
+       "  }\n",
+       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
+       "  async function embed_document(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    await Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
+       "    for (const render_item of render_items) {\n",
+       "      for (const root_id of render_item.root_ids) {\n",
+       "\tconst id_el = document.getElementById(root_id)\n",
+       "\tif (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {\n",
+       "\t  const root_el = id_el.children[0]\n",
+       "\t  root_el.id = root_el.id + '-rendered'\n",
+       "\t  for (const child of root_el.children) {\n",
+       "            // Ensure JupyterLab does not capture keyboard shortcuts\n",
+       "            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model\n",
+       "\t    child.setAttribute('data-lm-suppress-shortcuts', 'true')\n",
+       "\t  }\n",
+       "\t}\n",
+       "      }\n",
+       "    }\n",
+       "  }\n",
+       "  function get_bokeh(root) {\n",
+       "    if (root.Bokeh === undefined) {\n",
+       "      return null\n",
+       "    } else if (root.Bokeh.version !== py_version) {\n",
+       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
+       "\treturn null\n",
+       "      }\n",
+       "      return root.Bokeh.versions.get(py_version);\n",
+       "    } else if (root.Bokeh.version === py_version) {\n",
+       "      return root.Bokeh\n",
+       "    }\n",
+       "    return null\n",
+       "  }\n",
+       "  function is_loaded(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
+       "  }\n",
+       "  if (is_loaded(root)) {\n",
+       "    embed_document(root);\n",
+       "  } else {\n",
+       "    var attempts = 0;\n",
+       "    var timer = setInterval(function(root) {\n",
+       "      if (is_loaded(root)) {\n",
+       "        clearInterval(timer);\n",
+       "        embed_document(root);\n",
+       "      } else if (document.readyState == \"complete\") {\n",
+       "        attempts++;\n",
+       "        if (attempts > 200) {\n",
+       "          clearInterval(timer);\n",
+       "\t  var Bokeh = get_bokeh(root)\n",
+       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
+       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
+       "\t  } else {\n",
+       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
+       "\t    embed_document(root)\n",
+       "\t  }\n",
+       "        }\n",
+       "      }\n",
+       "    }, 25, root)\n",
+       "  }\n",
+       "})(window);</script>"
+      ]
+     },
+     "metadata": {
+      "application/vnd.holoviews_exec.v0+json": {
+       "id": "754de43d-5472-4d60-a6e2-e4970ea4f8f3"
+      }
+     },
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "<script type=\"esms-options\">{\"shimMode\": true}</script><style>*[data-root-id],\n",
+       "*[data-root-id] > * {\n",
+       "  box-sizing: border-box;\n",
+       "  font-family: var(--jp-ui-font-family);\n",
+       "  font-size: var(--jp-ui-font-size1);\n",
+       "  color: var(--vscode-editor-foreground, var(--jp-ui-font-color1));\n",
+       "}\n",
+       "\n",
+       "/* Override VSCode background color */\n",
+       ".cell-output-ipywidget-background:has(\n",
+       "    > .cell-output-ipywidget-background > .lm-Widget > *[data-root-id]\n",
+       "  ),\n",
+       ".cell-output-ipywidget-background:has(> .lm-Widget > *[data-root-id]) {\n",
+       "  background-color: transparent !important;\n",
+       "}\n",
+       "</style>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/javascript": "(function(root) {\n  function now() {\n    return new Date();\n  }\n\n  const force = false;\n  const py_version = '3.5.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n  const reloading = true;\n  const Bokeh = root.Bokeh;\n\n  // Set a timeout for this load but only if we are not already initializing\n  if (typeof (root._bokeh_timeout) === \"undefined\" || (force || !root._bokeh_is_initializing)) {\n    root._bokeh_timeout = Date.now() + 5000;\n    root._bokeh_failed_load = false;\n  }\n\n  function run_callbacks() {\n    try {\n      root._bokeh_onload_callbacks.forEach(function(callback) {\n        if (callback != null)\n          callback();\n      });\n    } finally {\n      delete root._bokeh_onload_callbacks;\n    }\n    console.debug(\"Bokeh: all callbacks have finished\");\n  }\n\n  function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n    if (css_urls == null) css_urls = [];\n    if (js_urls == null) js_urls = [];\n    if (js_modules == null) js_modules = [];\n    if (js_exports == null) js_exports = {};\n\n    root._bokeh_onload_callbacks.push(callback);\n\n    if (root._bokeh_is_loading > 0) {\n      // Don't load bokeh if it is still initializing\n      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n      return null;\n    } else if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n      // There is nothing to load\n      run_callbacks();\n      return null;\n    }\n\n    function on_load() {\n      root._bokeh_is_loading--;\n      if (root._bokeh_is_loading === 0) {\n        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n        run_callbacks()\n      }\n    }\n    window._bokeh_on_load = on_load\n\n    function on_error(e) {\n      const src_el = e.srcElement\n      console.error(\"failed to load \" + (src_el.href || src_el.src));\n    }\n\n    const skip = [];\n    if (window.requirejs) {\n      window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n      root._bokeh_is_loading = css_urls.length + 0;\n    } else {\n      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n    }\n\n    const existing_stylesheets = []\n    const links = document.getElementsByTagName('link')\n    for (let i = 0; i < links.length; i++) {\n      const link = links[i]\n      if (link.href != null) {\n        existing_stylesheets.push(link.href)\n      }\n    }\n    for (let i = 0; i < css_urls.length; i++) {\n      const url = css_urls[i];\n      const escaped = encodeURI(url)\n      if (existing_stylesheets.indexOf(escaped) !== -1) {\n        on_load()\n        continue;\n      }\n      const element = document.createElement(\"link\");\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.rel = \"stylesheet\";\n      element.type = \"text/css\";\n      element.href = url;\n      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n      document.body.appendChild(element);\n    }    var existing_scripts = []\n    const scripts = document.getElementsByTagName('script')\n    for (let i = 0; i < scripts.length; i++) {\n      var script = scripts[i]\n      if (script.src != null) {\n        existing_scripts.push(script.src)\n      }\n    }\n    for (let i = 0; i < js_urls.length; i++) {\n      const url = js_urls[i];\n      const escaped = encodeURI(url)\n      if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n        if (!window.requirejs) {\n          on_load();\n        }\n        continue;\n      }\n      const element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (let i = 0; i < js_modules.length; i++) {\n      const url = js_modules[i];\n      const escaped = encodeURI(url)\n      if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n        if (!window.requirejs) {\n          on_load();\n        }\n        continue;\n      }\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (const name in js_exports) {\n      const url = js_exports[name];\n      const escaped = encodeURI(url)\n      if (skip.indexOf(escaped) >= 0 || root[name] != null) {\n        if (!window.requirejs) {\n          on_load();\n        }\n        continue;\n      }\n      var element = document.createElement('script');\n      element.onerror = on_error;\n      element.async = false;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      element.textContent = `\n      import ${name} from \"${url}\"\n      window.${name} = ${name}\n      window._bokeh_on_load()\n      `\n      document.head.appendChild(element);\n    }\n    if (!js_urls.length && !js_modules.length) {\n      on_load()\n    }\n  };\n\n  function inject_raw_css(css) {\n    const element = document.createElement(\"style\");\n    element.appendChild(document.createTextNode(css));\n    document.body.appendChild(element);\n  }\n\n  const js_urls = [\"https://cdn.holoviz.org/panel/1.5.4/dist/bundled/reactiveesm/es-module-shims@^1.10.0/dist/es-module-shims.min.js\"];\n  const js_modules = [];\n  const js_exports = {};\n  const css_urls = [];\n  const inline_js = [    function(Bokeh) {\n      Bokeh.set_log_level(\"info\");\n    },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n  ];\n\n  function run_inline_js() {\n    if ((root.Bokeh !== undefined) || (force === true)) {\n      for (let i = 0; i < inline_js.length; i++) {\n        try {\n          inline_js[i].call(root, root.Bokeh);\n        } catch(e) {\n          if (!reloading) {\n            throw e;\n          }\n        }\n      }\n      // Cache old bokeh versions\n      if (Bokeh != undefined && !reloading) {\n        var NewBokeh = root.Bokeh;\n        if (Bokeh.versions === undefined) {\n          Bokeh.versions = new Map();\n        }\n        if (NewBokeh.version !== Bokeh.version) {\n          Bokeh.versions.set(NewBokeh.version, NewBokeh)\n        }\n        root.Bokeh = Bokeh;\n      }\n    } else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(run_inline_js, 100);\n    } else if (!root._bokeh_failed_load) {\n      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n      root._bokeh_failed_load = true;\n    }\n    root._bokeh_is_initializing = false\n  }\n\n  function load_or_wait() {\n    // Implement a backoff loop that tries to ensure we do not load multiple\n    // versions of Bokeh and its dependencies at the same time.\n    // In recent versions we use the root._bokeh_is_initializing flag\n    // to determine whether there is an ongoing attempt to initialize\n    // bokeh, however for backward compatibility we also try to ensure\n    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n    // before older versions are fully initialized.\n    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n      // If the timeout and bokeh was not successfully loaded we reset\n      // everything and try loading again\n      root._bokeh_timeout = Date.now() + 5000;\n      root._bokeh_is_initializing = false;\n      root._bokeh_onload_callbacks = undefined;\n      root._bokeh_is_loading = 0\n      console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n      load_or_wait();\n    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n      setTimeout(load_or_wait, 100);\n    } else {\n      root._bokeh_is_initializing = true\n      root._bokeh_onload_callbacks = []\n      const bokeh_loaded = root.Bokeh != null && (root.Bokeh.version === py_version || (root.Bokeh.versions !== undefined && root.Bokeh.versions.has(py_version)));\n      if (!reloading && !bokeh_loaded) {\n        if (root.Bokeh) {\n          root.Bokeh = undefined;\n        }\n        console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n      }\n      load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n        console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n        run_inline_js();\n      });\n    }\n  }\n  // Give older versions of the autoload script a head-start to ensure\n  // they initialize before we start loading newer version.\n  setTimeout(load_or_wait, 100)\n}(window));",
+      "application/vnd.holoviews_load.v0+json": ""
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/javascript": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n    function JupyterCommManager() {\n    }\n\n    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        comm_manager.register_target(comm_id, function(comm) {\n          comm.on_msg(msg_handler);\n        });\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n          comm.onMsg = msg_handler;\n        });\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n          var messages = comm.messages[Symbol.asyncIterator]();\n          function processIteratorResult(result) {\n            var message = result.value;\n            console.log(message)\n            var content = {data: message.data, comm_id};\n            var buffers = []\n            for (var buffer of message.buffers || []) {\n              buffers.push(new DataView(buffer))\n            }\n            var metadata = message.metadata || {};\n            var msg = {content, buffers, metadata}\n            msg_handler(msg);\n            return messages.next().then(processIteratorResult);\n          }\n          return messages.next().then(processIteratorResult);\n        })\n      }\n    }\n\n    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n      if (comm_id in window.PyViz.comms) {\n        return window.PyViz.comms[comm_id];\n      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n        if (msg_handler) {\n          comm.on_msg(msg_handler);\n        }\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n        comm.open();\n        if (msg_handler) {\n          comm.onMsg = msg_handler;\n        }\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        var comm_promise = google.colab.kernel.comms.open(comm_id)\n        comm_promise.then((comm) => {\n          window.PyViz.comms[comm_id] = comm;\n          if (msg_handler) {\n            var messages = comm.messages[Symbol.asyncIterator]();\n            function processIteratorResult(result) {\n              var message = result.value;\n              var content = {data: message.data};\n              var metadata = message.metadata || {comm_id};\n              var msg = {content, metadata}\n              msg_handler(msg);\n              return messages.next().then(processIteratorResult);\n            }\n            return messages.next().then(processIteratorResult);\n          }\n        }) \n        var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n          return comm_promise.then((comm) => {\n            comm.send(data, metadata, buffers, disposeOnDone);\n          });\n        };\n        var comm = {\n          send: sendClosure\n        };\n      }\n      window.PyViz.comms[comm_id] = comm;\n      return comm;\n    }\n    window.PyViz.comm_manager = new JupyterCommManager();\n    \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n  var div = document.createElement(\"div\");\n  var script = document.createElement(\"script\");\n  node.appendChild(div);\n  node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n  var output_area = handle.output_area;\n  var output = handle.output;\n  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n    return\n  }\n  var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n  var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n  if (id !== undefined) {\n    var nchildren = toinsert.length;\n    var html_node = toinsert[nchildren-1].children[0];\n    html_node.innerHTML = output.data[HTML_MIME_TYPE];\n    var scripts = [];\n    var nodelist = html_node.querySelectorAll(\"script\");\n    for (var i in nodelist) {\n      if (nodelist.hasOwnProperty(i)) {\n        scripts.push(nodelist[i])\n      }\n    }\n\n    scripts.forEach( function (oldScript) {\n      var newScript = document.createElement(\"script\");\n      var attrs = [];\n      var nodemap = oldScript.attributes;\n      for (var j in nodemap) {\n        if (nodemap.hasOwnProperty(j)) {\n          attrs.push(nodemap[j])\n        }\n      }\n      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n      newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n      oldScript.parentNode.replaceChild(newScript, oldScript);\n    });\n    if (JS_MIME_TYPE in output.data) {\n      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n    }\n    output_area._hv_plot_id = id;\n    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n      window.PyViz.plot_index[id] = Bokeh.index[id];\n    } else {\n      window.PyViz.plot_index[id] = null;\n    }\n  } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n    var bk_div = document.createElement(\"div\");\n    bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n    var script_attrs = bk_div.children[0].attributes;\n    for (var i = 0; i < script_attrs.length; i++) {\n      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n    }\n    // store reference to server id on output_area\n    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n  }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n  var id = handle.cell.output_area._hv_plot_id;\n  var server_id = handle.cell.output_area._bokeh_server_id;\n  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n  var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n  if (server_id !== null) {\n    comm.send({event_type: 'server_delete', 'id': server_id});\n    return;\n  } else if (comm !== null) {\n    comm.send({event_type: 'delete', 'id': id});\n  }\n  delete PyViz.plot_index[id];\n  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n    var doc = window.Bokeh.index[id].model.document\n    doc.clear();\n    const i = window.Bokeh.documents.indexOf(doc);\n    if (i > -1) {\n      window.Bokeh.documents.splice(i, 1);\n    }\n  }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n  delete PyViz.comms[\"hv-extension-comm\"];\n  window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n  handle_clear_output(event, {cell: {output_area: handle.output_area}})\n  handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n  function append_mime(data, metadata, element) {\n    // create a DOM node to render to\n    var toinsert = this.create_output_subarea(\n    metadata,\n    CLASS_NAME,\n    EXEC_MIME_TYPE\n    );\n    this.keyboard_manager.register_events(toinsert);\n    // Render to node\n    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n    render(props, toinsert[0]);\n    element.append(toinsert);\n    return toinsert\n  }\n\n  events.on('output_added.OutputArea', handle_add_output);\n  events.on('output_updated.OutputArea', handle_update_output);\n  events.on('clear_output.CodeCell', handle_clear_output);\n  events.on('delete.Cell', handle_clear_output);\n  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n    safe: true,\n    index: 0\n  });\n}\n\nif (window.Jupyter !== undefined) {\n  try {\n    var events = require('base/js/events');\n    var OutputArea = require('notebook/js/outputarea').OutputArea;\n    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n      register_renderer(events, OutputArea);\n    }\n  } catch(err) {\n  }\n}\n",
+      "application/vnd.holoviews_load.v0+json": ""
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "import uxarray as ux\n",
-    "import numpy as np"
+    "import numpy as np\n",
+    "import matplotlib.pyplot as plt\n",
+    "import cartopy.crs as ccrs\n",
+    "import cartopy.feature as cfeature"
    ]
   },
   {
@@ -49,14 +218,430 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 2,
    "metadata": {
     "collapsed": false,
     "jupyter": {
      "outputs_hidden": false
     }
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
+       "<defs>\n",
+       "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
+       "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
+       "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
+       "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
+       "</symbol>\n",
+       "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
+       "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
+       "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
+       "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
+       "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
+       "</symbol>\n",
+       "</defs>\n",
+       "</svg>\n",
+       "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
+       " *\n",
+       " */\n",
+       "\n",
+       ":root {\n",
+       "  --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
+       "  --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
+       "  --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
+       "  --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
+       "  --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
+       "  --xr-background-color: var(--jp-layout-color0, white);\n",
+       "  --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
+       "  --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
+       "}\n",
+       "\n",
+       "html[theme=\"dark\"],\n",
+       "html[data-theme=\"dark\"],\n",
+       "body[data-theme=\"dark\"],\n",
+       "body.vscode-dark {\n",
+       "  --xr-font-color0: rgba(255, 255, 255, 1);\n",
+       "  --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
+       "  --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
+       "  --xr-border-color: #1f1f1f;\n",
+       "  --xr-disabled-color: #515151;\n",
+       "  --xr-background-color: #111111;\n",
+       "  --xr-background-color-row-even: #111111;\n",
+       "  --xr-background-color-row-odd: #313131;\n",
+       "}\n",
+       "\n",
+       ".xr-wrap {\n",
+       "  display: block !important;\n",
+       "  min-width: 300px;\n",
+       "  max-width: 700px;\n",
+       "}\n",
+       "\n",
+       ".xr-text-repr-fallback {\n",
+       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
+       "  display: none;\n",
+       "}\n",
+       "\n",
+       ".xr-header {\n",
+       "  padding-top: 6px;\n",
+       "  padding-bottom: 6px;\n",
+       "  margin-bottom: 4px;\n",
+       "  border-bottom: solid 1px var(--xr-border-color);\n",
+       "}\n",
+       "\n",
+       ".xr-header > div,\n",
+       ".xr-header > ul {\n",
+       "  display: inline;\n",
+       "  margin-top: 0;\n",
+       "  margin-bottom: 0;\n",
+       "}\n",
+       "\n",
+       ".xr-obj-type,\n",
+       ".xr-array-name {\n",
+       "  margin-left: 2px;\n",
+       "  margin-right: 10px;\n",
+       "}\n",
+       "\n",
+       ".xr-obj-type {\n",
+       "  color: var(--xr-font-color2);\n",
+       "}\n",
+       "\n",
+       ".xr-sections {\n",
+       "  padding-left: 0 !important;\n",
+       "  display: grid;\n",
+       "  grid-template-columns: 150px auto auto 1fr 0 20px 0 20px;\n",
+       "}\n",
+       "\n",
+       ".xr-section-item {\n",
+       "  display: contents;\n",
+       "}\n",
+       "\n",
+       ".xr-section-item input {\n",
+       "  display: inline-block;\n",
+       "  opacity: 0;\n",
+       "  height: 0;\n",
+       "}\n",
+       "\n",
+       ".xr-section-item input + label {\n",
+       "  color: var(--xr-disabled-color);\n",
+       "}\n",
+       "\n",
+       ".xr-section-item input:enabled + label {\n",
+       "  cursor: pointer;\n",
+       "  color: var(--xr-font-color2);\n",
+       "}\n",
+       "\n",
+       ".xr-section-item input:focus + label {\n",
+       "  border: 2px solid var(--xr-font-color0);\n",
+       "}\n",
+       "\n",
+       ".xr-section-item input:enabled + label:hover {\n",
+       "  color: var(--xr-font-color0);\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary {\n",
+       "  grid-column: 1;\n",
+       "  color: var(--xr-font-color2);\n",
+       "  font-weight: 500;\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary > span {\n",
+       "  display: inline-block;\n",
+       "  padding-left: 0.5em;\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in:disabled + label {\n",
+       "  color: var(--xr-font-color2);\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in + label:before {\n",
+       "  display: inline-block;\n",
+       "  content: \"►\";\n",
+       "  font-size: 11px;\n",
+       "  width: 15px;\n",
+       "  text-align: center;\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in:disabled + label:before {\n",
+       "  color: var(--xr-disabled-color);\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in:checked + label:before {\n",
+       "  content: \"▼\";\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in:checked + label > span {\n",
+       "  display: none;\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary,\n",
+       ".xr-section-inline-details {\n",
+       "  padding-top: 4px;\n",
+       "  padding-bottom: 4px;\n",
+       "}\n",
+       "\n",
+       ".xr-section-inline-details {\n",
+       "  grid-column: 2 / -1;\n",
+       "}\n",
+       "\n",
+       ".xr-section-details {\n",
+       "  display: none;\n",
+       "  grid-column: 1 / -1;\n",
+       "  margin-bottom: 5px;\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in:checked ~ .xr-section-details {\n",
+       "  display: contents;\n",
+       "}\n",
+       "\n",
+       ".xr-array-wrap {\n",
+       "  grid-column: 1 / -1;\n",
+       "  display: grid;\n",
+       "  grid-template-columns: 20px auto;\n",
+       "}\n",
+       "\n",
+       ".xr-array-wrap > label {\n",
+       "  grid-column: 1;\n",
+       "  vertical-align: top;\n",
+       "}\n",
+       "\n",
+       ".xr-preview {\n",
+       "  color: var(--xr-font-color3);\n",
+       "}\n",
+       "\n",
+       ".xr-array-preview,\n",
+       ".xr-array-data {\n",
+       "  padding: 0 5px !important;\n",
+       "  grid-column: 2;\n",
+       "}\n",
+       "\n",
+       ".xr-array-data,\n",
+       ".xr-array-in:checked ~ .xr-array-preview {\n",
+       "  display: none;\n",
+       "}\n",
+       "\n",
+       ".xr-array-in:checked ~ .xr-array-data,\n",
+       ".xr-array-preview {\n",
+       "  display: inline-block;\n",
+       "}\n",
+       "\n",
+       ".xr-dim-list {\n",
+       "  display: inline-block !important;\n",
+       "  list-style: none;\n",
+       "  padding: 0 !important;\n",
+       "  margin: 0;\n",
+       "}\n",
+       "\n",
+       ".xr-dim-list li {\n",
+       "  display: inline-block;\n",
+       "  padding: 0;\n",
+       "  margin: 0;\n",
+       "}\n",
+       "\n",
+       ".xr-dim-list:before {\n",
+       "  content: \"(\";\n",
+       "}\n",
+       "\n",
+       ".xr-dim-list:after {\n",
+       "  content: \")\";\n",
+       "}\n",
+       "\n",
+       ".xr-dim-list li:not(:last-child):after {\n",
+       "  content: \",\";\n",
+       "  padding-right: 5px;\n",
+       "}\n",
+       "\n",
+       ".xr-has-index {\n",
+       "  font-weight: bold;\n",
+       "}\n",
+       "\n",
+       ".xr-var-list,\n",
+       ".xr-var-item {\n",
+       "  display: contents;\n",
+       "}\n",
+       "\n",
+       ".xr-var-item > div,\n",
+       ".xr-var-item label,\n",
+       ".xr-var-item > .xr-var-name span {\n",
+       "  background-color: var(--xr-background-color-row-even);\n",
+       "  margin-bottom: 0;\n",
+       "}\n",
+       "\n",
+       ".xr-var-item > .xr-var-name:hover span {\n",
+       "  padding-right: 5px;\n",
+       "}\n",
+       "\n",
+       ".xr-var-list > li:nth-child(odd) > div,\n",
+       ".xr-var-list > li:nth-child(odd) > label,\n",
+       ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
+       "  background-color: var(--xr-background-color-row-odd);\n",
+       "}\n",
+       "\n",
+       ".xr-var-name {\n",
+       "  grid-column: 1;\n",
+       "}\n",
+       "\n",
+       ".xr-var-dims {\n",
+       "  grid-column: 2;\n",
+       "}\n",
+       "\n",
+       ".xr-var-dtype {\n",
+       "  grid-column: 3;\n",
+       "  text-align: right;\n",
+       "  color: var(--xr-font-color2);\n",
+       "}\n",
+       "\n",
+       ".xr-var-preview {\n",
+       "  grid-column: 4;\n",
+       "}\n",
+       "\n",
+       ".xr-index-preview {\n",
+       "  grid-column: 2 / 5;\n",
+       "  color: var(--xr-font-color2);\n",
+       "}\n",
+       "\n",
+       ".xr-var-name,\n",
+       ".xr-var-dims,\n",
+       ".xr-var-dtype,\n",
+       ".xr-preview,\n",
+       ".xr-attrs dt {\n",
+       "  white-space: nowrap;\n",
+       "  overflow: hidden;\n",
+       "  text-overflow: ellipsis;\n",
+       "  padding-right: 10px;\n",
+       "}\n",
+       "\n",
+       ".xr-var-name:hover,\n",
+       ".xr-var-dims:hover,\n",
+       ".xr-var-dtype:hover,\n",
+       ".xr-attrs dt:hover {\n",
+       "  overflow: visible;\n",
+       "  width: auto;\n",
+       "  z-index: 1;\n",
+       "}\n",
+       "\n",
+       ".xr-var-attrs,\n",
+       ".xr-var-data,\n",
+       ".xr-index-data {\n",
+       "  display: none;\n",
+       "  background-color: var(--xr-background-color) !important;\n",
+       "  padding-bottom: 5px !important;\n",
+       "}\n",
+       "\n",
+       ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
+       ".xr-var-data-in:checked ~ .xr-var-data,\n",
+       ".xr-index-data-in:checked ~ .xr-index-data {\n",
+       "  display: block;\n",
+       "}\n",
+       "\n",
+       ".xr-var-data > table {\n",
+       "  float: right;\n",
+       "}\n",
+       "\n",
+       ".xr-var-name span,\n",
+       ".xr-var-data,\n",
+       ".xr-index-name div,\n",
+       ".xr-index-data,\n",
+       ".xr-attrs {\n",
+       "  padding-left: 25px !important;\n",
+       "}\n",
+       "\n",
+       ".xr-attrs,\n",
+       ".xr-var-attrs,\n",
+       ".xr-var-data,\n",
+       ".xr-index-data {\n",
+       "  grid-column: 1 / -1;\n",
+       "}\n",
+       "\n",
+       "dl.xr-attrs {\n",
+       "  padding: 0;\n",
+       "  margin: 0;\n",
+       "  display: grid;\n",
+       "  grid-template-columns: 125px auto;\n",
+       "}\n",
+       "\n",
+       ".xr-attrs dt,\n",
+       ".xr-attrs dd {\n",
+       "  padding: 0;\n",
+       "  margin: 0;\n",
+       "  float: left;\n",
+       "  padding-right: 10px;\n",
+       "  width: auto;\n",
+       "}\n",
+       "\n",
+       ".xr-attrs dt {\n",
+       "  font-weight: normal;\n",
+       "  grid-column: 1;\n",
+       "}\n",
+       "\n",
+       ".xr-attrs dt:hover span {\n",
+       "  display: inline-block;\n",
+       "  background: var(--xr-background-color);\n",
+       "  padding-right: 10px;\n",
+       "}\n",
+       "\n",
+       ".xr-attrs dd {\n",
+       "  grid-column: 2;\n",
+       "  white-space: pre-wrap;\n",
+       "  word-break: break-all;\n",
+       "}\n",
+       "\n",
+       ".xr-icon-database,\n",
+       ".xr-icon-file-text2,\n",
+       ".xr-no-icon {\n",
+       "  display: inline-block;\n",
+       "  vertical-align: middle;\n",
+       "  width: 1em;\n",
+       "  height: 1.5em !important;\n",
+       "  stroke-width: 0;\n",
+       "  stroke: currentColor;\n",
+       "  fill: currentColor;\n",
+       "}\n",
+       "</style><pre class='xr-text-repr-fallback'>&lt;uxarray.Grid&gt;\n",
+       "Original Grid Type: UGRID\n",
+       "Grid Dimensions:\n",
+       "  * n_node: 5402\n",
+       "  * n_face: 5400\n",
+       "  * n_max_face_nodes: 4\n",
+       "Grid Coordinates (Spherical):\n",
+       "  * node_lon: (5402,)\n",
+       "  * node_lat: (5402,)\n",
+       "Grid Coordinates (Cartesian):\n",
+       "Grid Connectivity Variables:\n",
+       "  * face_node_connectivity: (5400, 4)\n",
+       "Grid Descriptor Variables:\n",
+       "</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>uxarray.Grid</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-01df16fd-8f51-414d-b925-7b47f6c668e3' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-01df16fd-8f51-414d-b925-7b47f6c668e3' class='xr-section-summary'  title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>n_face</span>: 5400</li><li><span>n_max_face_nodes</span>: 4</li><li><span>n_node</span>: 5402</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-d79781b0-3ecc-438e-8e3b-43dd38246d43' class='xr-section-summary-in' type='checkbox'  checked><label for='section-d79781b0-3ecc-438e-8e3b-43dd38246d43' class='xr-section-summary' >Spherical Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>node_lon</span></div><div class='xr-var-dims'>(n_node)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-45.0 45.0 135.0 ... 138.0 135.0</div><input id='attrs-303babf1-1450-47be-8ea8-c5ca84b87120' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-303babf1-1450-47be-8ea8-c5ca84b87120' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-cc8c8aaa-87a5-48cc-9bf7-dcff14af2be6' class='xr-var-data-in' type='checkbox'><label for='data-cc8c8aaa-87a5-48cc-9bf7-dcff14af2be6' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>longitude</dd><dt><span>long_name :</span></dt><dd>longitude of 2D mesh nodes</dd><dt><span>units :</span></dt><dd>degrees_east</dd></dl></div><div class='xr-var-data'><pre>array([-45.        ,  45.        , 135.        , ..., 141.09968961,\n",
+       "       138.03317102, 135.        ])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>node_lat</span></div><div class='xr-var-dims'>(n_node)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-d2123030-9317-44c3-a69c-5d4d52ecedbd' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-d2123030-9317-44c3-a69c-5d4d52ecedbd' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2c426ed4-33df-45fe-80ba-fb76b240911d' class='xr-var-data-in' type='checkbox'><label for='data-2c426ed4-33df-45fe-80ba-fb76b240911d' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>long_name :</span></dt><dd>latitude of 2D mesh nodes</dd><dt><span>units :</span></dt><dd>degrees_north</dd></dl></div><div class='xr-var-data'><pre>[5402 values with dtype=float64]</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-962f29c6-a39c-4e2c-b19f-23f7adeb4ae6' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-962f29c6-a39c-4e2c-b19f-23f7adeb4ae6' class='xr-section-summary'  title='Expand/collapse section'>Cartesian Coordinates: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'></ul></div></li><li class='xr-section-item'><input id='section-78171ee3-19ec-41fd-8ebd-2e15b270ee31' class='xr-section-summary-in' type='checkbox'  checked><label for='section-78171ee3-19ec-41fd-8ebd-2e15b270ee31' class='xr-section-summary' >Connectivity: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>face_node_connectivity</span></div><div class='xr-var-dims'>(n_face, n_max_face_nodes)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 8 356 124 8 ... 5401 297 6 298</div><input id='attrs-9c1e9dd9-7b1a-474b-8350-e22a71fcd074' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-9c1e9dd9-7b1a-474b-8350-e22a71fcd074' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-24373793-03bf-4626-938a-a35f3f3aa07f' class='xr-var-data-in' type='checkbox'><label for='data-24373793-03bf-4626-938a-a35f3f3aa07f' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cf_role :</span></dt><dd>face_node_connectivity</dd><dt><span>start_index :</span></dt><dd>0</dd><dt><span>_FillValue :</span></dt><dd>-9223372036854775808</dd></dl></div><div class='xr-var-data'><pre>array([[   0,    8,  356,  124],\n",
+       "       [   8,    9,  357,  356],\n",
+       "       [   9,   10,  358,  357],\n",
+       "       ...,\n",
+       "       [5399, 5400,  299,  300],\n",
+       "       [5400, 5401,  298,  299],\n",
+       "       [5401,  297,    6,  298]])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-d7ce0250-36b2-4470-833a-66b6e453bbcb' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-d7ce0250-36b2-4470-833a-66b6e453bbcb' class='xr-section-summary'  title='Expand/collapse section'>Descriptors: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'></ul></div></li><li class='xr-section-item'><input id='section-d80aef71-c152-44c3-a423-1640305f268f' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-d80aef71-c152-44c3-a423-1640305f268f' class='xr-section-summary'  title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
+      ],
+      "text/plain": [
+       "<uxarray.Grid>\n",
+       "Original Grid Type: UGRID\n",
+       "Grid Dimensions:\n",
+       "  * n_node: 5402\n",
+       "  * n_face: 5400\n",
+       "  * n_max_face_nodes: 4\n",
+       "Grid Coordinates (Spherical):\n",
+       "  * node_lon: (5402,)\n",
+       "  * node_lat: (5402,)\n",
+       "Grid Coordinates (Cartesian):\n",
+       "Grid Connectivity Variables:\n",
+       "  * face_node_connectivity: (5400, 4)\n",
+       "Grid Descriptor Variables:"
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "base_path = \"../../test/meshfiles/\"\n",
     "grid_path = base_path + \"/ugrid/outCSne30/outCSne30.ug\"\n",
@@ -75,14 +660,25 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 3,
    "metadata": {
     "collapsed": false,
     "jupyter": {
      "outputs_hidden": false
     }
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "np.float64(12.566370614678554)"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "t4_area = ugrid.calculate_total_face_area()\n",
     "t4_area"
@@ -92,7 +688,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "## 2. Options for `Grid.calculate_total_face_area` Function\n",
+    "## 2. Quadrature and Order Options for `Grid.calculate_total_face_area` Function\n",
     "\n",
     "By default, `Grid.calculate_total_face_area` uses a Triangular Quadrature Rule and an Order of 4. However, you can specify the Quadrature Rule and Order as follows:\n",
     "\n",
@@ -106,9 +702,20 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 4,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "np.float64(12.571403993719983)"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "t1_area = ugrid.calculate_total_face_area(quadrature_rule=\"triangular\", order=1)\n",
     "t1_area"
@@ -139,14 +746,411 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 5,
    "metadata": {
     "collapsed": false,
     "jupyter": {
      "outputs_hidden": false
     }
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
+       "<defs>\n",
+       "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
+       "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
+       "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
+       "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
+       "</symbol>\n",
+       "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
+       "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
+       "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
+       "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
+       "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
+       "</symbol>\n",
+       "</defs>\n",
+       "</svg>\n",
+       "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
+       " *\n",
+       " */\n",
+       "\n",
+       ":root {\n",
+       "  --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
+       "  --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
+       "  --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
+       "  --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
+       "  --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
+       "  --xr-background-color: var(--jp-layout-color0, white);\n",
+       "  --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
+       "  --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
+       "}\n",
+       "\n",
+       "html[theme=\"dark\"],\n",
+       "html[data-theme=\"dark\"],\n",
+       "body[data-theme=\"dark\"],\n",
+       "body.vscode-dark {\n",
+       "  --xr-font-color0: rgba(255, 255, 255, 1);\n",
+       "  --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
+       "  --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
+       "  --xr-border-color: #1f1f1f;\n",
+       "  --xr-disabled-color: #515151;\n",
+       "  --xr-background-color: #111111;\n",
+       "  --xr-background-color-row-even: #111111;\n",
+       "  --xr-background-color-row-odd: #313131;\n",
+       "}\n",
+       "\n",
+       ".xr-wrap {\n",
+       "  display: block !important;\n",
+       "  min-width: 300px;\n",
+       "  max-width: 700px;\n",
+       "}\n",
+       "\n",
+       ".xr-text-repr-fallback {\n",
+       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
+       "  display: none;\n",
+       "}\n",
+       "\n",
+       ".xr-header {\n",
+       "  padding-top: 6px;\n",
+       "  padding-bottom: 6px;\n",
+       "  margin-bottom: 4px;\n",
+       "  border-bottom: solid 1px var(--xr-border-color);\n",
+       "}\n",
+       "\n",
+       ".xr-header > div,\n",
+       ".xr-header > ul {\n",
+       "  display: inline;\n",
+       "  margin-top: 0;\n",
+       "  margin-bottom: 0;\n",
+       "}\n",
+       "\n",
+       ".xr-obj-type,\n",
+       ".xr-array-name {\n",
+       "  margin-left: 2px;\n",
+       "  margin-right: 10px;\n",
+       "}\n",
+       "\n",
+       ".xr-obj-type {\n",
+       "  color: var(--xr-font-color2);\n",
+       "}\n",
+       "\n",
+       ".xr-sections {\n",
+       "  padding-left: 0 !important;\n",
+       "  display: grid;\n",
+       "  grid-template-columns: 150px auto auto 1fr 0 20px 0 20px;\n",
+       "}\n",
+       "\n",
+       ".xr-section-item {\n",
+       "  display: contents;\n",
+       "}\n",
+       "\n",
+       ".xr-section-item input {\n",
+       "  display: inline-block;\n",
+       "  opacity: 0;\n",
+       "  height: 0;\n",
+       "}\n",
+       "\n",
+       ".xr-section-item input + label {\n",
+       "  color: var(--xr-disabled-color);\n",
+       "}\n",
+       "\n",
+       ".xr-section-item input:enabled + label {\n",
+       "  cursor: pointer;\n",
+       "  color: var(--xr-font-color2);\n",
+       "}\n",
+       "\n",
+       ".xr-section-item input:focus + label {\n",
+       "  border: 2px solid var(--xr-font-color0);\n",
+       "}\n",
+       "\n",
+       ".xr-section-item input:enabled + label:hover {\n",
+       "  color: var(--xr-font-color0);\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary {\n",
+       "  grid-column: 1;\n",
+       "  color: var(--xr-font-color2);\n",
+       "  font-weight: 500;\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary > span {\n",
+       "  display: inline-block;\n",
+       "  padding-left: 0.5em;\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in:disabled + label {\n",
+       "  color: var(--xr-font-color2);\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in + label:before {\n",
+       "  display: inline-block;\n",
+       "  content: \"►\";\n",
+       "  font-size: 11px;\n",
+       "  width: 15px;\n",
+       "  text-align: center;\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in:disabled + label:before {\n",
+       "  color: var(--xr-disabled-color);\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in:checked + label:before {\n",
+       "  content: \"▼\";\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in:checked + label > span {\n",
+       "  display: none;\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary,\n",
+       ".xr-section-inline-details {\n",
+       "  padding-top: 4px;\n",
+       "  padding-bottom: 4px;\n",
+       "}\n",
+       "\n",
+       ".xr-section-inline-details {\n",
+       "  grid-column: 2 / -1;\n",
+       "}\n",
+       "\n",
+       ".xr-section-details {\n",
+       "  display: none;\n",
+       "  grid-column: 1 / -1;\n",
+       "  margin-bottom: 5px;\n",
+       "}\n",
+       "\n",
+       ".xr-section-summary-in:checked ~ .xr-section-details {\n",
+       "  display: contents;\n",
+       "}\n",
+       "\n",
+       ".xr-array-wrap {\n",
+       "  grid-column: 1 / -1;\n",
+       "  display: grid;\n",
+       "  grid-template-columns: 20px auto;\n",
+       "}\n",
+       "\n",
+       ".xr-array-wrap > label {\n",
+       "  grid-column: 1;\n",
+       "  vertical-align: top;\n",
+       "}\n",
+       "\n",
+       ".xr-preview {\n",
+       "  color: var(--xr-font-color3);\n",
+       "}\n",
+       "\n",
+       ".xr-array-preview,\n",
+       ".xr-array-data {\n",
+       "  padding: 0 5px !important;\n",
+       "  grid-column: 2;\n",
+       "}\n",
+       "\n",
+       ".xr-array-data,\n",
+       ".xr-array-in:checked ~ .xr-array-preview {\n",
+       "  display: none;\n",
+       "}\n",
+       "\n",
+       ".xr-array-in:checked ~ .xr-array-data,\n",
+       ".xr-array-preview {\n",
+       "  display: inline-block;\n",
+       "}\n",
+       "\n",
+       ".xr-dim-list {\n",
+       "  display: inline-block !important;\n",
+       "  list-style: none;\n",
+       "  padding: 0 !important;\n",
+       "  margin: 0;\n",
+       "}\n",
+       "\n",
+       ".xr-dim-list li {\n",
+       "  display: inline-block;\n",
+       "  padding: 0;\n",
+       "  margin: 0;\n",
+       "}\n",
+       "\n",
+       ".xr-dim-list:before {\n",
+       "  content: \"(\";\n",
+       "}\n",
+       "\n",
+       ".xr-dim-list:after {\n",
+       "  content: \")\";\n",
+       "}\n",
+       "\n",
+       ".xr-dim-list li:not(:last-child):after {\n",
+       "  content: \",\";\n",
+       "  padding-right: 5px;\n",
+       "}\n",
+       "\n",
+       ".xr-has-index {\n",
+       "  font-weight: bold;\n",
+       "}\n",
+       "\n",
+       ".xr-var-list,\n",
+       ".xr-var-item {\n",
+       "  display: contents;\n",
+       "}\n",
+       "\n",
+       ".xr-var-item > div,\n",
+       ".xr-var-item label,\n",
+       ".xr-var-item > .xr-var-name span {\n",
+       "  background-color: var(--xr-background-color-row-even);\n",
+       "  margin-bottom: 0;\n",
+       "}\n",
+       "\n",
+       ".xr-var-item > .xr-var-name:hover span {\n",
+       "  padding-right: 5px;\n",
+       "}\n",
+       "\n",
+       ".xr-var-list > li:nth-child(odd) > div,\n",
+       ".xr-var-list > li:nth-child(odd) > label,\n",
+       ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
+       "  background-color: var(--xr-background-color-row-odd);\n",
+       "}\n",
+       "\n",
+       ".xr-var-name {\n",
+       "  grid-column: 1;\n",
+       "}\n",
+       "\n",
+       ".xr-var-dims {\n",
+       "  grid-column: 2;\n",
+       "}\n",
+       "\n",
+       ".xr-var-dtype {\n",
+       "  grid-column: 3;\n",
+       "  text-align: right;\n",
+       "  color: var(--xr-font-color2);\n",
+       "}\n",
+       "\n",
+       ".xr-var-preview {\n",
+       "  grid-column: 4;\n",
+       "}\n",
+       "\n",
+       ".xr-index-preview {\n",
+       "  grid-column: 2 / 5;\n",
+       "  color: var(--xr-font-color2);\n",
+       "}\n",
+       "\n",
+       ".xr-var-name,\n",
+       ".xr-var-dims,\n",
+       ".xr-var-dtype,\n",
+       ".xr-preview,\n",
+       ".xr-attrs dt {\n",
+       "  white-space: nowrap;\n",
+       "  overflow: hidden;\n",
+       "  text-overflow: ellipsis;\n",
+       "  padding-right: 10px;\n",
+       "}\n",
+       "\n",
+       ".xr-var-name:hover,\n",
+       ".xr-var-dims:hover,\n",
+       ".xr-var-dtype:hover,\n",
+       ".xr-attrs dt:hover {\n",
+       "  overflow: visible;\n",
+       "  width: auto;\n",
+       "  z-index: 1;\n",
+       "}\n",
+       "\n",
+       ".xr-var-attrs,\n",
+       ".xr-var-data,\n",
+       ".xr-index-data {\n",
+       "  display: none;\n",
+       "  background-color: var(--xr-background-color) !important;\n",
+       "  padding-bottom: 5px !important;\n",
+       "}\n",
+       "\n",
+       ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
+       ".xr-var-data-in:checked ~ .xr-var-data,\n",
+       ".xr-index-data-in:checked ~ .xr-index-data {\n",
+       "  display: block;\n",
+       "}\n",
+       "\n",
+       ".xr-var-data > table {\n",
+       "  float: right;\n",
+       "}\n",
+       "\n",
+       ".xr-var-name span,\n",
+       ".xr-var-data,\n",
+       ".xr-index-name div,\n",
+       ".xr-index-data,\n",
+       ".xr-attrs {\n",
+       "  padding-left: 25px !important;\n",
+       "}\n",
+       "\n",
+       ".xr-attrs,\n",
+       ".xr-var-attrs,\n",
+       ".xr-var-data,\n",
+       ".xr-index-data {\n",
+       "  grid-column: 1 / -1;\n",
+       "}\n",
+       "\n",
+       "dl.xr-attrs {\n",
+       "  padding: 0;\n",
+       "  margin: 0;\n",
+       "  display: grid;\n",
+       "  grid-template-columns: 125px auto;\n",
+       "}\n",
+       "\n",
+       ".xr-attrs dt,\n",
+       ".xr-attrs dd {\n",
+       "  padding: 0;\n",
+       "  margin: 0;\n",
+       "  float: left;\n",
+       "  padding-right: 10px;\n",
+       "  width: auto;\n",
+       "}\n",
+       "\n",
+       ".xr-attrs dt {\n",
+       "  font-weight: normal;\n",
+       "  grid-column: 1;\n",
+       "}\n",
+       "\n",
+       ".xr-attrs dt:hover span {\n",
+       "  display: inline-block;\n",
+       "  background: var(--xr-background-color);\n",
+       "  padding-right: 10px;\n",
+       "}\n",
+       "\n",
+       ".xr-attrs dd {\n",
+       "  grid-column: 2;\n",
+       "  white-space: pre-wrap;\n",
+       "  word-break: break-all;\n",
+       "}\n",
+       "\n",
+       ".xr-icon-database,\n",
+       ".xr-icon-file-text2,\n",
+       ".xr-no-icon {\n",
+       "  display: inline-block;\n",
+       "  vertical-align: middle;\n",
+       "  width: 1em;\n",
+       "  height: 1.5em !important;\n",
+       "  stroke-width: 0;\n",
+       "  stroke: currentColor;\n",
+       "  fill: currentColor;\n",
+       "}\n",
+       "</style><pre class='xr-text-repr-fallback'>&lt;xarray.DataArray &#x27;face_areas&#x27; (n_face: 5400)&gt; Size: 43kB\n",
+       "array([0.00211174, 0.00211221, 0.00210723, ..., 0.00210723, 0.00211221,\n",
+       "       0.00211174])\n",
+       "Dimensions without coordinates: n_face\n",
+       "Attributes:\n",
+       "    cf_role:    face_areas\n",
+       "    long_name:  Area of each face.</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'face_areas'</div><ul class='xr-dim-list'><li><span>n_face</span>: 5400</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-90e61c80-7402-4a89-a38c-39c0ff9746aa' class='xr-array-in' type='checkbox' checked><label for='section-90e61c80-7402-4a89-a38c-39c0ff9746aa' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>0.002112 0.002112 0.002107 0.002098 ... 0.002107 0.002112 0.002112</span></div><div class='xr-array-data'><pre>array([0.00211174, 0.00211221, 0.00210723, ..., 0.00210723, 0.00211221,\n",
+       "       0.00211174])</pre></div></div></li><li class='xr-section-item'><input id='section-4f6a348e-b036-4ba0-af29-2e6e128d25d4' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-4f6a348e-b036-4ba0-af29-2e6e128d25d4' class='xr-section-summary'  title='Expand/collapse section'>Coordinates: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'></ul></div></li><li class='xr-section-item'><input id='section-781421fd-cd27-4b86-9a8b-2e69619753b5' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-781421fd-cd27-4b86-9a8b-2e69619753b5' class='xr-section-summary'  title='Expand/collapse section'>Indexes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'></ul></div></li><li class='xr-section-item'><input id='section-659978ef-d5cc-4f44-98bd-aa0bd32076e6' class='xr-section-summary-in' type='checkbox'  checked><label for='section-659978ef-d5cc-4f44-98bd-aa0bd32076e6' class='xr-section-summary' >Attributes: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>cf_role :</span></dt><dd>face_areas</dd><dt><span>long_name :</span></dt><dd>Area of each face.</dd></dl></div></li></ul></div></div>"
+      ],
+      "text/plain": [
+       "<xarray.DataArray 'face_areas' (n_face: 5400)> Size: 43kB\n",
+       "array([0.00211174, 0.00211221, 0.00210723, ..., 0.00210723, 0.00211221,\n",
+       "       0.00211174])\n",
+       "Dimensions without coordinates: n_face\n",
+       "Attributes:\n",
+       "    cf_role:    face_areas\n",
+       "    long_name:  Area of each face."
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "ugrid.face_areas"
    ]
@@ -160,9 +1164,20 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 6,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "np.float64(12.566370614359112)"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "all_face_areas, all_face_jacobians = ugrid.compute_face_areas(\n",
     "    quadrature_rule=\"gaussian\", order=4\n",
@@ -180,9 +1195,22 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 7,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(np.float64(0.005033379360810386),\n",
+       " np.float64(3.1938185429680743e-10),\n",
+       " np.float64(6.039613253960852e-14))"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "actual_area = 4 * np.pi\n",
     "diff_t4_area = np.abs(t4_area - actual_area)\n",
@@ -205,34 +1233,93 @@
    "source": [
     "## 4. Calculate Area of a Single Triangle in Cartesian Coordinates\n",
     "\n",
-    "For this section, we create a single triangle face with 3 vertices. By default, in `uxarray`, we assume that the coordinate system is spherical (lat / lon), however if you want to use cartesian coordinates, you must pass through `latlon = False` into the `Grid` constructor.\n",
+    "For this section, we create a single triangle face with 3 vertices and plot it. By default, in `uxarray`, we assume that the coordinate system is spherical (lat / lon), however if you want to use cartesian coordinates, you must pass through `latlon = False` into the `Grid` constructor.\n",
     "\n",
     "Assume the units in meters - this is a big triangle!"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 8,
    "metadata": {
     "collapsed": false,
     "jupyter": {
      "outputs_hidden": false
     }
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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pqcHvXvD9u35nx87diyQMzX5xRdjL3s1bhkZcOcOODgUqjpSCZJtTrPJAZEkqdmcOXP48MMPMTU1pX///m9Nf//+fT799FM8PDxo2rRpgcvr1asXKSkpbNq0qTDVRVdXl127dlGjRg06duzIDz/8QGxsLEKIN+6NJJVPurq6tGvXjjZt2hAVFUVSUlKJ18HR0REDAwP++usvjhw5QmxsLO7u7qxateq1U40kSR2OHz8OwO3bt5k+fTq3b98ucB7vvguhoZBf0+nbty9+fn7s3r2bWbNmvTWvP/8Ee/ucgZYkSaVHDoikMqN9+/alXQW1qFOnDitXriQ5OZnPP/+c6OhooqKiSE5OzjPAePDgAbVr1yYyMrJQd2cAWrVqhZGREXFxcYWus6WlJSEhIbi7uzNx4kRq166NlZUVWlpa1K9fn6FDh7Jly5Z8X6spcatI9PT0WLx4MVlZWW/cRFLddu3axfLly/H390dfXx8dHR06duzIzJkz6dixY4nVQxPIdlc4YWFhjB07lrt37yr3tfLy8irQAjhGRuDhAbt25T2npaWFn58f7u7uxMfHk52dnev8q3GT0+XKD9nmNJscEEllxotpZppCoVBw584d6tSpg62tLZUrV8bCwoJOnToxYcIEhg8fTr169ZTpi7KCTd26dQkMDOTx48eFzsPU1JTt27cTGxvLwoULGTFiBN9//z29evVi8+bN+Pj45HvHSNPiVlE0b96catWq4efnVyJ7E126dAlPT0/8/f15/PgxAwcOxNraGhcXF1xdXYu9fE0j213hREZG8ujRI3x8fDh48CAKhYLGjRsXePqopycEBcE//+Q9N3LkSAwNDWndujUjRozIde7VuMkBUfkh25xmkwMiqcy4efNmaVdB7apXr67890cffcSMGTOwtrbm1KlTREZGMm3aNOWqcqmpqezYsaNQ5fj7+3P16lU8PDyUK4gVVtWqVZk1axZ+fn7861//wtfXF319fXx9fVHks0W7JsatorC1tWXx4sVkZ2dz4sSJPN9mq5ODgwMjRoxgwIABGBkZsW3bNv788888Hxgl1ch2VziDBg1i+/bt7Nixg549e9K2bVt+/vlnunbtWqB8LCzAxQX27897zsDAACEEUVFRhIaG5trv6OW4xcXB06dQu3ahL0cqQbLNaTY5IJKkYmRiYsL58+dxdnZm5cqVZGVl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",
+      "text/plain": [
+       "<Figure size 1000x600 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
    "source": [
+    "# Vertices\n",
     "verts = [\n",
-    "    [\n",
-    "        [0.57735027, -5.77350269e-01, -0.57735027],\n",
-    "        [0.57735027, 5.77350269e-01, -0.57735027],\n",
-    "        [-0.57735027, 5.77350269e-01, -0.57735027],\n",
-    "    ]\n",
+    "    [0.02974582, -0.74469018, 0.66674712],\n",
+    "    [0.1534193, -0.88744577, 0.43462917],\n",
+    "    [0.18363692, -0.72230586, 0.66674712],\n",
     "]\n",
     "\n",
-    "# load our vertices into a UXarray Grid object\n",
+    "# Load vertices into a UXarray Grid object\n",
     "vgrid = ux.open_grid(verts, latlon=False)\n",
     "\n",
-    "vgrid"
+    "# Create figure with Cartopy projection\n",
+    "fig, ax = plt.subplots(figsize=(10, 6), subplot_kw={\"projection\": ccrs.PlateCarree()})\n",
+    "\n",
+    "# Plot the grid points (nodes)\n",
+    "ax.scatter(\n",
+    "    vgrid.node_lon,\n",
+    "    vgrid.node_lat,\n",
+    "    transform=ccrs.PlateCarree(),\n",
+    "    color=\"red\",\n",
+    "    s=10,\n",
+    "    label=\"Grid Points\",\n",
+    ")\n",
+    "\n",
+    "# Add grid lines by connecting nodes using face-node connectivity\n",
+    "for face in vgrid.face_node_connectivity:\n",
+    "    face_nodes = face[face >= 0]  # Ignore invalid (-1) indices\n",
+    "    lons = vgrid.node_lon[face_nodes]\n",
+    "    lats = vgrid.node_lat[face_nodes]\n",
+    "    # Close the loop by adding the first point at the end\n",
+    "    lons = np.append(lons, lons[0])\n",
+    "    lats = np.append(lats, lats[0])\n",
+    "    ax.plot(\n",
+    "        lons, lats, transform=ccrs.PlateCarree(), color=\"blue\", linewidth=0.7, alpha=0.7\n",
+    "    )\n",
+    "\n",
+    "# Set extent to show only the USA\n",
+    "ax.set_extent([-130, -60, 24, 50], crs=ccrs.PlateCarree())\n",
+    "\n",
+    "# Add geographic features\n",
+    "ax.add_feature(cfeature.BORDERS, linestyle=\"--\", edgecolor=\"black\")  # Country borders\n",
+    "ax.add_feature(cfeature.COASTLINE, edgecolor=\"black\")  # Coastlines\n",
+    "ax.add_feature(cfeature.STATES, linestyle=\":\", edgecolor=\"gray\")  # US State boundaries\n",
+    "\n",
+    "# Add gridlines\n",
+    "gl = ax.gridlines(draw_labels=True, linestyle=\"--\", linewidth=0.5, color=\"gray\")\n",
+    "gl.right_labels = False\n",
+    "gl.top_labels = False\n",
+    "\n",
+    "plt.title(\n",
+    "    \"UXArray Grid of Just One Triangle (Chicago, Miami, Newburgh NY) Over the USA\"\n",
+    ")\n",
+    "plt.legend()\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Now compute the area of the above triangle with and without correction and compare, also use higher quadrature"
    ]
   },
   {
@@ -244,39 +1331,55 @@
      "outputs_hidden": false
     }
    },
-   "outputs": [],
-   "source": [
-    "vgrid.calculate_total_face_area()"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Percentage correction due to line of constant latitude being one of the edges: 1.2576%\n"
+     ]
+    }
+   ],
    "source": [
-    "Additionally, if you are using a unit other than meters, you can update the units as follows"
+    "area = vgrid.calculate_total_face_area()\n",
+    "corrected_area = vgrid.calculate_total_face_area(latitude_adjusted_area=True)\n",
+    "percentage_correction = (corrected_area - area) / corrected_area * 100\n",
+    "print(\n",
+    "    f\"Percentage correction due to line of constant latitude being one of the edges: {percentage_correction:.4f}%\"\n",
+    ")"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 10,
    "metadata": {
     "collapsed": false,
     "jupyter": {
      "outputs_hidden": false
     }
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Area calculated using Gaussian Quadrature Order 2:  0.022165612979675488\n",
+      "Percentage difference between gaussian area above and corrected area: 1.2599%\n"
+     ]
+    }
+   ],
    "source": [
-    "# Calculate the area of the triangle\n",
-    "area_gaussian = vgrid.calculate_total_face_area(quadrature_rule=\"gaussian\", order=5)\n",
-    "area_gaussian"
+    "# Calculate the area of the triangle with lower gaussian quadrature order\n",
+    "area_gaussian = vgrid.calculate_total_face_area(quadrature_rule=\"gaussian\", order=2)\n",
+    "print(\"Area calculated using Gaussian Quadrature Order 2: \", area_gaussian)\n",
+    "\n",
+    "print(\n",
+    "    \"Percentage difference between gaussian area above and corrected area: {:.4f}%\".format(\n",
+    "        (corrected_area - area_gaussian) / corrected_area * 100\n",
+    "    )\n",
+    ")"
    ]
   },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": []
-  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -288,7 +1391,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 11,
    "metadata": {
     "collapsed": false,
     "jupyter": {
@@ -342,18 +1445,112 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 12,
    "metadata": {
     "collapsed": false,
     "jupyter": {
      "outputs_hidden": false
     }
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {},
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.holoviews_exec.v0+json": "",
+      "text/html": [
+       "<div id='8de32327-1348-42d3-9afd-a1e75f03c302'>\n",
+       "  <div id=\"cd74ab83-d480-45d0-8033-f01026a62a3e\" data-root-id=\"8de32327-1348-42d3-9afd-a1e75f03c302\" style=\"display: contents;\"></div>\n",
+       "</div>\n",
+       "<script type=\"application/javascript\">(function(root) {\n",
+       "  var docs_json = {\"31f11f6f-ec95-424b-aeaa-3ded81a08f4d\":{\"version\":\"3.5.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"8de32327-1348-42d3-9afd-a1e75f03c302\",\"attributes\":{\"name\":\"Row00359\",\"tags\":[\"embedded\"],\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"1cb5dc42-843b-4d4c-8133-e297d4c46a61\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"80c5dc2f-7f38-4dc9-9131-2bacfd4c670f\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"dc4b387d-6fb7-4456-9e86-8e2082146529\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"be5c0fe7-e2d0-4cde-8475-568078b2b729\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/bundled/theme/native.css\"}}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"07ca43b8-4c47-44e0-b749-54283472ded6\",\"attributes\":{\"name\":\"HSpacer00363\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"1cb5dc42-843b-4d4c-8133-e297d4c46a61\"},{\"id\":\"dc4b387d-6fb7-4456-9e86-8e2082146529\"},{\"id\":\"be5c0fe7-e2d0-4cde-8475-568078b2b729\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"381483d9-3001-4468-9d3b-b60e9560b7bd\",\"attributes\":{\"width\":null,\"height\":null,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"dc492a62-f1b6-471f-98b6-f7a0c4219b56\",\"attributes\":{\"name\":\"Longitude\",\"tags\":[[[\"Longitude\",null]],[]],\"start\":66.500001,\"end\":168.49999900000012,\"reset_start\":66.500001,\"reset_end\":168.49999900000012}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"46071d06-3100-44e2-adec-bde8e9c8ea92\",\"attributes\":{\"name\":\"Latitude\",\"tags\":[[[\"Latitude\",null]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":7.058824529411765,\"end\":62.941175470588234,\"reset_start\":7.058824529411765,\"reset_end\":62.941175470588234}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"93c17734-0587-49c7-91cc-37bc8505e65f\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"29343b25-ab24-4f9d-9a7a-be5d5938f669\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"e6ed3403-73f7-49a0-8148-0368eec24c31\",\"attributes\":{\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"d87cceec-1e88-4d79-9932-abf0233835e5\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"438c7c99-6d0b-4310-985f-9bd617a8cc1b\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"a3c3dd68-867e-4848-ac89-f0aa1fc58a63\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"77810dcf-ee4c-4fe5-b6bb-f8b3133d5027\"},\"data\":{\"type\":\"map\",\"entries\":[[\"xs\",[{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAADAYkAAAAAAAABkQAAAAAAAwGJAAAAAAADgYEAAAAAAAEBfQAAAAAAA4GBAAAAAAADAYkA=\"},\"shape\":[7],\"dtype\":\"float64\",\"order\":\"little\"},{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAABAX0AAAAAAAOBgQAAAAAAAQF9AAAAAAACAW0AAAAAAAABZQAAAAAAAQFpAAAAAAABAX0A=\"},\"shape\":[7],\"dtype\":\"float64\",\"order\":\"little\"},{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAADAV0AAAAAAAEBaQAAAAAAAAFlAAAAAAABAVUAAAAAAAMBSQAAAAAAAQFVAAAAAAADAV0A=\"},\"shape\":[7],\"dtype\":\"float64\",\"order\":\"little\"}]],[\"ys\",[{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAJEAAAAAAAAA0QAAAAAAAAD5AAAAAAAAAPkAAAAAAAAA0QAAAAAAAACRAAAAAAAAAJEA=\"},\"shape\":[7],\"dtype\":\"float64\",\"order\":\"little\"},{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAANEAAAAAAAAA+QAAAAAAAAE5AAAAAAAAATkAAAAAAAAA+QAAAAAAAADRAAAAAAAAANEA=\"},\"shape\":[7],\"dtype\":\"float64\",\"order\":\"little\"},{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAJEAAAAAAAAA0QAAAAAAAAD5AAAAAAAAAPkAAAAAAAAA0QAAAAAAAACRAAAAAAAAAJEA=\"},\"shape\":[7],\"dtype\":\"float64\",\"order\":\"little\"}]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"778405fa-0d7d-4287-aece-f00cd5abc23f\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"bcca17d8-0fe4-4f64-8ade-15cfe841da5c\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"13eeaaec-2609-4fe8-8909-bc31c5c4d02a\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"}}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"31b121b0-55f0-4345-bf03-ddf9f0a04be5\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":1.0},\"line_width\":{\"type\":\"value\",\"value\":1},\"line_join\":{\"type\":\"value\",\"value\":\"bevel\"},\"line_cap\":{\"type\":\"value\",\"value\":\"butt\"},\"line_dash\":{\"type\":\"value\",\"value\":[]},\"line_dash_offset\":{\"type\":\"value\",\"value\":0}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"02049d56-b66e-475d-ba83-ceae15f6ca38\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"47918f40-4867-4f51-9db2-ee3190405de1\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"4850d8a3-2ea0-4f4e-b288-17bc9fbd4c1d\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"d48b9fdc-18fc-4e2a-adb5-bed15706a837\",\"attributes\":{\"renderers\":\"auto\",\"zoom_on_axis\":false}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"4368c450-282a-4306-9282-2b605f161b7b\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"af58bcc8-9fd7-4851-96fa-9a2e98a80268\",\"attributes\":{\"syncable\":false,\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"handles\":{\"type\":\"object\",\"name\":\"BoxInteractionHandles\",\"id\":\"03d9ee47-9f88-40af-9cdd-d8269b91dba1\",\"attributes\":{\"all\":{\"type\":\"object\",\"name\":\"AreaVisuals\",\"id\":\"ff668f4a-2d04-4cad-8658-21422176fb4e\",\"attributes\":{\"fill_color\":\"white\",\"hover_fill_color\":\"lightgray\"}}}}}},\"match_aspect\":true}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"4bac2388-b1ab-43e6-9395-2976e8317d70\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"4697df60-e9af-41b1-b8aa-96959c370996\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"5300183a-e004-4384-8ca5-d3145637424c\"}],\"active_drag\":{\"id\":\"4697df60-e9af-41b1-b8aa-96959c370996\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"b0140844-a3d4-43b6-93ad-e0f32a706227\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"7bea3fab-f7cb-4a11-b30f-d86bcffe0975\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"2ae21901-5d1e-4b6c-8af0-dac52065b7ae\"},\"axis_label\":\"Latitude\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"34335c00-637d-41b9-af55-6a13642e0f1c\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"7bbcdc94-700f-424f-ae07-5b6545ee4797\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"6b9bf34b-3b36-40a8-bc4a-5c3bc9eaa531\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"08bc9a93-610b-4afd-abcf-dfee0e7ea282\"},\"axis_label\":\"Longitude\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"b4f34f57-f67b-43e2-8c2d-38ce1e40819f\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"398795f7-5a74-4bbd-90a9-0754a3f3c2d0\",\"attributes\":{\"axis\":{\"id\":\"7bbcdc94-700f-424f-ae07-5b6545ee4797\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"b179211a-545c-4f4f-87b1-0b330fd21373\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"b0140844-a3d4-43b6-93ad-e0f32a706227\"},\"grid_line_color\":null}}],\"frame_width\":547,\"frame_height\":300,\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\",\"match_aspect\":true}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"bfdc3797-f2df-4cea-9db2-b38b1e6fb635\",\"attributes\":{\"name\":\"HSpacer00364\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"1cb5dc42-843b-4d4c-8133-e297d4c46a61\"},{\"id\":\"dc4b387d-6fb7-4456-9e86-8e2082146529\"},{\"id\":\"be5c0fe7-e2d0-4cde-8475-568078b2b729\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}}]}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"gap\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"TemplateEditor1\",\"properties\":[{\"name\":\"layout\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"ReactiveESM1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"JSComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"ReactComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"AnyWidgetComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"request_value1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"_synced\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_request_sync\",\"kind\":\"Any\",\"default\":0}]}]}};\n",
+       "  var render_items = [{\"docid\":\"31f11f6f-ec95-424b-aeaa-3ded81a08f4d\",\"roots\":{\"8de32327-1348-42d3-9afd-a1e75f03c302\":\"cd74ab83-d480-45d0-8033-f01026a62a3e\"},\"root_ids\":[\"8de32327-1348-42d3-9afd-a1e75f03c302\"]}];\n",
+       "  var docs = Object.values(docs_json)\n",
+       "  if (!docs) {\n",
+       "    return\n",
+       "  }\n",
+       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
+       "  async function embed_document(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    await Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
+       "    for (const render_item of render_items) {\n",
+       "      for (const root_id of render_item.root_ids) {\n",
+       "\tconst id_el = document.getElementById(root_id)\n",
+       "\tif (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {\n",
+       "\t  const root_el = id_el.children[0]\n",
+       "\t  root_el.id = root_el.id + '-rendered'\n",
+       "\t  for (const child of root_el.children) {\n",
+       "            // Ensure JupyterLab does not capture keyboard shortcuts\n",
+       "            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model\n",
+       "\t    child.setAttribute('data-lm-suppress-shortcuts', 'true')\n",
+       "\t  }\n",
+       "\t}\n",
+       "      }\n",
+       "    }\n",
+       "  }\n",
+       "  function get_bokeh(root) {\n",
+       "    if (root.Bokeh === undefined) {\n",
+       "      return null\n",
+       "    } else if (root.Bokeh.version !== py_version) {\n",
+       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
+       "\treturn null\n",
+       "      }\n",
+       "      return root.Bokeh.versions.get(py_version);\n",
+       "    } else if (root.Bokeh.version === py_version) {\n",
+       "      return root.Bokeh\n",
+       "    }\n",
+       "    return null\n",
+       "  }\n",
+       "  function is_loaded(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
+       "  }\n",
+       "  if (is_loaded(root)) {\n",
+       "    embed_document(root);\n",
+       "  } else {\n",
+       "    var attempts = 0;\n",
+       "    var timer = setInterval(function(root) {\n",
+       "      if (is_loaded(root)) {\n",
+       "        clearInterval(timer);\n",
+       "        embed_document(root);\n",
+       "      } else if (document.readyState == \"complete\") {\n",
+       "        attempts++;\n",
+       "        if (attempts > 200) {\n",
+       "          clearInterval(timer);\n",
+       "\t  var Bokeh = get_bokeh(root)\n",
+       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
+       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
+       "\t  } else {\n",
+       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
+       "\t    embed_document(root)\n",
+       "\t  }\n",
+       "        }\n",
+       "      }\n",
+       "    }, 25, root)\n",
+       "  }\n",
+       "})(window);</script>"
+      ],
+      "text/plain": [
+       ":Path   [Longitude,Latitude]"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {
+      "application/vnd.holoviews_exec.v0+json": {
+       "id": "8de32327-1348-42d3-9afd-a1e75f03c302"
+      }
+     },
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "verts_grid = ux.open_grid(faces_verts_ndarray, latlon=True)\n",
     "\n",
-    "verts_grid"
+    "verts_grid\n",
+    "verts_grid.plot()"
    ]
   },
   {
@@ -365,16 +1562,687 @@
      "outputs_hidden": false
     }
    },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Area: [0.14323746 0.25118746 0.12141312]\n",
+      "Corrected Area: [0.14354712 0.25042962 0.12190143]\n",
+      "Total Percentage Difference: [ 0.2161859  -0.30170321  0.40218883]\n"
+     ]
+    }
+   ],
+   "source": [
+    "area, _ = verts_grid.compute_face_areas()\n",
+    "print(\"Area:\", area)\n",
+    "corrected_area, _ = verts_grid.compute_face_areas(latitude_adjusted_area=True)\n",
+    "print(\"Corrected Area:\", corrected_area)\n",
+    "\n",
+    "total_percentage_difference = ((corrected_area - area) / area) * 100\n",
+    "print(\"Total Percentage Difference:\", total_percentage_difference)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## 6. Area Correction\n",
+    "\n",
+    "The correction, \\(A\\), is calculated using the following formula:"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "$A = 2 \\arctan\\left(\\frac{z(x_1 y_2 - x_2 y_1)}{x_1^2 + y_1^2 + x_1 x_2 + y_1 y_2} - \\frac{z (x_1 y_2 - x_2 y_1)}{x_1 x_2 + y_1 y_2}\\right)$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Where:\n",
+    "<ul>\n",
+    "\n",
+    "<li>(x<sub>1</sub>, y<sub>1</sub>, z) are the Cartesian coordinates of the first node.</li>\n",
+    "\n",
+    "<li>(x<sub>2</sub>, y<sub>2</sub>, z) are the Cartesian coordinates of the second node (note that the z coordinate is the same for both nodes).</li>\n",
+    "\n",
+    "</ul>\n",
+    "\n",
+    "### Assumptions:\n",
+    "- This formula assumes that the input coordinates $(x_1, y_1)$ and $(x_2, y_2)$ are normalized (i.e., they lie on the unit sphere).\n",
+    "\n",
+    "\n",
+    "### The following code:\n",
+    "- Creates a BIG spherical rectangle and calculates the exact area using the spherical excess formula.\n",
+    "- Plots the rectangle, it has two lines of constant lattitude.\n",
+    "- A mesh is formed with uxarray and area is calculated\n",
+    "- Area is again calculated with `latitude_adjusted_area` flag set to `True`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "The area of the spherical rectangle is approximately 1.132592 steradians\n",
+      "The area of the spherical rectangle is approximately 45971520.05 square kilometers\n"
+     ]
+    }
+   ],
+   "source": [
+    "def theoretical_spherical_rectangle_area(lons, lats, radius=1):\n",
+    "    \"\"\"\n",
+    "    Calculate the area of a spherical rectangle on a sphere.\n",
+    "\n",
+    "    Parameters:\n",
+    "        lons (np.ndarray): Longitudes of the rectangle's corners (in degrees).\n",
+    "        lats (np.ndarray): Latitudes of the rectangle's corners (in degrees).\n",
+    "        radius (float): Radius of the sphere (default is unit sphere).\n",
+    "\n",
+    "    Returns:\n",
+    "        float: Area of the spherical rectangle in steradians (or square units if radius is provided).\n",
+    "    \"\"\"\n",
+    "    # Convert degrees to radians\n",
+    "    lons_rad = np.radians(lons)\n",
+    "    lats_rad = np.radians(lats)\n",
+    "\n",
+    "    # Compute longitude and latitude differences\n",
+    "    delta_lambda = abs(lons_rad[0] - lons_rad[2])  # Assuming rectangular shape\n",
+    "    sin_phi_diff = abs(np.sin(lats_rad[0]) - np.sin(lats_rad[2]))\n",
+    "\n",
+    "    # Calculate area\n",
+    "    area = radius**2 * delta_lambda * sin_phi_diff\n",
+    "    return area\n",
+    "\n",
+    "\n",
+    "# Define nodes\n",
+    "node_lon = np.array([90.0, 90.0, 10.0, 10.0])  # Longitudes in degrees\n",
+    "node_lat = np.array([80.0, 10.0, 10.0, 80.0])  # Latitudes in degrees\n",
+    "\n",
+    "# Calculate the area\n",
+    "area_steradians = theoretical_spherical_rectangle_area(node_lon, node_lat)\n",
+    "print(\n",
+    "    f\"The area of the spherical rectangle is approximately {area_steradians:.6f} steradians\"\n",
+    ")\n",
+    "\n",
+    "# If Earth's radius is used (R ≈ 6371 km):\n",
+    "earth_radius_km = 6371\n",
+    "area_km2 = theoretical_spherical_rectangle_area(\n",
+    "    node_lon, node_lat, radius=earth_radius_km\n",
+    ")\n",
+    "print(\n",
+    "    f\"The area of the spherical rectangle is approximately {area_km2:.2f} square kilometers\"\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {},
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.holoviews_exec.v0+json": "",
+      "text/html": [
+       "<div id='1f142811-2f92-4258-80ce-6d150db41581'>\n",
+       "  <div id=\"b2943a31-afe7-4d54-a25d-3769ba18fc1b\" data-root-id=\"1f142811-2f92-4258-80ce-6d150db41581\" style=\"display: contents;\"></div>\n",
+       "</div>\n",
+       "<script type=\"application/javascript\">(function(root) {\n",
+       "  var docs_json = {\"2f4e5995-4e5c-42c8-9697-2269a3cefcfc\":{\"version\":\"3.5.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"1f142811-2f92-4258-80ce-6d150db41581\",\"attributes\":{\"name\":\"Row00413\",\"tags\":[\"embedded\"],\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"f4c95b49-579a-42a8-99e9-bf2dc721069d\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"0c9b5834-8599-4ea3-9665-57c62efce8f1\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"d53dce2d-075e-4ab4-a56f-c3b450f6bd57\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"395df580-0b2d-4428-81c5-bf6ec2aa0519\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/bundled/theme/native.css\"}}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"6958069c-a09a-41f4-aa4c-99cf535a2b13\",\"attributes\":{\"name\":\"HSpacer00417\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"f4c95b49-579a-42a8-99e9-bf2dc721069d\"},{\"id\":\"d53dce2d-075e-4ab4-a56f-c3b450f6bd57\"},{\"id\":\"395df580-0b2d-4428-81c5-bf6ec2aa0519\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"fcaee83c-1193-4349-8d6a-53fb29ff71ca\",\"attributes\":{\"width\":null,\"height\":null,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"255d8c5e-64ee-4ecc-a48b-adadfc444dd3\",\"attributes\":{\"name\":\"Longitude\",\"tags\":[[[\"Longitude\",null]],[]],\"start\":2.0000009999999975,\"end\":97.999999,\"reset_start\":2.0000009999999975,\"reset_end\":97.999999}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"464a758b-fd03-4ed8-a8a0-b18a62affe5f\",\"attributes\":{\"name\":\"Latitude\",\"tags\":[[[\"Latitude\",null]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":3.8750009999999993,\"end\":86.124999,\"reset_start\":3.8750009999999993,\"reset_end\":86.124999}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"76eb2ac6-7e46-42dd-a1c8-ecf851f175c0\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"4dc59d7a-e333-4451-a070-fcf68a3fcc09\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"ffa9bd93-d5c8-4020-b5d6-90efbe646314\",\"attributes\":{\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"c5445c56-639c-4e2d-b3cf-118b74b70cb9\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"a315e66f-dc66-44c5-b2d3-e54705ff5da8\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"686fb129-4b7d-45ac-a6ac-7232cfcd304c\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"98561e0d-6d8c-4ca9-bd85-84b1eba62add\"},\"data\":{\"type\":\"map\",\"entries\":[[\"xs\",[{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAACAVkAAAAAAAAAkQAAAAAAAACRAAAAAAACAVkAAAAAAAIBWQA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"}]],[\"ys\",[{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAVEAAAAAAAABUQAAAAAAAACRAAAAAAAAAJEAAAAAAAABUQA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"}]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"99f4354f-7867-4b71-ad43-39c961042020\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"6e63f092-57c9-4dd1-a8c5-0861fd9faefc\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"fb08b06d-9784-4234-a053-ac5409499799\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"}}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"1abb3d2e-82a3-4806-afa1-37c59dd7fd06\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":1.0},\"line_width\":{\"type\":\"value\",\"value\":1},\"line_join\":{\"type\":\"value\",\"value\":\"bevel\"},\"line_cap\":{\"type\":\"value\",\"value\":\"butt\"},\"line_dash\":{\"type\":\"value\",\"value\":[]},\"line_dash_offset\":{\"type\":\"value\",\"value\":0}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"48dfb8db-2f40-4e3c-a41a-d1b6191a53ca\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"d7104cd8-55fd-4977-9410-19b47004d578\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"7771f334-fdc6-4266-bb27-86926390f281\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"c0dcf63a-1ab8-4109-a569-9e796a18e3a3\",\"attributes\":{\"renderers\":\"auto\",\"zoom_on_axis\":false}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"60230be4-bf14-4de5-acfc-cbe62f20f1ad\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"e9b32626-bd2f-4f51-a122-116f5bb8fb7e\",\"attributes\":{\"syncable\":false,\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"handles\":{\"type\":\"object\",\"name\":\"BoxInteractionHandles\",\"id\":\"03d9ee47-9f88-40af-9cdd-d8269b91dba1\",\"attributes\":{\"all\":{\"type\":\"object\",\"name\":\"AreaVisuals\",\"id\":\"ff668f4a-2d04-4cad-8658-21422176fb4e\",\"attributes\":{\"fill_color\":\"white\",\"hover_fill_color\":\"lightgray\"}}}}}},\"match_aspect\":true}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"2861269c-5077-4074-9381-80c8c7e3aa3f\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"c73eacb3-f1ee-4a88-b6fa-021ed8ddb223\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"18ff0ced-1320-4c78-9205-06201c86ddcf\"}],\"active_drag\":{\"id\":\"c73eacb3-f1ee-4a88-b6fa-021ed8ddb223\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"a2f18d35-851d-484c-a56e-e8d46a87807b\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"bdbeeb56-45ba-49ac-8fa5-222df6c1052d\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"21ffdc3a-255c-4ca9-82a6-8359de7b4513\"},\"axis_label\":\"Latitude\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"219db2a3-e20a-4202-b0a3-830d4c48eac0\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"7ecc68e2-aa8c-45d5-9a42-d02f01041a52\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"3e606648-697b-4930-ae21-bae309c6fcf7\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"4070d431-34db-4660-925f-234afa1e5639\"},\"axis_label\":\"Longitude\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"46c21f6b-1ed1-416b-8d1a-95c8b1b44969\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"16d49241-3ddc-4e08-9228-ed9baeec791c\",\"attributes\":{\"axis\":{\"id\":\"7ecc68e2-aa8c-45d5-9a42-d02f01041a52\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"2e9cbcef-09a7-47b1-b695-add3d8e657fb\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"a2f18d35-851d-484c-a56e-e8d46a87807b\"},\"grid_line_color\":null}}],\"frame_width\":350,\"frame_height\":300,\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\",\"match_aspect\":true}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"181bc332-dc1e-4836-809c-27b56ef3023f\",\"attributes\":{\"name\":\"HSpacer00418\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"f4c95b49-579a-42a8-99e9-bf2dc721069d\"},{\"id\":\"d53dce2d-075e-4ab4-a56f-c3b450f6bd57\"},{\"id\":\"395df580-0b2d-4428-81c5-bf6ec2aa0519\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}}]}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"gap\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"TemplateEditor1\",\"properties\":[{\"name\":\"layout\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"ReactiveESM1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"JSComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"ReactComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"AnyWidgetComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"request_value1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"_synced\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_request_sync\",\"kind\":\"Any\",\"default\":0}]}]}};\n",
+       "  var render_items = [{\"docid\":\"2f4e5995-4e5c-42c8-9697-2269a3cefcfc\",\"roots\":{\"1f142811-2f92-4258-80ce-6d150db41581\":\"b2943a31-afe7-4d54-a25d-3769ba18fc1b\"},\"root_ids\":[\"1f142811-2f92-4258-80ce-6d150db41581\"]}];\n",
+       "  var docs = Object.values(docs_json)\n",
+       "  if (!docs) {\n",
+       "    return\n",
+       "  }\n",
+       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
+       "  async function embed_document(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    await Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
+       "    for (const render_item of render_items) {\n",
+       "      for (const root_id of render_item.root_ids) {\n",
+       "\tconst id_el = document.getElementById(root_id)\n",
+       "\tif (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {\n",
+       "\t  const root_el = id_el.children[0]\n",
+       "\t  root_el.id = root_el.id + '-rendered'\n",
+       "\t  for (const child of root_el.children) {\n",
+       "            // Ensure JupyterLab does not capture keyboard shortcuts\n",
+       "            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model\n",
+       "\t    child.setAttribute('data-lm-suppress-shortcuts', 'true')\n",
+       "\t  }\n",
+       "\t}\n",
+       "      }\n",
+       "    }\n",
+       "  }\n",
+       "  function get_bokeh(root) {\n",
+       "    if (root.Bokeh === undefined) {\n",
+       "      return null\n",
+       "    } else if (root.Bokeh.version !== py_version) {\n",
+       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
+       "\treturn null\n",
+       "      }\n",
+       "      return root.Bokeh.versions.get(py_version);\n",
+       "    } else if (root.Bokeh.version === py_version) {\n",
+       "      return root.Bokeh\n",
+       "    }\n",
+       "    return null\n",
+       "  }\n",
+       "  function is_loaded(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
+       "  }\n",
+       "  if (is_loaded(root)) {\n",
+       "    embed_document(root);\n",
+       "  } else {\n",
+       "    var attempts = 0;\n",
+       "    var timer = setInterval(function(root) {\n",
+       "      if (is_loaded(root)) {\n",
+       "        clearInterval(timer);\n",
+       "        embed_document(root);\n",
+       "      } else if (document.readyState == \"complete\") {\n",
+       "        attempts++;\n",
+       "        if (attempts > 200) {\n",
+       "          clearInterval(timer);\n",
+       "\t  var Bokeh = get_bokeh(root)\n",
+       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
+       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
+       "\t  } else {\n",
+       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
+       "\t    embed_document(root)\n",
+       "\t  }\n",
+       "        }\n",
+       "      }\n",
+       "    }, 25, root)\n",
+       "  }\n",
+       "})(window);</script>"
+      ],
+      "text/plain": [
+       ":Path   [Longitude,Latitude]"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {
+      "application/vnd.holoviews_exec.v0+json": {
+       "id": "1f142811-2f92-4258-80ce-6d150db41581"
+      }
+     },
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Define face-node connectivity and create/plot a uxarray object face\n",
+    "face_node_connectivity = np.array([[0, 1, 2, 3]])\n",
+    "\n",
+    "face = ux.Grid.from_topology(\n",
+    "    node_lon=node_lon,\n",
+    "    node_lat=node_lat,\n",
+    "    face_node_connectivity=face_node_connectivity,\n",
+    "    fill_value=-1,\n",
+    ")\n",
+    "face.plot(backend=\"bokeh\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "area_no_correction = face.compute_face_areas(quadrature_rule=\"gaussian\", order=8)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
    "outputs": [],
    "source": [
-    "area, jacobian = verts_grid.compute_face_areas()\n",
-    "area"
+    "corrected_area = face.compute_face_areas(\n",
+    "    quadrature_rule=\"gaussian\", order=8, latitude_adjusted_area=True\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "The percentage difference between the corrected and uncorrected areas is 3.73%\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Calculate the percentage difference between the corrected and uncorrected areas\n",
+    "percentage_difference = (\n",
+    "    (corrected_area[0][0] - area_no_correction[0][0]) / area_no_correction[0][0] * 100\n",
+    ")\n",
+    "\n",
+    "print(\n",
+    "    f\"The percentage difference between the corrected and uncorrected areas is {percentage_difference:.2f}%\"\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# 7. Demonstrate the Need for Area Correction During Zonal Averaging Calculations Etc.\n",
+    "\n",
+    "When performing zonal averaging, it is common practice to calculate the intersection of faces with lines of constant latitude and longitude. \n",
+    "\n",
+    "However, this approach can introduce small errors if the correct area adjustments are not applied. \n",
+    "\n",
+    "Below is a demonstration of the impact of such errors:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {},
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.holoviews_exec.v0+json": "",
+      "text/html": [
+       "<div id='80969a8a-e887-4f6c-88a6-e1d90104ff4a'>\n",
+       "  <div id=\"aba50e4e-6370-4072-8ebe-01e61497acc2\" data-root-id=\"80969a8a-e887-4f6c-88a6-e1d90104ff4a\" style=\"display: contents;\"></div>\n",
+       "</div>\n",
+       "<script type=\"application/javascript\">(function(root) {\n",
+       "  var docs_json = {\"a2877c35-af91-491b-a14e-eb526a9b1a14\":{\"version\":\"3.5.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"80969a8a-e887-4f6c-88a6-e1d90104ff4a\",\"attributes\":{\"name\":\"Row00467\",\"tags\":[\"embedded\"],\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"4ebb5d00-a76a-487e-a2f0-7dd6775c997c\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"a4d98948-37ca-49b3-b7c9-81abde3c9665\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"b9d82d89-0dd7-40f6-9603-1f9c6751d647\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"8fccc04c-0172-4fa2-a127-aa0dae860406\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/bundled/theme/native.css\"}}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"2a83163c-1452-440e-9212-506161a1224e\",\"attributes\":{\"name\":\"HSpacer00471\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"4ebb5d00-a76a-487e-a2f0-7dd6775c997c\"},{\"id\":\"b9d82d89-0dd7-40f6-9603-1f9c6751d647\"},{\"id\":\"8fccc04c-0172-4fa2-a127-aa0dae860406\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"aa74ced0-35ec-4091-8e82-e0e23ea69263\",\"attributes\":{\"width\":null,\"height\":null,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"f3ecd0ce-014a-45a9-b1e3-67071ceaf12f\",\"attributes\":{\"name\":\"Longitude\",\"tags\":[[[\"Longitude\",null]],[]],\"start\":-98.999999,\"end\":-81.000001,\"reset_start\":-98.999999,\"reset_end\":-81.000001}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"3fa580f2-75b7-420d-93c8-05782b326c88\",\"attributes\":{\"name\":\"Latitude\",\"tags\":[[[\"Latitude\",null]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":30.833334333333333,\"end\":36.16666566666667,\"reset_start\":30.833334333333333,\"reset_end\":36.16666566666667}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"952ce968-02a4-4732-8610-b82a179dd2dd\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"cac95ed5-41ed-41dc-8264-24ff5bb38e79\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"dca88e6f-b9b1-4f97-98cd-61cf7f95be52\",\"attributes\":{\"text\":\"Four Polygons With One Edge on a Line of Constant Latitude\",\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"5ccf059a-9cfb-41e0-baf9-5e652a22209e\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"aa1743e9-3b71-4751-a503-88cd6636108a\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"b1df4e4b-94b4-4497-b822-d38b145a86df\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"bb452a89-6ff7-4851-9847-3b4679c730bb\"},\"data\":{\"type\":\"map\",\"entries\":[[\"xs\",[{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAADAV8AAAAAAAGBYwAAAAAAAgFbAAAAAAACAVsAAAAAAAMBXwA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"},{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAACAVsAAAAAAAOBVwAAAAAAA8FTAAAAAAACAVsAAAAAAAIBWwA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"},{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAADwVMAAAAAAAKBUwAAAAAAAgFbAAAAAAACAVsAAAAAAAPBUwA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"},{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAACAVsAAAAAAACBXwAAAAAAAwFfAAAAAAACAVsAAAAAAAIBWwA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"}]],[\"ys\",[{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAQUAAAAAAAABAQAAAAAAAQD9AAAAAAAAAQUAAAAAAAABBQA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"},{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAABAP0AAAAAAAAA/QAAAAAAAAEFAAAAAAAAAQUAAAAAAAEA/QA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"},{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAQUAAAAAAAIBBQAAAAAAA4EFAAAAAAAAAQUAAAAAAAABBQA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"},{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAADgQUAAAAAAAABCQAAAAAAAAEFAAAAAAAAAQUAAAAAAAOBBQA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"}]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"3a9cf07d-3d9e-49f9-bf56-43785806082c\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"685da9f9-b000-4bd7-9a71-bf3cb6191666\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"57ec333a-ac5e-426c-8b8b-59cc87b1e474\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"}}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"764543bb-a16b-4287-bba9-446ad874fd6d\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":1.0},\"line_width\":{\"type\":\"value\",\"value\":1},\"line_join\":{\"type\":\"value\",\"value\":\"bevel\"},\"line_cap\":{\"type\":\"value\",\"value\":\"butt\"},\"line_dash\":{\"type\":\"value\",\"value\":[]},\"line_dash_offset\":{\"type\":\"value\",\"value\":0}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"9a8e9c9e-ba84-4279-9a05-7c5fe37a045a\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"d180ebc1-4da5-4936-8988-67a9959a7120\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"df4164cf-c65e-4461-ae80-4f76278ab877\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"050ca1c2-7341-47b4-be43-77176f926d09\",\"attributes\":{\"renderers\":\"auto\",\"zoom_on_axis\":false}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"8d84ea86-2a07-4b3f-9aaa-7f78433c75ed\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"7e931e50-515e-48a6-82dc-2dc7a11da0c1\",\"attributes\":{\"syncable\":false,\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"handles\":{\"type\":\"object\",\"name\":\"BoxInteractionHandles\",\"id\":\"03d9ee47-9f88-40af-9cdd-d8269b91dba1\",\"attributes\":{\"all\":{\"type\":\"object\",\"name\":\"AreaVisuals\",\"id\":\"ff668f4a-2d04-4cad-8658-21422176fb4e\",\"attributes\":{\"fill_color\":\"white\",\"hover_fill_color\":\"lightgray\"}}}}}},\"match_aspect\":true}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"90b1766d-bd71-46d1-8e09-44b265864e8d\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"8929936c-684e-4ebd-ad7d-e82d5e30089a\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"ccfbc29a-9689-4d75-ba51-9747f4cb4193\"}],\"active_drag\":{\"id\":\"8929936c-684e-4ebd-ad7d-e82d5e30089a\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"81987db9-34c7-4027-bb48-1f92256fec4a\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"9cfeaf04-99d8-4480-b4c7-96667849a431\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"cea1da35-a60e-4b67-80f3-3e7cd7f3e1c0\"},\"axis_label\":\"Latitude\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"04949d25-74bf-4be4-aacd-20fac13c2ae2\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"a3ca9d84-a40d-4403-bb32-8d1924f25f2d\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"f02f5aaa-ff1c-4037-b01b-fb550b1e0de6\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"47859abe-88c6-4bac-a7bf-08fe200c44e4\"},\"axis_label\":\"Longitude\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"af2ef4ba-fe02-412c-8cf6-45013b54158c\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"495fca82-f6d4-4b40-9a9f-350d18114c5a\",\"attributes\":{\"axis\":{\"id\":\"a3ca9d84-a40d-4403-bb32-8d1924f25f2d\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"49ca499c-cd52-4871-a942-a8cefd76a86f\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"81987db9-34c7-4027-bb48-1f92256fec4a\"},\"grid_line_color\":null}}],\"frame_width\":1012,\"frame_height\":300,\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\",\"match_aspect\":true}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"e9d0bd62-9bd4-4b53-87fe-c7afedb831b2\",\"attributes\":{\"name\":\"HSpacer00472\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"4ebb5d00-a76a-487e-a2f0-7dd6775c997c\"},{\"id\":\"b9d82d89-0dd7-40f6-9603-1f9c6751d647\"},{\"id\":\"8fccc04c-0172-4fa2-a127-aa0dae860406\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}}]}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"gap\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"TemplateEditor1\",\"properties\":[{\"name\":\"layout\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"ReactiveESM1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"JSComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"ReactComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"AnyWidgetComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"request_value1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"_synced\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_request_sync\",\"kind\":\"Any\",\"default\":0}]}]}};\n",
+       "  var render_items = [{\"docid\":\"a2877c35-af91-491b-a14e-eb526a9b1a14\",\"roots\":{\"80969a8a-e887-4f6c-88a6-e1d90104ff4a\":\"aba50e4e-6370-4072-8ebe-01e61497acc2\"},\"root_ids\":[\"80969a8a-e887-4f6c-88a6-e1d90104ff4a\"]}];\n",
+       "  var docs = Object.values(docs_json)\n",
+       "  if (!docs) {\n",
+       "    return\n",
+       "  }\n",
+       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
+       "  async function embed_document(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    await Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
+       "    for (const render_item of render_items) {\n",
+       "      for (const root_id of render_item.root_ids) {\n",
+       "\tconst id_el = document.getElementById(root_id)\n",
+       "\tif (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {\n",
+       "\t  const root_el = id_el.children[0]\n",
+       "\t  root_el.id = root_el.id + '-rendered'\n",
+       "\t  for (const child of root_el.children) {\n",
+       "            // Ensure JupyterLab does not capture keyboard shortcuts\n",
+       "            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model\n",
+       "\t    child.setAttribute('data-lm-suppress-shortcuts', 'true')\n",
+       "\t  }\n",
+       "\t}\n",
+       "      }\n",
+       "    }\n",
+       "  }\n",
+       "  function get_bokeh(root) {\n",
+       "    if (root.Bokeh === undefined) {\n",
+       "      return null\n",
+       "    } else if (root.Bokeh.version !== py_version) {\n",
+       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
+       "\treturn null\n",
+       "      }\n",
+       "      return root.Bokeh.versions.get(py_version);\n",
+       "    } else if (root.Bokeh.version === py_version) {\n",
+       "      return root.Bokeh\n",
+       "    }\n",
+       "    return null\n",
+       "  }\n",
+       "  function is_loaded(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
+       "  }\n",
+       "  if (is_loaded(root)) {\n",
+       "    embed_document(root);\n",
+       "  } else {\n",
+       "    var attempts = 0;\n",
+       "    var timer = setInterval(function(root) {\n",
+       "      if (is_loaded(root)) {\n",
+       "        clearInterval(timer);\n",
+       "        embed_document(root);\n",
+       "      } else if (document.readyState == \"complete\") {\n",
+       "        attempts++;\n",
+       "        if (attempts > 200) {\n",
+       "          clearInterval(timer);\n",
+       "\t  var Bokeh = get_bokeh(root)\n",
+       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
+       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
+       "\t  } else {\n",
+       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
+       "\t    embed_document(root)\n",
+       "\t  }\n",
+       "        }\n",
+       "      }\n",
+       "    }, 25, root)\n",
+       "  }\n",
+       "})(window);</script>"
+      ],
+      "text/plain": [
+       ":Path   [Longitude,Latitude]"
+      ]
+     },
+     "execution_count": 19,
+     "metadata": {
+      "application/vnd.holoviews_exec.v0+json": {
+       "id": "80969a8a-e887-4f6c-88a6-e1d90104ff4a"
+      }
+     },
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Define the latitude and longitude points\n",
+    "lon1, lon2, lon3, lon4 = -97.5, -87.5, -82.5, -92.5\n",
+    "lat1, lat2, lat3, lat4 = 32.0, 31.0, 35.0, 36.0\n",
+    "\n",
+    "# Define the rectangle center and midlines\n",
+    "rect_center_lon = -90\n",
+    "rect_center_lat = 34\n",
+    "\n",
+    "# Define intersection points computed with rect_center defined above\n",
+    "int_14 = (-95.0, 34.0)\n",
+    "int_23 = (-83.75, 34.0)\n",
+    "int_12 = (-90.0, 31.25)\n",
+    "int_34 = (-90.0, 35.75)\n",
+    "\n",
+    "# Define nodes for polygons\n",
+    "node_lon = np.array(\n",
+    "    [\n",
+    "        int_14[0],\n",
+    "        rect_center_lon,\n",
+    "        int_12[0],\n",
+    "        lon1,  # Polygon 1\n",
+    "        int_12[0],\n",
+    "        rect_center_lon,\n",
+    "        int_23[0],\n",
+    "        lon2,  # Polygon 2\n",
+    "        int_23[0],\n",
+    "        rect_center_lon,\n",
+    "        int_34[0],\n",
+    "        lon3,  # Polygon 3\n",
+    "        int_34[0],\n",
+    "        rect_center_lon,\n",
+    "        int_14[0],\n",
+    "        lon4,  # Polygon 4\n",
+    "    ]\n",
+    ")\n",
+    "\n",
+    "node_lat = np.array(\n",
+    "    [\n",
+    "        int_14[1],\n",
+    "        rect_center_lat,\n",
+    "        int_12[1],\n",
+    "        lat1,  # Polygon 1\n",
+    "        int_12[1],\n",
+    "        rect_center_lat,\n",
+    "        int_23[1],\n",
+    "        lat2,  # Polygon 2\n",
+    "        int_23[1],\n",
+    "        rect_center_lat,\n",
+    "        int_34[1],\n",
+    "        lat3,  # Polygon 3\n",
+    "        int_34[1],\n",
+    "        rect_center_lat,\n",
+    "        int_14[1],\n",
+    "        lat4,  # Polygon 4\n",
+    "    ]\n",
+    ")\n",
+    "\n",
+    "# Define face-node connectivity (each polygon is a separate face)\n",
+    "face_node_connectivity = np.array(\n",
+    "    [\n",
+    "        [0, 1, 2, 3],  # Polygon 1\n",
+    "        [4, 5, 6, 7],  # Polygon 2\n",
+    "        [8, 9, 10, 11],  # Polygon 3\n",
+    "        [12, 13, 14, 15],  # Polygon 4\n",
+    "    ]\n",
+    ")\n",
+    "\n",
+    "# Create UXArray grid for four small polygons\n",
+    "faces = ux.Grid.from_topology(\n",
+    "    node_lon=node_lon,\n",
+    "    node_lat=node_lat,\n",
+    "    face_node_connectivity=face_node_connectivity,\n",
+    "    fill_value=-1,\n",
+    ")\n",
+    "\n",
+    "# Compute the area of each polygon\n",
+    "small_areas = faces.compute_face_areas(quadrature_rule=\"gaussian\", order=4)\n",
+    "corrected_small_areas = faces.compute_face_areas(\n",
+    "    quadrature_rule=\"gaussian\", order=4, latitude_adjusted_area=True\n",
+    ")\n",
+    "faces.plot(\n",
+    "    backend=\"bokeh\", title=\"Four Polygons With One Edge on a Line of Constant Latitude\"\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "This table demonstrates that when intersections with lines of constant latitude and longitude are performed, small discrepancies in area calculation can occur. While these errors may seem minor for individual polygons, they can accumulate over a larger dataset, leading to noticeable inaccuracies in zonal averaging. Applying a correction ensures the computed areas remain consistent and accurate. It must be noted that the correction is positive for some faces and negative for others causing the total sum to remain the same.\n",
+    "| Polygon | Original Area | Corrected Area | Percentage Difference |\n",
+    "|---------|--------------|---------------|----------------------|\n",
+    "| Polygon 1 | 0.00387988 | 0.00385858 | -0.5488% |\n",
+    "| Polygon 2 | 0.00329592 | 0.00325432 | -1.2621% |\n",
+    "| Polygon 3 | 0.00245684 | 0.00249844 | 1.6932% |\n",
+    "| Polygon 4 | 0.00178601 | 0.00180730 | 1.1922% |\n",
+    "\n",
+    "### Total Area Comparison\n",
+    "\n",
+    "| Total Area (4 Polygons) | Corrected Total Area | Percentage Difference |\n",
+    "|-------------------------|---------------------|----------------------|\n",
+    "| 0.01141865 | 0.01141865 | 0.0000% |"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Area of each polygon:\n",
+      "Polygon 1: 0.00387988, Corrected Area: 0.00385858, Percentage Difference: -0.5488%\n",
+      "Polygon 2: 0.00329592, Corrected Area: 0.00325432, Percentage Difference: -1.2621%\n",
+      "Polygon 3: 0.00245684, Corrected Area: 0.00249844, Percentage Difference: 1.6932%\n",
+      "Polygon 4: 0.00178601, Corrected Area: 0.00180730, Percentage Difference: 1.1922%\n",
+      "Total area of 4 polygons: 0.01141865, Corrected total area of 4 polygons: 0.01141865, Percentage Diff: 0.0000%\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Print area of all 4 faces:\n",
+    "print(\"Area of each polygon:\")\n",
+    "for i, area in enumerate(small_areas[0]):\n",
+    "    print(\n",
+    "        f\"Polygon {i + 1}: {area:.8f}, Corrected Area: {corrected_small_areas[0][i]:.8f}, Percentage Difference: {(corrected_small_areas[0][i] - area) / area * 100:.4f}%\"\n",
+    "    )\n",
+    "\n",
+    "# Print the sum of areas of 4 faces is same for corrected and uncorrected areas\n",
+    "print(\n",
+    "    f\"Total area of 4 polygons: {small_areas[0].sum():.8f}, Corrected total area of 4 polygons: {corrected_small_areas[0].sum():.8f}, Percentage Diff: {(corrected_small_areas[0].sum() - small_areas[0].sum()) / small_areas[0].sum() * 100:.4f}%\"\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "In the code snippet below, we compute the area of larger faces that do not contain edges along lines of constant latitude and compare it with the sum of the areas calculated above. This comparison demonstrates the necessity of applying area corrections when a face includes an edge that follows a line of constant latitude. Without such corrections, errors in area estimation may arise, potentially impacting calculations that rely on precise spatial measurements."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Area of the face is: 0.01143206\n"
+     ]
+    },
+    {
+     "data": {},
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.holoviews_exec.v0+json": "",
+      "text/html": [
+       "<div id='088f8f0b-0d5d-4b68-a666-304b85261e0a'>\n",
+       "  <div id=\"f4039c75-c760-46a9-8942-5ea45935e82d\" data-root-id=\"088f8f0b-0d5d-4b68-a666-304b85261e0a\" style=\"display: contents;\"></div>\n",
+       "</div>\n",
+       "<script type=\"application/javascript\">(function(root) {\n",
+       "  var docs_json = {\"a6889334-33f6-410e-94c6-0d1a755883a0\":{\"version\":\"3.5.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"088f8f0b-0d5d-4b68-a666-304b85261e0a\",\"attributes\":{\"name\":\"Row01059\",\"tags\":[\"embedded\"],\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"500bb33c-ae9e-4a59-b028-0f2f8fc7da31\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"dfa9d924-c1ed-4599-b1a5-f3c33e183880\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"d1495c6c-6c8b-4230-87de-ca5946251795\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"9de1d383-4b11-4386-aa8f-8681420373bf\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.5.4/dist/bundled/theme/native.css\"}}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"07771dee-4ac5-421c-a7e9-ac6671c14be4\",\"attributes\":{\"name\":\"HSpacer01063\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"500bb33c-ae9e-4a59-b028-0f2f8fc7da31\"},{\"id\":\"d1495c6c-6c8b-4230-87de-ca5946251795\"},{\"id\":\"9de1d383-4b11-4386-aa8f-8681420373bf\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"80c84a6a-da45-4fc1-b8f5-16036681e0d3\",\"attributes\":{\"width\":null,\"height\":null,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"451b872f-d870-4b4a-a179-db5de694fbf6\",\"attributes\":{\"name\":\"Longitude\",\"tags\":[[[\"Longitude\",null]],[]],\"start\":-98.999999,\"end\":-81.000001,\"reset_start\":-98.999999,\"reset_end\":-81.000001}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"f272b931-70b4-4673-9a7a-edb69a82e5a4\",\"attributes\":{\"name\":\"Latitude\",\"tags\":[[[\"Latitude\",null]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":30.833334333333333,\"end\":36.16666566666667,\"reset_start\":30.833334333333333,\"reset_end\":36.16666566666667}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"69581b06-e12f-4757-8e11-2ff4859ffb67\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"be9637ef-7a45-4d6d-a6b5-caa798d4bb4c\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"a4ec9073-b873-4297-aff6-14a9464fcb0e\",\"attributes\":{\"text\":\"Large Face With No Edges on a Line of Constant Latitude (No Area Correction)\",\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"7bb13b58-9e9f-47fd-b216-ff498d54f88e\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"544a3563-a74d-444a-a879-5d5c1c99eade\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"0f4e6674-0d24-4114-b72a-de93b310e921\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"ef279065-2710-44eb-85c0-292df0164a40\"},\"data\":{\"type\":\"map\",\"entries\":[[\"xs\",[{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAABgWMAAAAAAAOBVwAAAAAAAoFTAAAAAAAAgV8AAAAAAAGBYwA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"}]],[\"ys\",[{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAQEAAAAAAAAA/QAAAAAAAgEFAAAAAAAAAQkAAAAAAAABAQA==\"},\"shape\":[5],\"dtype\":\"float64\",\"order\":\"little\"}]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"353f8753-ffec-415e-9f3c-412a327f5d21\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"4e2c4766-1689-4e4b-8a68-80524bfd23ba\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"7a8f9858-e26f-422a-bc55-423366e035e6\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"}}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"672c3c70-7a91-4456-bf3b-3d8a0125f4cf\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":1.0},\"line_width\":{\"type\":\"value\",\"value\":1},\"line_join\":{\"type\":\"value\",\"value\":\"bevel\"},\"line_cap\":{\"type\":\"value\",\"value\":\"butt\"},\"line_dash\":{\"type\":\"value\",\"value\":[]},\"line_dash_offset\":{\"type\":\"value\",\"value\":0}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"33c1472f-e6a3-4f71-944e-e917ef307404\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"54ca059a-414c-447a-9519-2f48f7b935bb\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"xs\":{\"type\":\"field\",\"field\":\"xs\"},\"ys\":{\"type\":\"field\",\"field\":\"ys\"},\"line_color\":{\"type\":\"value\",\"value\":\"#30a2da\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"e1b3d892-eba2-426e-93d5-2d2728ea8442\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"4a2dbfa1-52d5-42b6-8b7e-e82fdd376301\",\"attributes\":{\"renderers\":\"auto\",\"zoom_on_axis\":false}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"6ad6e4af-b214-4a1a-a78c-061879f0e3ca\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"b0b28d0e-89ef-46aa-852f-91ff61a5e84e\",\"attributes\":{\"syncable\":false,\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"handles\":{\"type\":\"object\",\"name\":\"BoxInteractionHandles\",\"id\":\"03d9ee47-9f88-40af-9cdd-d8269b91dba1\",\"attributes\":{\"all\":{\"type\":\"object\",\"name\":\"AreaVisuals\",\"id\":\"ff668f4a-2d04-4cad-8658-21422176fb4e\",\"attributes\":{\"fill_color\":\"white\",\"hover_fill_color\":\"lightgray\"}}}}}},\"match_aspect\":true}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"d0f70f5a-148b-46f9-a258-e7f383d344e4\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"2b958068-62a0-4bc3-90f9-57b8df2eda91\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"ea9e3bd4-7787-4e77-bd2c-75e97f3c9769\"}],\"active_drag\":{\"id\":\"2b958068-62a0-4bc3-90f9-57b8df2eda91\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"925958a8-e802-4bc2-a2f4-38c2e0b6cf7a\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"b2d2dab1-4492-4c2a-97f3-092b9227c412\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"d9e0efe2-9ba9-48f8-8b03-231fd582d43f\"},\"axis_label\":\"Latitude\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"a077ce99-66cb-43ef-8f4d-b2ff5969b8d6\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"b4644ed1-0636-4fb1-ae99-6afb3287b749\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"34605f9d-966d-4f69-8576-7002d1f7f907\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"483aebcb-b772-4db1-ac4b-d6dcda8fc086\"},\"axis_label\":\"Longitude\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"15878e74-70e7-4d8f-bd52-0062aa6f0c03\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"d810faca-725f-427e-bf62-fc396e6d2c5d\",\"attributes\":{\"axis\":{\"id\":\"b4644ed1-0636-4fb1-ae99-6afb3287b749\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"698d011a-e1b1-4053-aaa2-7a60074b56f5\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"925958a8-e802-4bc2-a2f4-38c2e0b6cf7a\"},\"grid_line_color\":null}}],\"frame_width\":1012,\"frame_height\":300,\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\",\"match_aspect\":true}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"a1d857b6-0db7-4aff-9ee0-04b240ef8f9b\",\"attributes\":{\"name\":\"HSpacer01064\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"500bb33c-ae9e-4a59-b028-0f2f8fc7da31\"},{\"id\":\"d1495c6c-6c8b-4230-87de-ca5946251795\"},{\"id\":\"9de1d383-4b11-4386-aa8f-8681420373bf\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}}]}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"gap\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"TemplateEditor1\",\"properties\":[{\"name\":\"layout\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"ReactiveESM1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"JSComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"ReactComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"AnyWidgetComponent1\",\"properties\":[{\"name\":\"esm_constants\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}}]},{\"type\":\"model\",\"name\":\"request_value1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"_synced\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_request_sync\",\"kind\":\"Any\",\"default\":0}]}]}};\n",
+       "  var render_items = [{\"docid\":\"a6889334-33f6-410e-94c6-0d1a755883a0\",\"roots\":{\"088f8f0b-0d5d-4b68-a666-304b85261e0a\":\"f4039c75-c760-46a9-8942-5ea45935e82d\"},\"root_ids\":[\"088f8f0b-0d5d-4b68-a666-304b85261e0a\"]}];\n",
+       "  var docs = Object.values(docs_json)\n",
+       "  if (!docs) {\n",
+       "    return\n",
+       "  }\n",
+       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
+       "  async function embed_document(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    await Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
+       "    for (const render_item of render_items) {\n",
+       "      for (const root_id of render_item.root_ids) {\n",
+       "\tconst id_el = document.getElementById(root_id)\n",
+       "\tif (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {\n",
+       "\t  const root_el = id_el.children[0]\n",
+       "\t  root_el.id = root_el.id + '-rendered'\n",
+       "\t  for (const child of root_el.children) {\n",
+       "            // Ensure JupyterLab does not capture keyboard shortcuts\n",
+       "            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model\n",
+       "\t    child.setAttribute('data-lm-suppress-shortcuts', 'true')\n",
+       "\t  }\n",
+       "\t}\n",
+       "      }\n",
+       "    }\n",
+       "  }\n",
+       "  function get_bokeh(root) {\n",
+       "    if (root.Bokeh === undefined) {\n",
+       "      return null\n",
+       "    } else if (root.Bokeh.version !== py_version) {\n",
+       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
+       "\treturn null\n",
+       "      }\n",
+       "      return root.Bokeh.versions.get(py_version);\n",
+       "    } else if (root.Bokeh.version === py_version) {\n",
+       "      return root.Bokeh\n",
+       "    }\n",
+       "    return null\n",
+       "  }\n",
+       "  function is_loaded(root) {\n",
+       "    var Bokeh = get_bokeh(root)\n",
+       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
+       "  }\n",
+       "  if (is_loaded(root)) {\n",
+       "    embed_document(root);\n",
+       "  } else {\n",
+       "    var attempts = 0;\n",
+       "    var timer = setInterval(function(root) {\n",
+       "      if (is_loaded(root)) {\n",
+       "        clearInterval(timer);\n",
+       "        embed_document(root);\n",
+       "      } else if (document.readyState == \"complete\") {\n",
+       "        attempts++;\n",
+       "        if (attempts > 200) {\n",
+       "          clearInterval(timer);\n",
+       "\t  var Bokeh = get_bokeh(root)\n",
+       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
+       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
+       "\t  } else {\n",
+       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
+       "\t    embed_document(root)\n",
+       "\t  }\n",
+       "        }\n",
+       "      }\n",
+       "    }, 25, root)\n",
+       "  }\n",
+       "})(window);</script>"
+      ],
+      "text/plain": [
+       ":Path   [Longitude,Latitude]"
+      ]
+     },
+     "execution_count": 28,
+     "metadata": {
+      "application/vnd.holoviews_exec.v0+json": {
+       "id": "088f8f0b-0d5d-4b68-a666-304b85261e0a"
+      }
+     },
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "large_node_lon = np.array([lon1, lon2, lon3, lon4])\n",
+    "large_node_lat = np.array([lat1, lat2, lat3, lat4])\n",
+    "large_face_node_connectivity = np.array([[0, 1, 2, 3]])\n",
+    "\n",
+    "large_face = ux.Grid.from_topology(\n",
+    "    node_lon=large_node_lon,\n",
+    "    node_lat=large_node_lat,\n",
+    "    face_node_connectivity=large_face_node_connectivity,\n",
+    "    fill_value=-1,\n",
+    ")\n",
+    "\n",
+    "large_area = large_face.compute_face_areas(quadrature_rule=\"gaussian\", order=4)\n",
+    "large_face.plot()\n",
+    "print(f\"Area of the face is: {large_area[0][0]:.8f}\")\n",
+    "large_face.plot(\n",
+    "    backend=\"bokeh\",\n",
+    "    title=\"Large Face With No Edges on a Line of Constant Latitude (No Area Correction)\",\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Percentage difference between large face and sum of small faces: 0.1173%\n"
+     ]
+    }
+   ],
+   "source": [
+    "percentage_diff = (large_area[0][0] - small_areas[0].sum()) / large_area[0][0] * 100\n",
+    "print(\n",
+    "    f\"Percentage difference between large face and sum of small faces: {percentage_diff:.4f}%\"\n",
+    ")"
    ]
   }
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Python 3 (ipykernel)",
+   "display_name": "uxarray_env3.12",
    "language": "python",
    "name": "python3"
   },
@@ -388,7 +2256,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.11.9"
+   "version": "3.12.7"
   }
  },
  "nbformat": 4,
diff --git a/uxarray/grid/area.py b/uxarray/grid/area.py
index b785f87f8..acfe768d7 100644
--- a/uxarray/grid/area.py
+++ b/uxarray/grid/area.py
@@ -3,11 +3,18 @@
 from uxarray.grid.coordinates import _lonlat_rad_to_xyz
 
 from numba import njit
+from uxarray.constants import ERROR_TOLERANCE
 
 
 @njit(cache=True)
 def calculate_face_area(
-    x, y, z, quadrature_rule="gaussian", order=4, coords_type="spherical"
+    x,
+    y,
+    z,
+    quadrature_rule="gaussian",
+    order=4,
+    coords_type="spherical",
+    latitude_adjusted_area=False,
 ):
     """Calculate area of a face on sphere.
 
@@ -35,6 +42,9 @@ def calculate_face_area(
     coords_type : str, optional
         coordinate type, default is spherical, can be cartesian also.
 
+    latitude_adjusted_area : bool, optional
+        If True, performs the check if any face consists of an edge that has constant latitude, modifies the area of that face by applying the correction term due to that edge. Default is False.
+
     Returns
     -------
     area : double
@@ -45,9 +55,9 @@ def calculate_face_area(
     order = order
 
     if quadrature_rule == "gaussian":
-        dG, dW = get_gauss_quadratureDG(order)
+        dG, dW = get_gauss_quadrature_dg(order)
     elif quadrature_rule == "triangular":
-        dG, dW = get_tri_quadratureDG(order)
+        dG, dW = get_tri_quadrature_dg(order)
     else:
         raise ValueError("Invalid quadrature rule, specify gaussian or triangular")
 
@@ -56,23 +66,31 @@ def calculate_face_area(
     # num triangles is two less than the total number of nodes
     num_triangles = num_nodes - 2
 
+    # TODO: Remove/clarify option for spherical coordinates
+    if coords_type == "spherical":
+        # Preallocate arrays for Cartesian coordinates
+        n_points = len(x)
+        x_cartesian = np.empty(n_points)
+        y_cartesian = np.empty(n_points)
+        z_cartesian = np.empty(n_points)
+
+        # Convert all points to Cartesian coordinates using an explicit loop
+        for i in range(n_points):
+            lon_rad = np.deg2rad(x[i])
+            lat_rad = np.deg2rad(y[i])
+            cartesian = _lonlat_rad_to_xyz(lon_rad, lat_rad)
+            x_cartesian[i], y_cartesian[i], z_cartesian[i] = cartesian
+
+        x, y, z = x_cartesian, y_cartesian, z_cartesian
+
     # Using tempestremap GridElements: https://github.com/ClimateGlobalChange/tempestremap/blob/master/src/GridElements.cpp
     # loop through all sub-triangles of face
+    total_correction = 0.0
     for j in range(0, num_triangles):
         node1 = np.array([x[0], y[0], z[0]], dtype=x.dtype)
         node2 = np.array([x[j + 1], y[j + 1], z[j + 1]], dtype=x.dtype)
         node3 = np.array([x[j + 2], y[j + 2], z[j + 2]], dtype=x.dtype)
 
-        if coords_type == "spherical":
-            node1 = _lonlat_rad_to_xyz(np.deg2rad(x[0]), np.deg2rad(y[0]))
-            node1 = np.asarray(node1)
-
-            node2 = _lonlat_rad_to_xyz(np.deg2rad(x[j + 1]), np.deg2rad(y[j + 1]))
-            node2 = np.asarray(node2)
-
-            node3 = _lonlat_rad_to_xyz(np.deg2rad(x[j + 2]), np.deg2rad(y[j + 2]))
-            node3 = np.asarray(node3)
-
         for p in range(len(dW)):
             if quadrature_rule == "gaussian":
                 for q in range(len(dW)):
@@ -92,9 +110,88 @@ def calculate_face_area(
                 area += dW[p] * jacobian
                 jacobian += jacobian
 
+    # check if the any edge is on the line of constant latitude
+    # which means we need to check edges for same z-coordinates and call area correction routine
+    correction = 0.0
+    # TODO: Make this work when latitude_adjusted_area is False and each edge has a flag that indicates if it is a constant latitude edge
+    if latitude_adjusted_area:
+        for i in range(num_nodes):
+            node1 = np.array([x[i], y[i], z[i]], dtype=x.dtype)
+            node2 = np.array(
+                [
+                    x[(i + 1) % num_nodes],
+                    y[(i + 1) % num_nodes],
+                    z[(i + 1) % num_nodes],
+                ],
+                dtype=x.dtype,
+            )
+            # Check if z-coordinates are approximately equal
+            if np.isclose(node1[2], node2[2], atol=ERROR_TOLERANCE):
+                if node1[2] == 0:
+                    # check if z-coordinates are 0 - Equator
+                    continue
+
+                # Check if the edge passes through a pole
+                passes_through_pole = edge_passes_through_pole(node1, node2)
+                if passes_through_pole:
+                    # Skip the edge if it passes through a pole
+                    continue
+
+                z_sign = np.sign(node1[2])
+                # Convert Cartesian coordinates to longitude
+                lon1 = np.arctan2(node1[1], node1[0])
+                lon2 = np.arctan2(node2[1], node2[0])
+                # Calculate the longitude difference in radians
+                lon_diff = lon2 - lon1
+                # Skip the edge if it spans more than 180 degrees of longitude
+                if abs(lon_diff) > np.pi:
+                    continue
+                else:
+                    # Calculate the correction term
+                    correction = area_correction(node1, node2)
+
+                # Check if the longitude is increasing in the northern hemisphere or decreasing in the southern hemisphere
+                if (z_sign > 0 and lon_diff > 0) or (z_sign < 0 and lon_diff < 0):
+                    correction = -correction
+
+                total_correction += correction
+
+    if total_correction != 0.0:
+        area += total_correction
+
     return area, jacobian
 
 
+@njit(cache=True)
+def edge_passes_through_pole(node1, node2):
+    """
+    Check if the edge passes through a pole.
+
+    Parameters:
+    - node1: first node of the edge (normalized).
+    - node2: second node of the edge (normalized).
+
+    Returns:
+    - bool: True if the edge passes through a pole, False otherwise.
+    """
+    # Calculate the normal vector to the plane defined by the origin, node1, and node2
+    n = np.cross(node1, node2)
+
+    # Check for numerical stability issues with the normal vector
+    if np.allclose(n, 0):
+        # Handle cases where the cross product is near zero, such as when nodes are nearly identical or opposite
+        return False
+
+    # North and South Pole vectors
+    p_north = np.array([0.0, 0.0, 1.0])
+    p_south = np.array([0.0, 0.0, -1.0])
+
+    # Check if the normal vector is orthogonal to either pole
+    return np.isclose(np.dot(n, p_north), 0, atol=ERROR_TOLERANCE) or np.isclose(
+        np.dot(n, p_south), 0, atol=ERROR_TOLERANCE
+    )
+
+
 @njit(cache=True)
 def get_all_face_area_from_coords(
     x,
@@ -106,6 +203,7 @@ def get_all_face_area_from_coords(
     quadrature_rule="triangular",
     order=4,
     coords_type="spherical",
+    latitude_adjusted_area=False,
 ):
     """Given coords, connectivity and other area calculation params, this
     routine loop over all faces and return an numpy array with areas of each
@@ -137,10 +235,17 @@ def get_all_face_area_from_coords(
     coords_type : str, optional
         coordinate type, default is spherical, can be cartesian also.
 
+    latitude_adjusted_area : bool, optional
+        If True, performs the check if any face consists of an edge that has constant latitude, modifies the area of that face by applying the correction term due to that edge. Default is False.
+
     Returns
     -------
-    area of all faces : ndarray
+    area and jacobian of all faces : ndarray, ndarray
     """
+    # this casting helps to prevent the type mismatch
+    x = np.asarray(x, dtype=np.float64)
+    y = np.asarray(y, dtype=np.float64)
+    z = np.asarray(z, dtype=np.float64)
 
     n_face, n_max_face_nodes = face_nodes.shape
 
@@ -161,7 +266,13 @@ def get_all_face_area_from_coords(
 
         # After getting all the nodes of a face assembled call the  cal. face area routine
         face_area, face_jacobian = calculate_face_area(
-            face_x, face_y, face_z, quadrature_rule, order, coords_type
+            face_x,
+            face_y,
+            face_z,
+            quadrature_rule,
+            order,
+            coords_type,
+            latitude_adjusted_area,
         )
         # store current face area
         area[face_idx] = face_area
@@ -171,7 +282,38 @@ def get_all_face_area_from_coords(
 
 
 @njit(cache=True)
-def calculate_spherical_triangle_jacobian(node1, node2, node3, dA, dB):
+def area_correction(node1, node2):
+    """
+    Calculate the area correction A using the given formula.
+
+    Parameters:
+    - node1: first node of the edge (normalized).
+    - node2: second node of the edge (normalized).
+    - z: z-coordinate (shared by both points and part of the formula, normalized).
+
+    Returns:
+    - A: correction term of the area, when one of the edges is a line of constant latitude
+    """
+    x1, y1, z = node1
+    x2, y2, _ = node2
+
+    # Calculate terms
+    term1 = x1 * y2 - x2 * y1
+    den2 = x1 * x2 + y1 * y2
+    den1 = x1**2 + y1**2 + den2
+
+    # Compute angles using arctan2
+    angle1 = np.arctan2(z * term1, den1)
+    angle2 = np.arctan2(term1, den2)
+
+    # Compute A
+    A = np.abs(2 * angle1 - z * angle2)
+
+    return A
+
+
+@njit(cache=True)
+def calculate_spherical_triangle_jacobian(node1, node2, node3, d_a, d_b):
     """Calculate Jacobian of a spherical triangle. This is a helper function
     for calculating face area.
 
@@ -186,82 +328,82 @@ def calculate_spherical_triangle_jacobian(node1, node2, node3, dA, dB):
     node3 : list, required
         Third node of the triangle
 
-    dA : float, required
+    d_a : float, required
         quadrature point
 
-    dB : float, required
+    d_b : float, required
         quadrature point
 
     Returns
     -------
     jacobian : float
     """
-    dF = np.array(
+    d_f = np.array(
         [
-            (1.0 - dB) * ((1.0 - dA) * node1[0] + dA * node2[0]) + dB * node3[0],
-            (1.0 - dB) * ((1.0 - dA) * node1[1] + dA * node2[1]) + dB * node3[1],
-            (1.0 - dB) * ((1.0 - dA) * node1[2] + dA * node2[2]) + dB * node3[2],
+            (1.0 - d_b) * ((1.0 - d_a) * node1[0] + d_a * node2[0]) + d_b * node3[0],
+            (1.0 - d_b) * ((1.0 - d_a) * node1[1] + d_a * node2[1]) + d_b * node3[1],
+            (1.0 - d_b) * ((1.0 - d_a) * node1[2] + d_a * node2[2]) + d_b * node3[2],
         ]
     )
 
-    dDaF = np.array(
+    d_da_f = np.array(
         [
-            (1.0 - dB) * (node2[0] - node1[0]),
-            (1.0 - dB) * (node2[1] - node1[1]),
-            (1.0 - dB) * (node2[2] - node1[2]),
+            (1.0 - d_b) * (node2[0] - node1[0]),
+            (1.0 - d_b) * (node2[1] - node1[1]),
+            (1.0 - d_b) * (node2[2] - node1[2]),
         ]
     )
 
-    dDbF = np.array(
+    d_db_f = np.array(
         [
-            -(1.0 - dA) * node1[0] - dA * node2[0] + node3[0],
-            -(1.0 - dA) * node1[1] - dA * node2[1] + node3[1],
-            -(1.0 - dA) * node1[2] - dA * node2[2] + node3[2],
+            -(1.0 - d_a) * node1[0] - d_a * node2[0] + node3[0],
+            -(1.0 - d_a) * node1[1] - d_a * node2[1] + node3[1],
+            -(1.0 - d_a) * node1[2] - d_a * node2[2] + node3[2],
         ]
     )
 
-    dInvR = 1.0 / np.sqrt(dF[0] * dF[0] + dF[1] * dF[1] + dF[2] * dF[2])
+    d_inv_r = 1.0 / np.sqrt(d_f[0] * d_f[0] + d_f[1] * d_f[1] + d_f[2] * d_f[2])
 
-    dDaG = np.array(
+    d_da_g = np.array(
         [
-            dDaF[0] * (dF[1] * dF[1] + dF[2] * dF[2])
-            - dF[0] * (dDaF[1] * dF[1] + dDaF[2] * dF[2]),
-            dDaF[1] * (dF[0] * dF[0] + dF[2] * dF[2])
-            - dF[1] * (dDaF[0] * dF[0] + dDaF[2] * dF[2]),
-            dDaF[2] * (dF[0] * dF[0] + dF[1] * dF[1])
-            - dF[2] * (dDaF[0] * dF[0] + dDaF[1] * dF[1]),
+            d_da_f[0] * (d_f[1] * d_f[1] + d_f[2] * d_f[2])
+            - d_f[0] * (d_da_f[1] * d_f[1] + d_da_f[2] * d_f[2]),
+            d_da_f[1] * (d_f[0] * d_f[0] + d_f[2] * d_f[2])
+            - d_f[1] * (d_da_f[0] * d_f[0] + d_da_f[2] * d_f[2]),
+            d_da_f[2] * (d_f[0] * d_f[0] + d_f[1] * d_f[1])
+            - d_f[2] * (d_da_f[0] * d_f[0] + d_da_f[1] * d_f[1]),
         ]
     )
 
-    dDbG = np.array(
+    d_db_g = np.array(
         [
-            dDbF[0] * (dF[1] * dF[1] + dF[2] * dF[2])
-            - dF[0] * (dDbF[1] * dF[1] + dDbF[2] * dF[2]),
-            dDbF[1] * (dF[0] * dF[0] + dF[2] * dF[2])
-            - dF[1] * (dDbF[0] * dF[0] + dDbF[2] * dF[2]),
-            dDbF[2] * (dF[0] * dF[0] + dF[1] * dF[1])
-            - dF[2] * (dDbF[0] * dF[0] + dDbF[1] * dF[1]),
+            d_db_f[0] * (d_f[1] * d_f[1] + d_f[2] * d_f[2])
+            - d_f[0] * (d_db_f[1] * d_f[1] + d_db_f[2] * d_f[2]),
+            d_db_f[1] * (d_f[0] * d_f[0] + d_f[2] * d_f[2])
+            - d_f[1] * (d_db_f[0] * d_f[0] + d_db_f[2] * d_f[2]),
+            d_db_f[2] * (d_f[0] * d_f[0] + d_f[1] * d_f[1])
+            - d_f[2] * (d_db_f[0] * d_f[0] + d_db_f[1] * d_f[1]),
         ]
     )
 
-    dDenomTerm = dInvR * dInvR * dInvR
+    d_denom_term = d_inv_r * d_inv_r * d_inv_r
 
-    dDaG *= dDenomTerm
-    dDbG *= dDenomTerm
+    d_da_g *= d_denom_term
+    d_db_g *= d_denom_term
 
     #  Cross product gives local Jacobian
-    nodeCross = np.cross(dDaG, dDbG)
-    dJacobian = np.sqrt(
-        nodeCross[0] * nodeCross[0]
-        + nodeCross[1] * nodeCross[1]
-        + nodeCross[2] * nodeCross[2]
+    node_cross = np.cross(d_da_g, d_db_g)
+    d_jacobian = np.sqrt(
+        node_cross[0] * node_cross[0]
+        + node_cross[1] * node_cross[1]
+        + node_cross[2] * node_cross[2]
     )
 
-    return dJacobian
+    return d_jacobian
 
 
 @njit(cache=True)
-def calculate_spherical_triangle_jacobian_barycentric(node1, node2, node3, dA, dB):
+def calculate_spherical_triangle_jacobian_barycentric(node1, node2, node3, d_a, d_b):
     """Calculate Jacobian of a spherical triangle. This is a helper function
     for calculating face area.
 
@@ -276,119 +418,123 @@ def calculate_spherical_triangle_jacobian_barycentric(node1, node2, node3, dA, d
     node3 : list, required
         Third node of the triangle
 
-    dA : float, required
+    d_a : float, required
         first component of barycentric coordinates of quadrature point
 
-    dB : float, required
+    d_b : float, required
         second component of barycentric coordinates of quadrature point
 
     Returns
     -------
     jacobian : float
     """
-
-    dF = np.array(
+    # Calculate the position vector d_f
+    d_f = np.array(
         [
-            dA * node1[0] + dB * node2[0] + (1.0 - dA - dB) * node3[0],
-            dA * node1[1] + dB * node2[1] + (1.0 - dA - dB) * node3[1],
-            dA * node1[2] + dB * node2[2] + (1.0 - dA - dB) * node3[2],
+            d_a * node1[0] + d_b * node2[0] + (1.0 - d_a - d_b) * node3[0],
+            d_a * node1[1] + d_b * node2[1] + (1.0 - d_a - d_b) * node3[1],
+            d_a * node1[2] + d_b * node2[2] + (1.0 - d_a - d_b) * node3[2],
         ]
     )
 
-    dDaF = np.array([node1[0] - node3[0], node1[1] - node3[1], node1[2] - node3[2]])
-
-    dDbF = np.array([node2[0] - node3[0], node2[1] - node3[1], node2[2] - node3[2]])
+    # Calculate the gradients d_da_f and d_db_f
+    d_da_f = np.array([node1[0] - node3[0], node1[1] - node3[1], node1[2] - node3[2]])
+    d_db_f = np.array([node2[0] - node3[0], node2[1] - node3[1], node2[2] - node3[2]])
 
-    dInvR = 1.0 / np.sqrt(dF[0] * dF[0] + dF[1] * dF[1] + dF[2] * dF[2])
+    # Calculate the inverse radius
+    d_inv_r = 1.0 / np.sqrt(d_f[0] * d_f[0] + d_f[1] * d_f[1] + d_f[2] * d_f[2])
 
-    dDaG = np.array(
+    # Calculate the gradients d_da_g and d_db_g
+    d_da_g = np.array(
         [
-            dDaF[0] * (dF[1] * dF[1] + dF[2] * dF[2])
-            - dF[0] * (dDaF[1] * dF[1] + dDaF[2] * dF[2]),
-            dDaF[1] * (dF[0] * dF[0] + dF[2] * dF[2])
-            - dF[1] * (dDaF[0] * dF[0] + dDaF[2] * dF[2]),
-            dDaF[2] * (dF[0] * dF[0] + dF[1] * dF[1])
-            - dF[2] * (dDaF[0] * dF[0] + dDaF[1] * dF[1]),
+            d_da_f[0] * (d_f[1] * d_f[1] + d_f[2] * d_f[2])
+            - d_f[0] * (d_da_f[1] * d_f[1] + d_da_f[2] * d_f[2]),
+            d_da_f[1] * (d_f[0] * d_f[0] + d_f[2] * d_f[2])
+            - d_f[1] * (d_da_f[0] * d_f[0] + d_da_f[2] * d_f[2]),
+            d_da_f[2] * (d_f[0] * d_f[0] + d_f[1] * d_f[1])
+            - d_f[2] * (d_da_f[0] * d_f[0] + d_da_f[1] * d_f[1]),
         ]
     )
 
-    dDbG = np.array(
+    d_db_g = np.array(
         [
-            dDbF[0] * (dF[1] * dF[1] + dF[2] * dF[2])
-            - dF[0] * (dDbF[1] * dF[1] + dDbF[2] * dF[2]),
-            dDbF[1] * (dF[0] * dF[0] + dF[2] * dF[2])
-            - dF[1] * (dDbF[0] * dF[0] + dDbF[2] * dF[2]),
-            dDbF[2] * (dF[0] * dF[0] + dF[1] * dF[1])
-            - dF[2] * (dDbF[0] * dF[0] + dDbF[1] * dF[1]),
+            d_db_f[0] * (d_f[1] * d_f[1] + d_f[2] * d_f[2])
+            - d_f[0] * (d_db_f[1] * d_f[1] + d_db_f[2] * d_f[2]),
+            d_db_f[1] * (d_f[0] * d_f[0] + d_f[2] * d_f[2])
+            - d_f[1] * (d_db_f[0] * d_f[0] + d_db_f[2] * d_f[2]),
+            d_db_f[2] * (d_f[0] * d_f[0] + d_f[1] * d_f[1])
+            - d_f[2] * (d_db_f[0] * d_f[0] + d_db_f[1] * d_f[1]),
         ]
     )
 
-    dDenomTerm = dInvR * dInvR * dInvR
+    # Calculate the denominator term
+    d_denom_term = d_inv_r * d_inv_r * d_inv_r
 
-    dDaG *= dDenomTerm
-    dDbG *= dDenomTerm
+    # Scale the gradients
+    d_da_g *= d_denom_term
+    d_db_g *= d_denom_term
 
-    #  Cross product gives local Jacobian
-    nodeCross = np.cross(dDaG, dDbG)
-    dJacobian = np.sqrt(
-        nodeCross[0] * nodeCross[0]
-        + nodeCross[1] * nodeCross[1]
-        + nodeCross[2] * nodeCross[2]
+    # Calculate the cross product
+    node_cross = np.cross(d_da_g, d_db_g)
+
+    # Calculate the Jacobian
+    d_jacobian = np.sqrt(
+        node_cross[0] * node_cross[0]
+        + node_cross[1] * node_cross[1]
+        + node_cross[2] * node_cross[2]
     )
 
-    return 0.5 * dJacobian
+    return 0.5 * d_jacobian
 
 
 @njit(cache=True)
-def get_gauss_quadratureDG(nCount):
+def get_gauss_quadrature_dg(n_count):
     """Gauss Quadrature Points for integration.
 
     Parameters
     ----------
-    nCount : int, required
+    n_count : int, required
          Degree of quadrature points required, supports: 1 to 10.
 
     Returns
     -------
-        dG : double
-            numpy array of size ncount, quadrature points. Scaled before returning.
-        dW : double
-            numpy array of size ncount x 3, weights. Scaled before returning.
+        d_g : double
+            numpy array of size n_count, quadrature points. Scaled before returning.
+        d_w : double
+            numpy array of size n_count x 3, weights. Scaled before returning.
 
     Raises
     ------
        RuntimeError: Invalid degree
     """
     # Degree 1
-    if nCount == 1:
-        dG = np.array([[0.0]])
-        dW = np.array([+2.0])
+    if n_count == 1:
+        d_g = np.array([[0.0]])
+        d_w = np.array([2.0])
 
     # Degree 2
-    elif nCount == 2:
-        dG = np.array([[-0.5773502691896257, +0.5773502691896257]])
-        dW = np.array([+1.0, +1.0])
+    elif n_count == 2:
+        d_g = np.array([[-0.5773502691896257, 0.5773502691896257]])
+        d_w = np.array([1.0, 1.0])
 
     # Degree 3
-    elif nCount == 3:
-        dG = np.array([[-0.7745966692414834, 0.0, +0.7745966692414834]])
-
-        dW = np.array([+0.5555555555555556, +0.8888888888888888, +0.5555555555555556])
+    elif n_count == 3:
+        d_g = np.array([[-0.7745966692414834, 0.0, 0.7745966692414834]])
+        d_w = np.array([0.5555555555555556, 0.8888888888888888, 0.5555555555555556])
 
     # Degree 4
-    elif nCount == 4:
-        dG = np.array(
+    elif n_count == 4:
+        d_g = np.array(
             [
                 [
                     -0.8611363115940526,
                     -0.3399810435848563,
-                    +0.3399810435848563,
-                    +0.8611363115940526,
+                    0.3399810435848563,
+                    0.8611363115940526,
                 ]
             ]
         )
-
-        dW = np.array(
+        d_w = np.array(
             [
                 0.3478548451374538,
                 0.6521451548625461,
@@ -398,20 +544,19 @@ def get_gauss_quadratureDG(nCount):
         )
 
     # Degree 5
-    elif nCount == 5:
-        dG = np.array(
+    elif n_count == 5:
+        d_g = np.array(
             [
                 [
                     -0.9061798459386640,
                     -0.5384693101056831,
                     0.0,
-                    +0.5384693101056831,
-                    +0.9061798459386640,
+                    0.5384693101056831,
+                    0.9061798459386640,
                 ]
             ]
         )
-
-        dW = np.array(
+        d_w = np.array(
             [
                 0.2369268850561891,
                 0.4786286704993665,
@@ -422,21 +567,20 @@ def get_gauss_quadratureDG(nCount):
         )
 
     # Degree 6
-    elif nCount == 6:
-        dG = np.array(
+    elif n_count == 6:
+        d_g = np.array(
             [
                 [
                     -0.9324695142031521,
                     -0.6612093864662645,
                     -0.2386191860831969,
-                    +0.2386191860831969,
-                    +0.6612093864662645,
-                    +0.9324695142031521,
+                    0.2386191860831969,
+                    0.6612093864662645,
+                    0.9324695142031521,
                 ]
             ]
         )
-
-        dW = np.array(
+        d_w = np.array(
             [
                 0.1713244923791704,
                 0.3607615730481386,
@@ -448,22 +592,21 @@ def get_gauss_quadratureDG(nCount):
         )
 
     # Degree 7
-    elif nCount == 7:
-        dG = np.array(
+    elif n_count == 7:
+        d_g = np.array(
             [
                 [
                     -0.9491079123427585,
                     -0.7415311855993945,
                     -0.4058451513773972,
                     0.0,
-                    +0.4058451513773972,
-                    +0.7415311855993945,
-                    +0.9491079123427585,
+                    0.4058451513773972,
+                    0.7415311855993945,
+                    0.9491079123427585,
                 ]
             ]
         )
-
-        dW = np.array(
+        d_w = np.array(
             [
                 0.1294849661688697,
                 0.2797053914892766,
@@ -476,23 +619,22 @@ def get_gauss_quadratureDG(nCount):
         )
 
     # Degree 8
-    elif nCount == 8:
-        dG = np.array(
+    elif n_count == 8:
+        d_g = np.array(
             [
                 [
                     -0.9602898564975363,
                     -0.7966664774136267,
                     -0.5255324099163290,
                     -0.1834346424956498,
-                    +0.1834346424956498,
-                    +0.5255324099163290,
-                    +0.7966664774136267,
-                    +0.9602898564975363,
+                    0.1834346424956498,
+                    0.5255324099163290,
+                    0.7966664774136267,
+                    0.9602898564975363,
                 ]
             ]
         )
-
-        dW = np.array(
+        d_w = np.array(
             [
                 0.1012285362903763,
                 0.2223810344533745,
@@ -506,8 +648,8 @@ def get_gauss_quadratureDG(nCount):
         )
 
     # Degree 9
-    elif nCount == 9:
-        dG = np.array(
+    elif n_count == 9:
+        d_g = np.array(
             [
                 [
                     -1.0,
@@ -515,15 +657,14 @@ def get_gauss_quadratureDG(nCount):
                     -0.677186279510738,
                     -0.363117463826178,
                     0.0,
-                    +0.363117463826178,
-                    +0.677186279510738,
-                    +0.899757995411460,
-                    +1.0,
+                    0.363117463826178,
+                    0.677186279510738,
+                    0.899757995411460,
+                    1.0,
                 ]
             ]
         )
-
-        dW = np.array(
+        d_w = np.array(
             [
                 0.0277777777777778,
                 0.1654953615608055,
@@ -538,8 +679,8 @@ def get_gauss_quadratureDG(nCount):
         )
 
     # Degree 10
-    elif nCount == 10:
-        dG = np.array(
+    elif n_count == 10:
+        d_g = np.array(
             [
                 [
                     -0.9739065285171717,
@@ -547,16 +688,15 @@ def get_gauss_quadratureDG(nCount):
                     -0.6794095682990244,
                     -0.4333953941292472,
                     -0.1488743389816312,
-                    +0.1488743389816312,
-                    +0.4333953941292472,
-                    +0.6794095682990244,
-                    +0.8650633666889845,
-                    +0.9739065285171717,
+                    0.1488743389816312,
+                    0.4333953941292472,
+                    0.6794095682990244,
+                    0.8650633666889845,
+                    0.9739065285171717,
                 ]
             ]
         )
-
-        dW = np.array(
+        d_w = np.array(
             [
                 0.0666713443086881,
                 0.1494513491505806,
@@ -570,37 +710,34 @@ def get_gauss_quadratureDG(nCount):
                 0.0666713443086881,
             ]
         )
-    # else:
-    #     msg = "quadrature order 1 to 10 is supported: ", nCount, " is invalid\n"
-    #     raise ValueError(msg)
 
     # Scale quadrature points
-    dXi0 = 0.0
-    dXi1 = 1.0
-    for i in range(nCount):
-        dG[0][i] = dXi0 + 0.5 * (dXi1 - dXi0) * (dG[0][i] + 1.0)
-        dW[i] = 0.5 * (dXi1 - dXi0) * dW[i]
+    d_xi0 = 0.0
+    d_xi1 = 1.0
+    for i in range(n_count):
+        d_g[0][i] = d_xi0 + 0.5 * (d_xi1 - d_xi0) * (d_g[0][i] + 1.0)
+        d_w[i] = 0.5 * (d_xi1 - d_xi0) * d_w[i]
 
-    return dG, dW
+    return d_g, d_w
 
 
 @njit(cache=True)
-def get_tri_quadratureDG(nOrder):
+def get_tri_quadrature_dg(n_order):
     """Triangular Quadrature Points for integration.
 
     Parameters
     ----------
-    nOrder : int
+    n_order : int
         Integration order, supports: 12, 10, 8, 4 and 1
 
     Returns
     -------
-        dG, dW : ndarray
+        d_g, d_w : ndarray
             points and weights, with dimension order x 3
     """
     # 12th order quadrature rule (33 points)
-    if nOrder == 12:
-        dG = np.array(
+    if n_order == 12:
+        d_g = np.array(
             [
                 [0.023565220452390, 0.488217389773805, 0.488217389773805],
                 [0.488217389773805, 0.023565220452390, 0.488217389773805],
@@ -638,7 +775,7 @@ def get_tri_quadratureDG(nOrder):
             ]
         )
 
-        dW = np.array(
+        d_w = np.array(
             [
                 0.025731066440455,
                 0.025731066440455,
@@ -677,8 +814,8 @@ def get_tri_quadratureDG(nOrder):
         )
 
     # 10th order quadrature rule (25 points)
-    elif nOrder == 10:
-        dG = np.array(
+    elif n_order == 10:
+        d_g = np.array(
             [
                 [0.333333333333333, 0.333333333333333, 0.333333333333333],
                 [0.028844733232685, 0.485577633383657, 0.485577633383657],
@@ -708,7 +845,7 @@ def get_tri_quadratureDG(nOrder):
             ]
         )
 
-        dW = np.array(
+        d_w = np.array(
             [
                 0.090817990382754,
                 0.036725957756467,
@@ -739,8 +876,8 @@ def get_tri_quadratureDG(nOrder):
         )
 
     # 8th order quadrature rule (16 points)
-    elif nOrder == 8:
-        dG = np.array(
+    elif n_order == 8:
+        d_g = np.array(
             [
                 [0.333333333333333, 0.333333333333333, 0.333333333333333],
                 [0.081414823414554, 0.459292588292723, 0.459292588292723],
@@ -761,7 +898,7 @@ def get_tri_quadratureDG(nOrder):
             ]
         )
 
-        dW = np.array(
+        d_w = np.array(
             [
                 0.144315607677787,
                 0.095091634267285,
@@ -783,8 +920,8 @@ def get_tri_quadratureDG(nOrder):
         )
 
     # 4th order quadrature rule (6 points)
-    elif nOrder == 4:
-        dG = np.array(
+    elif n_order == 4:
+        d_g = np.array(
             [
                 [0.108103018168070, 0.445948490915965, 0.445948490915965],
                 [0.445948490915965, 0.108103018168070, 0.445948490915965],
@@ -795,7 +932,7 @@ def get_tri_quadratureDG(nOrder):
             ]
         )
 
-        dW = np.array(
+        d_w = np.array(
             [
                 0.223381589678011,
                 0.223381589678011,
@@ -806,8 +943,8 @@ def get_tri_quadratureDG(nOrder):
             ]
         )
     # 1st order quadrature rule (1 point)
-    elif nOrder == 1:
-        dG = np.array([[0.333333333333333, 0.333333333333333, 0.333333333333333]])
-        dW = np.array([1.000000000000000])
+    elif n_order == 1:
+        d_g = np.array([[0.333333333333333, 0.333333333333333, 0.333333333333333]])
+        d_w = np.array([1.000000000000000])
 
-    return dG, dW
+    return d_g, d_w
diff --git a/uxarray/grid/grid.py b/uxarray/grid/grid.py
index 2c3d98605..9994fc73c 100644
--- a/uxarray/grid/grid.py
+++ b/uxarray/grid/grid.py
@@ -1815,7 +1815,10 @@ def encode_as(self, grid_type: str) -> xr.Dataset:
         return out_ds
 
     def calculate_total_face_area(
-        self, quadrature_rule: Optional[str] = "triangular", order: Optional[int] = 4
+        self,
+        quadrature_rule: Optional[str] = "triangular",
+        order: Optional[int] = 4,
+        latitude_adjusted_area: Optional[bool] = False,
     ) -> float:
         """Function to calculate the total surface area of all the faces in a
         mesh.
@@ -1826,6 +1829,8 @@ def calculate_total_face_area(
             Quadrature rule to use. Defaults to "triangular".
         order : int, optional
             Order of quadrature rule. Defaults to 4.
+        latitude_adjusted_area : bool, optional
+            If True, corrects the area of the faces accounting for lines of constant lattitude. Defaults to False.
 
         Returns
         -------
@@ -1833,7 +1838,9 @@ def calculate_total_face_area(
         """
 
         # call function to get area of all the faces as a np array
-        face_areas, face_jacobian = self.compute_face_areas(quadrature_rule, order)
+        face_areas, face_jacobian = self.compute_face_areas(
+            quadrature_rule, order, latitude_adjusted_area=latitude_adjusted_area
+        )
 
         return np.sum(face_areas)
 
@@ -1842,6 +1849,7 @@ def compute_face_areas(
         quadrature_rule: Optional[str] = "triangular",
         order: Optional[int] = 4,
         latlon: Optional[bool] = True,
+        latitude_adjusted_area: Optional[bool] = False,
     ):
         """Face areas calculation function for grid class, calculates area of
         all faces in the grid.
@@ -1852,6 +1860,10 @@ def compute_face_areas(
             Quadrature rule to use. Defaults to "triangular".
         order : int, optional
             Order of quadrature rule. Defaults to 4.
+        latlon : bool, optional
+            If True, the coordinates are in latlon. Defaults to True.
+        latitude_adjusted_area : bool, optional
+            If True, corrects the area of the faces accounting for lines of constant lattitude. Defaults to False.
 
         Returns
         -------
@@ -1909,6 +1921,7 @@ def compute_face_areas(
             quadrature_rule,
             order,
             coords_type,
+            latitude_adjusted_area,
         )
 
         min_jacobian = np.min(self._face_jacobian)
diff --git a/uxarray/io/_fesom2.py b/uxarray/io/_fesom2.py
index f6833ea78..77c258cf2 100644
--- a/uxarray/io/_fesom2.py
+++ b/uxarray/io/_fesom2.py
@@ -92,7 +92,7 @@ def _parse_nod2d(grid_path):
 
     nodes = pd.read_csv(
         file_path,
-        sep="\s+",
+        sep=r"\s+",
         skiprows=1,
         names=["node_number", "x", "y", "flag"],
     )
@@ -123,7 +123,7 @@ def _parse_elem2d(grid_path):
 
     file_content = pd.read_csv(
         file_path,
-        sep="\s+",
+        sep=r"\s+",
         skiprows=1,
         names=["first_elem", "second_elem", "third_elem"],
     )
@@ -153,7 +153,7 @@ def _parse_edge_tri(grid_path):
         return None
     file_content = pd.read_csv(
         file_path,
-        sep="\s+",
+        sep=r"\s+",
         skiprows=0,
         names=["first_elem", "second_elem"],
     )
@@ -184,7 +184,7 @@ def _parse_edges(grid_path):
         return None
     file_content = pd.read_csv(
         file_path,
-        sep="\s+",
+        sep=r"\s+",
         skiprows=0,
         names=["first_elem", "second_elem"],
     )


Test patch:
diff --git a/test/constants.py b/test/constants.py
index 4a54e1b1a..8d2a612ce 100644
--- a/test/constants.py
+++ b/test/constants.py
@@ -6,7 +6,8 @@
 NNODES_outCSne30 = 5402
 NNODES_outRLL1deg = 64442
 DATAVARS_outCSne30 = 4
-TRI_AREA = 1.047
+TRI_AREA = 0.02216612469199045
+CORRECTED_TRI_AREA = 0.02244844510268421
 # 4*Pi is 12.56
 MESH30_AREA = 12.566
 PSI_INTG = 12.566
diff --git a/test/test_grid.py b/test/test_grid.py
index 7ab859a47..89e11fcf2 100644
--- a/test/test_grid.py
+++ b/test/test_grid.py
@@ -265,24 +265,27 @@ def test_operators_ne():
 
 def test_face_areas_calculate_total_face_area_triangle():
     """Create a uxarray grid from vertices and saves an exodus file."""
-    verts = [[[0.57735027, -5.77350269e-01, -0.57735027],
-              [0.57735027, 5.77350269e-01, -0.57735027],
-              [-0.57735027, 5.77350269e-01, -0.57735027]]]
+    verts = [
+    [[0.02974582, -0.74469018, 0.66674712],
+    [0.1534193, -0.88744577, 0.43462917],
+    [0.18363692, -0.72230586, 0.66674712]]
+    ]
 
     grid_verts = ux.open_grid(verts, latlon=False)
 
     # validate the grid
     assert grid_verts.validate()
 
-    # calculate area
-    area_gaussian = grid_verts.calculate_total_face_area(
-        quadrature_rule="gaussian", order=5)
-    nt.assert_almost_equal(area_gaussian, constants.TRI_AREA, decimal=3)
-
+    # calculate area without correction
     area_triangular = grid_verts.calculate_total_face_area(
         quadrature_rule="triangular", order=4)
     nt.assert_almost_equal(area_triangular, constants.TRI_AREA, decimal=1)
 
+    # calculate area
+    area_gaussian = grid_verts.calculate_total_face_area(
+        quadrature_rule="gaussian", order=5, latitude_adjusted_area=True)
+    nt.assert_almost_equal(area_gaussian, constants.CORRECTED_TRI_AREA, decimal=3)
+
 
 def test_face_areas_calculate_total_face_area_file():
     """Create a uxarray grid from vertices and saves an exodus file."""
diff --git a/test/test_helpers.py b/test/test_helpers.py
index 96939232b..76e352487 100644
--- a/test/test_helpers.py
+++ b/test/test_helpers.py
@@ -32,41 +32,62 @@
 def test_face_area_coords():
     """Test function for helper function get_all_face_area_from_coords."""
     # Note: currently only testing one face, but this can be used to get area of multiple faces
-    x = np.array([0.57735027, 0.57735027, -0.57735027])
-    y = np.array([-5.77350269e-01, 5.77350269e-01, 5.77350269e-01])
-    z = np.array([-0.57735027, -0.57735027, -0.57735027])
-
-    face_nodes = np.array([[0, 1, 2]]).astype(INT_DTYPE)
+    # Cartesian coordinates (x, y, z) for each city
+    # Index 0: Chicago, Index 1: Miami, Index 2: Newburgh, New York, USA.
+    x = np.array([0.02974582, 0.1534193, 0.18363692])
+    y = np.array([-0.74469018, -0.88744577, -0.72230586])
+    z = np.array([0.66674712, 0.43462917, 0.66674712])
+    face_nodes = np.array([[0, 1, 2]])
     face_dimension = np.array([3], dtype=INT_DTYPE)
 
-    area, jacobian = ux.grid.area.get_all_face_area_from_coords(
+    area, _ = ux.grid.area.get_all_face_area_from_coords(
         x, y, z, face_nodes, face_dimension, 3, coords_type="cartesian")
+    nt.assert_almost_equal(area, constants.TRI_AREA, decimal=5)
 
-    nt.assert_almost_equal(area, constants.TRI_AREA, decimal=1)
 
 def test_calculate_face_area():
     """Test function for helper function calculate_face_area - only one face."""
     # Note: currently only testing one face, but this can be used to get area of multiple faces
     # Also note, this does not need face_nodes, assumes nodes are in counterclockwise orientation
-    x = np.array([0.57735027, 0.57735027, -0.57735027])
-    y = np.array([-5.77350269e-01, 5.77350269e-01, 5.77350269e-01])
-    z = np.array([-0.57735027, -0.57735027, -0.57735027])
+    x = np.array([0.02974582, 0.1534193, 0.18363692])
+    y = np.array([-0.74469018, -0.88744577, -0.72230586])
+    z = np.array([0.66674712, 0.43462917, 0.66674712])
+
+    area, _ = ux.grid.area.calculate_face_area(
+        x, y, z, "gaussian", 5, "cartesian", latitude_adjusted_area=False)
+
+    nt.assert_almost_equal(area, constants.TRI_AREA, decimal=5)
+
+    area_corrected, _ = ux.grid.area.calculate_face_area(
+        x, y, z, "gaussian", 5, "cartesian", latitude_adjusted_area=True)
 
-    area, jacobian = ux.grid.area.calculate_face_area(
-        x, y, z, "gaussian", 5, "cartesian")
+    nt.assert_almost_equal(area_corrected, constants.CORRECTED_TRI_AREA, decimal=5)
+
+    # Make the same grid using lon/lat check area = constants.TRI_AREA
+    lon = np.array([-87.7126, -80.1918, -75.7355])
+    lat = np.array([41.8165, 25.7617, 41.8165])
+    face_nodes = np.array([[0, 1, 2]])
+
+    grid = ux.Grid.from_topology(
+        node_lon=lon,
+        node_lat=lat,
+        face_node_connectivity=face_nodes,
+        fill_value=-1,
+    )
 
-    nt.assert_almost_equal(area, constants.TRI_AREA, decimal=3)
+    area, _ = grid.compute_face_areas()
+    nt.assert_almost_equal(area, constants.TRI_AREA, decimal=5)
 
 def test_quadrature():
     order = 1
-    dG, dW = ux.grid.area.get_tri_quadratureDG(order)
+    dG, dW = ux.grid.area.get_tri_quadrature_dg(order)
     G = np.array([[0.33333333, 0.33333333, 0.33333333]])
     W = np.array([1.0])
 
     np.testing.assert_array_almost_equal(G, dG)
     np.testing.assert_array_almost_equal(W, dW)
 
-    dG, dW = ux.grid.area.get_gauss_quadratureDG(order)
+    dG, dW = ux.grid.area.get_gauss_quadrature_dg(order)
 
     G = np.array([[0.5]])
     W = np.array([1.0])