diff --git a/docs/nightly/newalarm/ESMPy.pdf b/docs/nightly/newalarm/ESMPy.pdf index 2e3c87b2..33462e17 100644 Binary files a/docs/nightly/newalarm/ESMPy.pdf and b/docs/nightly/newalarm/ESMPy.pdf differ diff --git a/docs/nightly/newalarm/html/.buildinfo b/docs/nightly/newalarm/html/.buildinfo index 6923d149..7fdb626c 100644 --- a/docs/nightly/newalarm/html/.buildinfo +++ b/docs/nightly/newalarm/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 307a411f5411de96fb2146385a1a7945 +config: 64593f78e0431b38614406b094492a80 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/nightly/newalarm/html/CoordSys.html b/docs/nightly/newalarm/html/CoordSys.html index f6f86ed9..2fe2192d 100644 --- a/docs/nightly/newalarm/html/CoordSys.html +++ b/docs/nightly/newalarm/html/CoordSys.html @@ -1,20 +1,17 @@ -
- + -This flag indicates the coordinate system of a Grid
. This value is
+
This flag indicates the coordinate system of a Grid
. This value is
useful both to indicate to other users the type of the coordinates,
but also to control how the coordinates are interpreted in
-regridding methods (e.g. Regrid
).
Regrid
).
Cartesian coordinate system. In this system, the Cartesian
-coordinates are mapped to the Grid
coordinate dimensions in the
+coordinates are mapped to the Grid
coordinate dimensions in the
following order: x, y, z. (e.g. using coord_dim=1 in
-get_coords()
references the y dimension)
get_coords()
references the y dimension)
Spherical coordinates in degrees. In this system, the spherical
-coordinates are mapped to the Grid
coordinate dimensions in the
+coordinates are mapped to the Grid
coordinate dimensions in the
following order: longitude, latitude, radius. (E.g. using
coord_dim=1 in get_coords()`
references the latitude dimension).
Spherical coordinates in radians. In this system, the spherical
-coordinates are mapped to the Grid
coordinate dimensions in the
+coordinates are mapped to the Grid
coordinate dimensions in the
following order: longitude, latitude, radius. (E.g. using
-coord_dim=1 in get_coords()
references the latitude dimension).
get_coords()
references the latitude dimension).
Navigation
Specify which extrapolation method to use on unmapped destination points after regridding.
Indicates that no extrapolation should be done.
Nearest source to destination. +Here each destination point is mapped to the closest source point. A given +source point may go to multiple destination points, but no destination +point will receive input from more than one source point.
+Inverse distance weighted average. Here the value of a destination point is the weighted average of the closest N source points. The weight is the reciprocal of the distance of @@ -73,17 +79,8 @@
Nearest source to destination. -Here each destination point is mapped to the closest source point. A given -source point may go to multiple destination points, but no destination -point will receive input from more than one source point.
-Creep fill extrapolation. Here unmapped destination points are filled by repeatedly moving data from mapped locations to neighboring unmapped locations. The data filled into a @@ -104,6 +101,22 @@
Navigation
The Grid
and Mesh
objects
may be created from specifications in a NetCDF data file. This flag
indicates the format of the data file.
Use the ESMFMESH unstructured grid file format.
Use the ESMF structured grid file format.
Use the UGRID unstructured grid file format.
Use the UGRID single tile grid file format based on CF V1.6 conventions (a.k.a GRIDSPEC).
Navigation
Specify which mode to use when writing a weight file.
Indicates that only the factorList and factorIndexList should be written.
Indicates that grid center coordinates and cell areas should also be written.
Navigation
The Grid
can contain other kinds of data besides coordinates. This
-data is referred to as Grid
“items”. Some items may be used
-for calculations involving the Grid
.
The Grid
can contain other kinds of data besides coordinates. This
+data is referred to as Grid
“items”. Some items may be used
+for calculations involving the Grid
.
A grid item to represent an area field for conservative regridding.
Navigation
This argument controls the path of the line which connects two points on the surface of the sphere. This in turn controls the path along which distances are calculated and the shape of the edges that make up a cell. @@ -59,8 +56,8 @@
Cartesian line. When this option is specified distances are calculated in a straight line through the 3D Cartesian space in which the sphere is embedded. Cells are approximated by 3D planes bounded by 3D Cartesian lines @@ -70,8 +67,8 @@
Great circle line. When this option is specified distances are calculated along a great circle path (the shortest distance between two points on a sphere surface). Cells are bounded by great circle paths between their @@ -90,6 +87,20 @@
Navigation
This flag is used to specify how much logging should be done.
@@ -76,6 +73,20 @@Navigation
A Mesh
can be constructed from a combination of different elements.
-The type of elements that can be used in a Mesh
depends on the
-parametric dimension of the Mesh
, which is set during Mesh
-creation. The following are the valid Mesh
element types for each
-valid Mesh
parametric dimension (2D or 3D).
A Mesh
can be constructed from a combination of different elements.
+The type of elements that can be used in a Mesh
depends on the
+parametric dimension of the Mesh
, which is set during Mesh
+creation. The following are the valid Mesh
element types for each
+valid Mesh
parametric dimension (2D or 3D).
2D triangular elements with 3 sides.
2D quadrilateral elements with 4 sides.
3D tetrahedral elements with 4 faces.
3D hexahedral elements with 6 faces.
Navigation
Navigation
When doing conservative regridding, this option allows the user to select the type of normalization used when producing the weights.
Destination area normalization. Here the weights are calculated by dividing the area of overlap of the source and destination cells by the area of the entire destination cell. In other words, the weight is the fraction of the @@ -64,8 +61,8 @@
Fraction area normalization. Here in addition to the weight calculation done for destination area normalization the weights are also divided by the fraction that the destination cell overlaps with the entire source grid. In @@ -84,6 +81,20 @@
Navigation
This type describes the type of connection that occurs at the pole of a
-Grid
.
Grid
.
This edge is connected to itself. Given that the edge is n elements long, then element i is connected to element i+n/2.
This edge is connected to itself. Given that the edge is n elements long, element i is connected to element n-i-1.
Navigation
Indicates which type of artificial pole to construct on the source
-Grid
for regridding.
Grid
for regridding.
No pole. Destination points which lie above the top or below the bottom row
-of the source Grid
won’t be mapped.
Grid
won’t be mapped.
Construct an artificial pole placed in the center of the top (or bottom) row of nodes, but projected onto the sphere formed by the rest of the grid. The value at this pole is the average of all the source values surrounding @@ -71,8 +68,8 @@
Construct an artificial pole placed in the center of the top (or bottom) row of nodes, but projected onto the sphere formed by the rest of the grid. The value at this pole is the average of the N source nodes next to the pole @@ -84,14 +81,14 @@
No new pole point is constructed, instead the holes at the poles are filled
-by constructing triangles across the top and bottom row of the source Grid
.
+by constructing triangles across the top and bottom row of the source Grid
.
This can be useful because no averaging occurs, however, because the top and
bottom of the sphere are now flat, for a big enough mismatch between the
size of the destination and source pole holes, some destination points may
-still not be able to be mapped to the source Grid
.
Grid
.
Navigation
Specify various regions in the data layout of a Field
object.
Specify various regions in the data layout of a Field
object.
An operation applies to every element in the selected domain.
An operation applies to a select portion of the domain. One use of this is
-to specify that the portions of a Field
that are not mapped in a regridding
+to specify that the portions of a Field
that are not mapped in a regridding
operation should retain their original value (as opposed to being
initialized to 0).
An operation does not apply any element in the domain.
Navigation
Specify which interpolation method to use during regridding.
Bilinear interpolation. Destination value is a linear combination of the source values in the cell which contains the destination point. The weights for the linear combination are based on the distance of destination @@ -63,8 +60,8 @@
Higher-order patch recovery interpolation. Destination value is a weighted average of 2D polynomial patches constructed from cells surrounding the source cell which contains the destination point. This method typically @@ -74,8 +71,8 @@
First-order conservative interpolation. The main purpose of this method is to preserve the integral of the field across the interpolation from source to destination. In this method the value across each source cell is treated @@ -84,15 +81,15 @@
Grid
. It currently only works for
-Fields <ESMF.api.field.Field>`s created on the
-:class:`~ESMF.api.grid.Grid
center stagger or
-the Mesh
element location.
+provided in the Grid
. It currently only works for
+Fields <esmpy.api.field.Field>`s created on the
+:class:`~esmpy.api.grid.Grid
center stagger or
+the Mesh
element location.
In this version of nearest neighbor interpolation each destination point is mapped to the closest source point. A given source point may go to multiple destination points, but no destination point will receive input from more @@ -100,8 +97,8 @@
In this version of nearest neighbor interpolation each source point is mapped to the closest destination point. A given destination point may receive input from multiple source points, but no source point will go to @@ -109,8 +106,8 @@
Second-order conservative interpolation. This method’s main purpose is to preserve the integral of the field across the interpolation from source to destination. The difference between the first and second-order conservative @@ -124,10 +121,10 @@
Grid
. It currently only works for
-Fields <ESMF.api.field.Field>`s created on the
-:class:`~ESMF.api.grid.Grid
center stagger or
-the Mesh
element location.
+provided in the Grid
. It currently only works for
+Fields <esmpy.api.field.Field>`s created on the
+:class:`~esmpy.api.grid.Grid
center stagger or
+the Mesh
element location.
Navigation
In the Grid
class, data can be located at different positions in a
-Grid
cell. When setting or retrieving coordinate data the stagger
-location is specified to tell the Grid
method from where in the
+
In the Grid
class, data can be located at different positions in a
+Grid
cell. When setting or retrieving coordinate data the stagger
+location is specified to tell the Grid
method from where in the
cell to get the data.
2D: Cell centered stagger location.
2D: First dimension edge stagger location.
2D: Second dimension edge stagger location.
2D: Cell corner stagger location.
3D: Vertically centered stagger location.
3D: Vertically centered first dimension edge stagger location.
3D: Vertically centered second dimension edge stagger location.
3D: Vertically centered corner stagger location.
3D: Centered stagger location of the top and bottom cell faces.
3D: First dimension edge stagger location of the top and bottom cell faces.
3D: Second dimension edge stagger location of the top and bottom cell faces.
3D: Corner stagger location of the top and bottom cell faces.
Navigation
This is used to indicate the type and kind of ESMPy types to the underlying ESMF library routines.
An eight byte integer, equivalent to numpy.int64.
An eight byte real, equivalent to numpy.float64.
Navigation
This is used to indicate what action to take with respect to unmapped destination points and the entries of the sparse matrix that correspond to these points.
Unmapped points result in an error code return.
Unmapped points are ignored.
Navigation
' + - '' + - Documentation.gettext("Hide Search Matches") + - "
" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - const url = new URL(window.location); - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - }, - /** * helper function to focus on search bar */ @@ -210,15 +110,11 @@ const Documentation = { ) return; - const blacklistedElements = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", - ]); document.addEventListener("keydown", (event) => { - if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements - if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; if (!event.shiftKey) { switch (event.key) { @@ -240,10 +136,6 @@ const Documentation = { event.preventDefault(); } break; - case "Escape": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.hideSearchWords(); - event.preventDefault(); } } diff --git a/docs/nightly/newalarm/html/_static/documentation_options.js b/docs/nightly/newalarm/html/_static/documentation_options.js index fd06e36d..c07a7cc4 100644 --- a/docs/nightly/newalarm/html/_static/documentation_options.js +++ b/docs/nightly/newalarm/html/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '8.4.0 beta snapshot', + VERSION: '8.7.0b0', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/nightly/newalarm/html/_static/language_data.js b/docs/nightly/newalarm/html/_static/language_data.js index 2e22b06a..250f5665 100644 --- a/docs/nightly/newalarm/html/_static/language_data.js +++ b/docs/nightly/newalarm/html/_static/language_data.js @@ -5,7 +5,7 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/docs/nightly/newalarm/html/_static/pygments.css b/docs/nightly/newalarm/html/_static/pygments.css index 691aeb82..0d49244e 100644 --- a/docs/nightly/newalarm/html/_static/pygments.css +++ b/docs/nightly/newalarm/html/_static/pygments.css @@ -17,6 +17,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #FF0000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #00A000 } /* Generic.Inserted */ diff --git a/docs/nightly/newalarm/html/_static/searchtools.js b/docs/nightly/newalarm/html/_static/searchtools.js index f2fb7d5c..97d56a74 100644 --- a/docs/nightly/newalarm/html/_static/searchtools.js +++ b/docs/nightly/newalarm/html/_static/searchtools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -57,14 +57,14 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, highlightTerms, searchTerms) => { +const _displayItem = (item, searchTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const [docName, title, anchor, descr] = item; + const [docName, title, anchor, descr, score, _filename] = item; let listItem = document.createElement("li"); let requestUrl; @@ -82,10 +82,9 @@ const _displayItem = (item, highlightTerms, searchTerms) => { requestUrl = docUrlRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } - const params = new URLSearchParams(); - params.set("highlight", [...highlightTerms].join(" ")); let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + "?" + params.toString() + anchor; + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; linkEl.innerHTML = title; if (descr) listItem.appendChild(document.createElement("span")).innerHTML = @@ -96,7 +95,7 @@ const _displayItem = (item, highlightTerms, searchTerms) => { .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, highlightTerms) + Search.makeSearchSummary(data, searchTerms) ); }); Search.output.appendChild(listItem); @@ -116,15 +115,14 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - highlightTerms, searchTerms ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), highlightTerms, searchTerms); + _displayItem(results.pop(), searchTerms); setTimeout( - () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms), 5 ); } @@ -237,6 +235,12 @@ const Search = { * execute search (requires search index to be loaded) */ query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -264,6 +268,10 @@ const Search = { } }); + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + // console.debug("SEARCH: searching for:"); // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); @@ -272,6 +280,40 @@ const Search = { let results = []; _removeChildren(document.getElementById("search-progress")); + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + // lookup as object objectTerms.forEach((term) => results.push(...Search.performObjectSearch(term, objectTerms)) @@ -318,7 +360,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, highlightTerms, searchTerms); + _displayNextItem(results, results.length, searchTerms); }, /** @@ -399,8 +441,8 @@ const Search = { // prepare search const terms = Search._index.terms; const titleTerms = Search._index.titleterms; - const docNames = Search._index.docnames; const filenames = Search._index.filenames; + const docNames = Search._index.docnames; const titles = Search._index.titles; const scoreMap = new Map(); @@ -497,11 +539,9 @@ const Search = { /** * helper function to return a node containing the * search summary for a given text. keywords is a list - * of stemmed words, highlightWords is the list of normal, unstemmed - * words. the first one is used to find the occurrence, the - * latter for highlighting it. + * of stemmed words. */ - makeSearchSummary: (htmlText, keywords, highlightWords) => { + makeSearchSummary: (htmlText, keywords) => { const text = Search.htmlToText(htmlText); if (text === "") return null; @@ -519,10 +559,6 @@ const Search = { summary.classList.add("context"); summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - highlightWords.forEach((highlightWord) => - _highlightText(summary, highlightWord, "highlighted") - ); - return summary; }, }; diff --git a/docs/nightly/newalarm/html/_static/sidebar.js b/docs/nightly/newalarm/html/_static/sidebar.js index ae3080bd..c5e2692c 100644 --- a/docs/nightly/newalarm/html/_static/sidebar.js +++ b/docs/nightly/newalarm/html/_static/sidebar.js @@ -16,7 +16,7 @@ * Once the browser is closed the cookie is deleted and the position * reset to the default (expanded). * - * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/docs/nightly/newalarm/html/_static/sphinx_highlight.js b/docs/nightly/newalarm/html/_static/sphinx_highlight.js new file mode 100644 index 00000000..aae669d7 --- /dev/null +++ b/docs/nightly/newalarm/html/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '' + + '' + + _("Hide Search Matches") + + "
" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/docs/nightly/newalarm/html/api.html b/docs/nightly/newalarm/html/api.html index 426a0eeb..53428ab7 100644 --- a/docs/nightly/newalarm/html/api.html +++ b/docs/nightly/newalarm/html/api.html @@ -1,20 +1,17 @@ - - + -ESMPy uses a Field
object to represent data variables
+
ESMPy uses a Field
object to represent data variables
built on an underlying spatial discretization, which is represented by a
-Grid
, Mesh
or
-LocStream
.
-Regridding between Fields
is accomplished with the
-Regrid
class. All of these classes are explained in
+Grid
, Mesh
or
+LocStream
.
+Regridding between Fields
is accomplished with the
+Regrid
class. All of these classes are explained in
more detail in the sections provided by the links in the following table.