diff --git a/DESCRIPTION b/DESCRIPTION index 1473ae6..3ddc850 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,10 @@ Package: ClimHub Title: Climate Data Toolbox developed at CICERO Centre for International Climate Research Version: 0.1.9 -Authors@R: - person("Erik", "Kusch", , "erik.kusch@cicero.oslo.no", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-4984-7646")) +Authors@R: c( + person("Erik", "Kusch", , "erik.kusch@cicero.oslo.no", role = c("aut", "cre", "cph"), comment = c(ORCID = "0000-0002-4984-7646")), + person("Patrick", "Van Laake", , "patrick@vanlaake.net", role = c("aut", "ctb")) + ) Description: Collection of functions relevant to work at CICERO and beyond. License: MIT + file LICENSE Encoding: UTF-8 @@ -29,7 +31,8 @@ Imports: stringr (>= 1.5.2), ggplot2 (>= 4.0.1), viridis (>= 0.6.5), - tidyterra (>= 0.7.2) + tidyterra (>= 0.7.2), + ncdfCF (>= 0.8.1.9000) Depends: R (>= 3.5) LazyData: true diff --git a/NAMESPACE b/NAMESPACE index f4cc504..743e589 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -43,11 +43,10 @@ importFrom(ggplot2,unit) importFrom(httr,HEAD) importFrom(httr,headers) importFrom(jsonlite,fromJSON) +importFrom(jsonlite,toJSON) importFrom(lubridate,tz) importFrom(ncdf4,nc_close) importFrom(ncdf4,nc_create) -importFrom(ncdf4,nc_open) -importFrom(ncdf4,ncatt_get) importFrom(ncdf4,ncatt_put) importFrom(ncdf4,ncdim_def) importFrom(ncdf4,ncvar_def) @@ -78,7 +77,6 @@ importFrom(terra,is.lonlat) importFrom(terra,longnames) importFrom(terra,mask) importFrom(terra,metags) -importFrom(terra,names) importFrom(terra,ncol) importFrom(terra,nlyr) importFrom(terra,nrow) diff --git a/R/Access_KlimaiNorge2100.r b/R/Access_KlimaiNorge2100.r index 6e574ae..b060358 100644 --- a/R/Access_KlimaiNorge2100.r +++ b/R/Access_KlimaiNorge2100.r @@ -1,68 +1,65 @@ #' @title Download Klima i Norge 2100 data from the Norwegian Meteorological Institute #' -#' @description Downloads and processes data from the \href{https://www.miljodirektoratet.no/publikasjoner/2015/september-2015/klima-i-norge-2100/}{Klima_i_Norge_2100} data product hosted through \href{https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge_2100/catalog.html}{thredds.met.no}. +#' @description Downloads and processes data from the \href{https://www.met.no/nyhetsarkiv/framtidens-klima-i-norge-flere-oversvommelser-mer-torke-og-mindre-sno/_/attachment/inline/cc1ae8f3-277d-4077-adb9-313e5e28b947:b8073784517edb9392f78c9d82bc5b296db2fc3c/Klima%20i%20Norge%20digital%20low.pdf}{Klima_i_Norge_2100} data product hosted through \href{https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge/utgave2025/catalog.html}{thredds.met.no}. #' Specifically, this function provides access to the following datasets: -#' 1. \href{https://publikasjoner.nve.no/rapport/2016/rapport2016_59.pdf}{Gridded 1 x 1 km climate and hydrological projections for Norway} data contained within \href{https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge_2100/utgave2015/catalog.html}{utgave 2015}. +#' 1. Gridded 1 x 1 km climate and hydrological projections for Norway data at daily scales contained within \href{https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/catalog.html}{DailyTimeSeries}. +#' +#' \textbf{Note: not all combinations of variables, models, scenarios, and bias-correction methods are available. If you encounter an error, please first consult whether data is provided for the requested combination at \url{https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/catalog.html}. The function is designed to give you informative errors when this happens and you should find the offending URL in your console.} #' #' @param variable Character. An overview of Klima i Norge variables can be obtained with `Discovery_Variables(dataSet = "KlimaiNorge2100")`. -#' @param dateStart Character. "YYYY-MM-DD" date at which to start time series of downloaded data. Data is available daily at hourly intervals. -#' @param dateStop Character. "YYYY-MM-DD" date at which to stop time series of downloaded data. Data is available daily at hourly intervals. +#' @param dateStart Character. "YYYY-MM-DD" date at which to start time series of downloaded data. Data is available at daily resolution starting from `1971-01-01`. +#' @param dateStop Character. "YYYY-MM-DD" date at which to stop time series of downloaded data, inclusive of this date. Data is available at daily resolution up to `2100-12-31`. +#' @param extent Optional. The extent to subset the data to, in coordinates of the projection or decimal degrees of longitude and latitude. A numeric vector of length 4 with values minimum and maximum X/longitude and minimum and maximum Y/latitude, in that order. Valid ranges for projected X and Y coordinates are `(-74500, 1119500, 6450500, 7999500)`, for longitude/latitude values `(-1.309, 32.515, 57.765, 72.095)`. Defaults to `NULL`, returning full spatial range of data. +#' @param method Character. An overview of bias-correction methods from which data can be obtained can be obtained with `Discovery_QuickFacts("KlimaiNorge2100")$methods`. #' @param model Character. An overview of climate models from which data can be obtained can be obtained with `Discovery_QuickFacts("KlimaiNorge2100")$models`. -#' @param scenario Character. An overview of climate models from which data can be obtained can be obtained with `Discovery_QuickFacts("KlimaiNorge2100")$scenarios`. Note that this choice only affects data post-dating 2005-12-31. -#' @param cores Optional, Integer. Number of cores to use for parallel downloads. Default NULL defines no parallelisation. -#' @param fileName Character. A file name for the produced file, including path. -#' @param compression Optional, Integer. Compression level between 1 to 9 applied to final .nc file. Same as compression argument in terra::writeCDF(). Defaults to NA. -#' @param removeTemporary Optional, Logical. Whether to delete temporary files after completion. Defaults to TRUE. -#' @param writeFile Optional, Logical. Whether to write final SpatRaster to disk as an .nc or to return information from memory. Setting to FALSE will prohibit removal of temporary files. Defaults to TRUE. -#' -#' @importFrom tools file_path_sans_ext -#' @importFrom terra metags -#' @importFrom terra time -#' -#' @return SpatRaster. Contains the downloaded data and metadata attributes that can be retrieved with terra::metags(...): -#' - *Citation* - A string for in-line citation of the data product -#' - *Call_* - A set of strings matching arguments supplied to the download function call +#' @param scenario Character. An overview of climate models from which data can be obtained can be obtained with `Discovery_QuickFacts("KlimaiNorge2100")$scenarios`. Note that this choice only affects data post-dating 2020-12-31. +#' @param fileName Character, optional. A file name for the produced file, including path. If `NULL` or missing, a virtual data set will be returned from this function. +#' @param compression Optional, integer. Compression level between 1 to 9 applied to final netCDF file. Defaults to NA (no compression applied). Currently not used due to ncdfCF saving scheme. +#' @return A `CFDataset` object which contains the downloaded data and relevant metadata attributes. If specified, also writes a netCDF file to disk. #' -#' @author Erik Kusch +#' @author Erik Kusch, Patrick Van Laake #' #' @examples #' \dontrun{ #' Access_KlimaiNorge2100( -#' variable = "Maximum Air Temperature", -#' dateStart = "2004-08-01", -#' dateStop = "2006-09-17", -#' model = "CNRM_CCLM", -#' scenario = "rcp85", -#' cores = 1, +#' variable = "mean_air_temperature", +#' dateStart = "2019-08-01", +#' dateStop = "2022-09-17", +#' extent = c(0, 10, 60, 65), +#' method = "eqm", +#' model = "noresm-r1i1p1-remo", +#' scenario = "rcp45", #' fileName = "KlimaiNorge2100.nc", -#' compression = 9, -#' removeTemporary = TRUE +#' compression = 9 #' ) #' } #' @export Access_KlimaiNorge2100 <- function( variable, # which variable dateStart, dateStop, # time-window + extent = NULL, + method, model, - scenario = c("rcp45", "rcp85"), # Klima i Norge 2100 specific arguments - cores = 1, - fileName, compression = NA, # file storing - removeTemporary = TRUE, - writeFile = TRUE) { + scenario, + fileName, compression = NA # file storing + ) { ## Input Checks ============ message("###### Checking Request Validity") ### fileName if (missing(fileName)) { - stop("Please specify a filename.") + fileName <- NULL + } + if (!is.null(fileName)) { + fileName <- normalizePath(fileName, mustWork = FALSE) } - fileName <- normalizePath(fileName, mustWork = FALSE) ### time-window exceeded, we do this in UTC to avoid daylight savings shenanigans - Start <- as.POSIXct(paste0(dateStart, ":00:00"), tz = "UTC") - Stop <- as.POSIXct(paste0(dateStop, ":00:00"), tz = "UTC") + Start <- as.POSIXct(paste0(dateStart, "T00:00:00"), tz = "UTC") + Stop <- as.POSIXct(paste0(dateStop, "T00:00:00"), tz = "UTC") ### actual checks + QuickFacts_ls <- Discovery_QuickFacts("KlimaiNorge2100") InCheck_ls <- list( Variable = list( Input = variable, @@ -71,100 +68,111 @@ Access_KlimaiNorge2100 <- function( ), Time = list( Input = c(Start, Stop), - Allowed = Discovery_QuickFacts("KlimaiNorge2100")$time$extent, + Allowed = QuickFacts_ls$time$extent, Operator = "exceeds" ), + Methods = list( + Input = method, + Allowed = QuickFacts_ls$methods, + Operator = "in" + ), Models = list( Input = model, - Allowed = Discovery_QuickFacts("KlimaiNorge2100")$models, + Allowed = QuickFacts_ls$models, Operator = "in" ), Scenarios = list( Input = scenario, - Allowed = Discovery_QuickFacts("KlimaiNorge2100")$scenarios, + Allowed = QuickFacts_ls$scenarios, Operator = "in" ) ) - Helper_InputChecker(inputCheck = InCheck_ls) - ## Metadata - Citation <- paste0("Klima i Norge 2100 (ISBN:", Discovery_QuickFacts(dataSet = "KlimaiNorge2100")$isbn, ") data provided by the The Norwegian Meteorological institute obtained on ", Sys.Date()) - names(Citation) <- "Citation" - callargs <- mget(names(formals()), sys.frame(sys.nframe())) - callargs[sapply(callargs, is.null)] <- "NULL" - callargs[sapply(callargs, class) == "name"] <- "" - names(callargs) <- paste("Call", names(callargs), sep = "_") - Meta_vec <- c(Citation, unlist(callargs)) + # Commenting this out so you can also subset on Xc/Yc coordinates + # if (exists("extent")) { + # InCheck_ls <- c( + # InCheck_ls, + # list( + # Extent_Longitude = list( + # Input = extent[1:2], + # Allowed = QuickFacts_ls$space$extent[1:2], + # Operator = "exceeds" + # ), + # Extent_Latitude = list( + # Input = extent[3:4], + # Allowed = QuickFacts_ls$space$extent[3:4], + # Operator = "exceeds" + # ) + # ) + # ) + # } + + Helper_InputChecker(inputCheck = InCheck_ls) ## Data files & extraction varnames ========= KlimaiNorge2100_df <- Discovery_Variables("KlimaiNorge2100") - FilePrefix <- KlimaiNorge2100_df$prefix[variable == KlimaiNorge2100_df$name] - Unit <- KlimaiNorge2100_df$unit[variable == KlimaiNorge2100_df$name] + FilePrefix <- KlimaiNorge2100_df$datafile[KlimaiNorge2100_df$name == variable] + FileString <- KlimaiNorge2100_df$string[KlimaiNorge2100_df$name == variable] ## Download preparations ========= - ## temporary files names, we do this in UTC to avoid daylight savings shenanigans - TimeAssing <- Datetimes <- seq( + DateTimes <- seq( from = Start, to = Stop, by = "1 day" ) - Datetimes <- unique(format(Datetimes, "%Y")) - FNames <- paste("TEMP", ifelse(Datetimes < 2006, "hist", scenario), model, FilePrefix, "daily", Datetimes, "v4.nc", sep = "_") + Datetimes <- unique(format(DateTimes, "%Y")) ## File Check ========= - FCheck <- Helper_FileCheck(fileName = fileName, loadFun = NC_Read, load = TRUE, verbose = TRUE) - if (!is.null(FCheck)) { - terra::time(FCheck) <- TimeAssing - return(FCheck) + if (!is.null(fileName)) { + FCheck <- Helper_FileCheck(fileName = fileName, loadFun = ncdfCF::open_ncdf, load = TRUE, verbose = TRUE) + if (!is.null(FCheck)) { + return(FCheck) + } } + ## Subsetting parameters ========= + subset <- if (!is.null(extent)) { + if (all(extent < 1000)) { # Differentiate between lat/lon and Xc/Yc + list(lon = extent[1:2], lat = extent[3:4]) + } else { + list(Xc = extent[1:2], Yc = extent[3:4]) + } + } else { + if (is.null(fileName)) { + stop("For now, there persist some errors when saving a file from a NULL extent call with this function. Please either specify no fileName thus keeping the data in memory or specify an extent.") + } + list() + } + subset <- c(subset, list(time = c(as.character(Start), as.character(Stop + 86400)))) # Stop date inclusive + ## Download execution ========= message("###### Data Download") - URLS <- sapply(FNames, FUN = function(FName) { - FNameInfo <- unlist(strsplit(FName, split = "_")) - paste("https://thredds.met.no/thredds/fileServer/KSS/Klima_i_Norge_2100/utgave2015", FilePrefix, model, FNameInfo[2], - gsub(FName, pattern = "TEMP_", replacement = ""), + URLs <- sapply(Datetimes, FUN = function(Datetime) { + paste("https://thredds.met.no/thredds/dodsC/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries", FilePrefix, method, + ifelse(Datetime <= 2020, "hist", scenario), + model, + paste0(model, "_", ifelse(Datetime <= 2020, "hist", scenario), "_", method, "-", FileString, "_norway_1km_", FilePrefix, "_daily_", Datetime, ".nc4"), sep = "/" ) }) - FilestoLoad <- Helper_DirectDownload(url = URLS, fileName = FNames, cores = cores, verbose = TRUE) - - ## Loading Data ================================= - message("###### Loading Downloaded Data from Disk") - MetNo_rast <- Helper_LoadFiles(fileName = FilestoLoad) - - ## Time-Window Extraction ================================= - message("###### Extracting Requested Time-Period") - TimeLyr <- which( - as.POSIXct(time(MetNo_rast), tz = "UTC") >= Start & - as.POSIXct(time(MetNo_rast), tz = "UTC") <= Stop - ) - MetNo_rast <- MetNo_rast[[TimeLyr]] + MetNo_cf <- Helper_AccessCF(URLs = URLs, variable = FilePrefix, subset = subset) ## Exports ================================= message("###### Data Export & Return") - ### Assign additional information - terra::time(MetNo_rast) <- TimeAssing - terra::metags(MetNo_rast) <- Meta_vec - - ### write file - if (writeFile) { - NC_Write( - spatRaster = MetNo_rast, fileName = fileName, - varName = variable, - longName = gsub(pattern = " ", replacement = "_", tolower(variable)), - unit = Unit, - meta = Meta_vec, compression = compression - ) - MetNo_rast <- NC_Read(fileName = fileName) - } + ## Metadata + callargs <- paste0("ClimHub::", paste(deparse(match.call()), collapse = ", ")) + Citation <- paste0("Klima i Norge (DOI:", Discovery_DOI(dataSet = "KlimaiNorge2100"), ") data provided by the The Norwegian Meteorological institute obtained on ", Sys.Date()) + MetNo_cf$set_attribute("source", "NC_CHAR", Citation) + MetNo_cf$set_attribute("comment", "NC_CHAR", paste("Created on", Sys.time(), "with the Access_KlimaiNorge2100() function from ClimHub version", packageVersion("ClimHub"))) + MetNo_cf$set_attribute("provenance", "NC_CHAR", callargs) - ### unlink temporary files - if (removeTemporary & writeFile) { - unlink(FNames) + ### Optionally write file and return + if (is.null(fileName)) { + ds <- ncdfCF::create_ncdf() + ds$add_variable(MetNo_cf) + ds + } else { + MetNo_cf$save(fileName) } - - ### return object - return(MetNo_rast) } diff --git a/R/Access_NORA3.r b/R/Access_NORA3.r index 8839121..bb5fc1c 100644 --- a/R/Access_NORA3.r +++ b/R/Access_NORA3.r @@ -6,164 +6,159 @@ #' @param variable Character. An overview of NORA3 variables can be obtained with `Discovery_Variables(dataSet = "NORA3")`. #' @param dateStart Character. "YYYY-MM-DD HH" date at which to start time series of downloaded data. Data is available daily at hours 00, 06, 12, and 18. #' @param dateStop Character. "YYYY-MM-DD HH" date at which to stop time series of downloaded data. Data is available daily at hours 00, 06, 12, and 18. -#' @param leadTimeHour Integer. Lead time of reanalysis. NORA3 leadtimes can be obtained with `Discovery_QuickFacts("NORA3")$leadtime`. -#' @param cores Optional, Integer. Number of cores to use for parallel downloads. Default NULL defines no parallelisation. +#' @param extent Optional. The extent to subset the data to, in coordinates of the projection or decimal degrees of longitude and latitude. A numeric vector of length 4 with values minimum and maximum X/longitude and minimum and maximum Y/latitude, in that order. Valid ranges for projected X and Y coordinates are `(778360.875, 3442360.75, -1270477, 3193523)`, for longitude/latitude values `(-30.168 85.793 44.025 84.057)`. Defaults to `NULL`, returning full spatial range of data. +#' @param leadTimeHour Integer. Lead time of reanalysis. NORA3 lead times can be obtained with `Discovery_QuickFacts("NORA3")$leadtime`. #' @param fileName Character. A file name for the produced file, including path. -#' @param compression Optional, Integer. Compression level between 1 to 9 applied to final .nc file. Same as compression argument in terra::writeCDF(). Defaults to NA. -#' @param removeTemporary Optional, Logical. Whether to delete temporary files after completion. Defaults to TRUE. -#' @param writeFile Optional, Logical. Whether to write final SpatRaster to disk as an .nc or to return information from memory. Setting to FALSE will prohibit removal of temporary files. Defaults to TRUE. +#' @param compression Optional, integer. Compression level between 1 to 9 applied to final netCDF file. Defaults to NA (no compression applied). Currently not used due to ncdfCF saving scheme. +#' @return A `CFDataset` object which contains the downloaded data and relevant metadata attributes. If specified, also writes a netCDF file to disk. #' -#' @importFrom tools file_path_sans_ext -#' @importFrom terra metags -#' @importFrom terra names -#' @importFrom terra time -#' @importFrom stringr str_pad -#' -#' @return SpatRaster. Contains the downloaded data and metadata attributes that can be retrieved with terra::metags(...): -#' - *Citation* - A string for in-line citation of the data product -#' - *Call_* - A set of strings matching arguments supplied to the download function call -#' -#' @author Erik Kusch +#' @author Erik Kusch, Patrick Van Laake #' #' @examples #' \dontrun{ #' NORA3 <- Access_NORA3( -#' variable = "TS (Surface temperature)", # which variable -#' dateStart = "1961-08-01 00", dateStop = "1961-08-02 18", # time-window -#' leadTimeHour = 3, cores = 1, -#' fileName = "NORA3.nc", compression = 9, # file storing -#' removeTemporary = TRUE +#' variable = "T2M", # which variable +#' dateStart = "1961-08-01 00", dateStop = "1961-08-02 18", # time-window +#' extent = c(0, 40, 50, 60), +#' leadTimeHour = 3, +#' fileName = "NORA3.nc", compression = 9 # file storing #' ) -#' unlink("NORA3.nc") #' } #' @export Access_NORA3 <- function( variable, # which variable dateStart, dateStop, # time-window + extent = NULL, leadTimeHour, # NORA3 specific arguments - cores = 1, - fileName, compression = NA, # file storing - removeTemporary = TRUE, - writeFile = TRUE) { - ## Input Checks ============ - message("###### Checking Request Validity") - - ### fileName - if (missing(fileName)) { - stop("Please specify a filename.") - } + fileName, compression = NA # file storing + ) { + ## Input Checks ============ + message("###### Checking Request Validity") + ### fileName + if (missing(fileName)) { + fileName <- NULL + } + if (!is.null(fileName)) { fileName <- normalizePath(fileName, mustWork = FALSE) + } - ### time-window exceeded, we do this in UTC to avoid daylight savings shenanigans - Start <- as.POSIXct(paste0(dateStart, ":00:00"), tz = "UTC") - Stop <- as.POSIXct(paste0(dateStop, ":00:00"), tz = "UTC") + ### time-window exceeded, we do this in UTC to avoid daylight savings shenanigans + Start <- as.POSIXct(paste0(dateStart, ":00:00"), tz = "UTC") + Stop <- as.POSIXct(paste0(dateStop, ":00:00"), tz = "UTC") - ### actual checks - QuickFacts_ls <- Discovery_QuickFacts("NORA3") - warning(paste("Cannot validate user-specified dateStop argument as", QuickFacts_ls$name, "is released continuously. You may want to consult the download tab at", QuickFacts_ls$url, "to ensure that the data you query is available.")) - InCheck_ls <- list( - Variable = list( - Input = variable, - Allowed = Discovery_Variables("NORA3")$name, - Operator = "in" - ), - Time = list( - Input = c(Start, Stop), - Allowed = c(QuickFacts_ls$time$extent[1], paste0(format(Sys.time(), "%Y-%m-%d %H"), ":00")), # assuming current day and hour as possible end since dataset is released ongoingly - Operator = "exceeds" - ), - leadTimeHour = list( - Input = leadTimeHour, - Allowed = QuickFacts_ls$leadtime, - Operator = "in" - ), - HourCheck = list( - Input = format(c(Start, Stop), "%H"), - Allowed = c("00", "06", "12", "18"), - Operator = "in" - ) + ### actual checks + QuickFacts_ls <- Discovery_QuickFacts("NORA3") + warning(paste("Cannot validate user-specified dateStop argument as", QuickFacts_ls$name, "is released continuously. You may want to consult the download tab at", QuickFacts_ls$url, "to ensure that the data you query is available.")) + InCheck_ls <- list( + Variable = list( + Input = variable, + Allowed = Discovery_Variables("NORA3")$name, + Operator = "in" + ), + Time = list( + Input = c(Start, Stop), + Allowed = c(QuickFacts_ls$time$extent[1], paste0(format(Sys.time(), "%Y-%m-%d %H"), ":00")), # assuming current day and hour as possible end since dataset is released ongoingly + Operator = "exceeds" + ), + leadTimeHour = list( + Input = leadTimeHour, + Allowed = QuickFacts_ls$leadtime, + Operator = "in" + ), + HourCheck = list( + Input = format(c(Start, Stop), "%H"), + Allowed = c("00", "06", "12", "18"), + Operator = "in" ) - Helper_InputChecker(inputCheck = InCheck_ls) + ) - ## Metadata - Citation <- paste0("NORA3 (DOI:", Discovery_DOI(dataSet = "NORA3"), ") data provided by the The Norwegian Meteorological institute obtained on ", Sys.Date()) - names(Citation) <- "Citation" - callargs <- mget(names(formals()), sys.frame(sys.nframe())) - callargs[sapply(callargs, is.null)] <- "NULL" - callargs[sapply(callargs, class) == "name"] <- "" - names(callargs) <- paste("Call", names(callargs), sep = "_") - Meta_vec <- c(Citation, unlist(callargs)) + # Commenting this out so you can also subset on x/y coordinates + # if (exists("extent")) { + # InCheck_ls <- c( + # InCheck_ls, + # list( + # Extent_Longitude = list( + # Input = extent[1:2], + # Allowed = QuickFacts_ls$space$extent[1:2], + # Operator = "exceeds" + # ), + # Extent_Latitude = list( + # Input = extent[3:4], + # Allowed = QuickFacts_ls$space$extent[3:4], + # Operator = "exceeds" + # ) + # ) + # ) + # } - ## Data files & extraction varnames ========= - NORA3_df <- Discovery_Variables("NORA3") - FilePrefix <- NORA3_df$datafile[variable == NORA3_df$name] - ExtractVar <- NORA3_df$varname[variable == NORA3_df$name] - Unit <- NORA3_df$unit[variable == NORA3_df$name] + Helper_InputChecker(inputCheck = InCheck_ls) - ## Download preparations ========= - ## temporary files names, we do this in UTC to avoid daylight savings shenanigans - TimeAssing <- Datetimes <- seq( - from = Start, - to = Stop, - by = "6 hour" - ) - Datetimes <- format(Datetimes, "%Y%m%d%H") - FNames <- paste0("TEMP_", "fc", Datetimes, "_", stringr::str_pad(leadTimeHour, 3, "left", 0), FilePrefix, ".nc") + ## Data files & extraction varnames ========= + NORA3_df <- Discovery_Variables("NORA3") + FilePrefix <- NORA3_df$datafile[NORA3_df$name == variable] + + ## Download preparations ========= + ## temporary files names used for URL creation, we do this in UTC to avoid daylight savings shenanigans + DateTimes <- seq( + from = Start, + to = Stop, + by = "6 hour" + ) + Datetimes <- format(DateTimes, "%Y%m%d%H") - ## File Check ========= - FCheck <- Helper_FileCheck(fileName = fileName, loadFun = NC_Read, load = TRUE, verbose = TRUE) + ## File Check ========= + if (!is.null(fileName)) { + FCheck <- Helper_FileCheck(fileName = fileName, loadFun = ncdfCF::open_ncdf, load = TRUE, verbose = TRUE) if (!is.null(FCheck)) { - terra::time(FCheck) <- TimeAssing - return(FCheck) + return(FCheck) } + } - ## Download execution ========= - message("###### Data Download") - URLS <- sapply(FNames, FUN = function(FName) { - Year <- substr(FName, 8, 11) - Month <- substr(FName, 12, 13) - Day <- substr(FName, 14, 15) - Hour <- substr(FName, 16, 17) - paste("https://thredds.met.no/thredds/fileServer/nora3", Year, Month, Day, Hour, - gsub(FName, pattern = "TEMP_", replacement = ""), - sep = "/" - ) - }) - FilestoLoad <- Helper_DirectDownload(url = URLS, fileName = FNames, cores = cores) - - ## Loading Data ================================= - message("###### Loading Downloaded Data from Disk") - MetNo_rast <- Helper_LoadFiles(fileName = FilestoLoad, dates = TimeAssing) - - ## Variable Extraction ================================= - message("###### Extracting Requested Variable") - VarLyr <- which(startsWith(names(MetNo_rast), ExtractVar)) - MetNo_rast <- MetNo_rast[[VarLyr]] - - ## Exports ================================= - message("###### Data Export & Return") + ## Subsetting parameters ========= + subset <- if (!is.null(extent)) { + if (all(extent < 1000)) { # Differentiate between latitude/longitude and x/y + list(longitude = extent[1:2], latitude = extent[3:4]) + } else { + list(x = extent[1:2], y = extent[3:4]) + } + } else { + if (is.null(fileName)) { + stop("For now, there persist some errors when saving a file from a NULL extent call with this function. Please either specify no fileName thus keeping the data in memory or specify an extent.") + } + list() + } + subset <- c(subset, list(time = c(as.character(Start), as.character(Stop + 21600)))) # Stop date/hour inclusive - # ### Assign additional information, handled above now - # terra::time(MetNo_rast) <- TimeAssing - terra::metags(MetNo_rast) <- Meta_vec + ## Download execution ========= + message("###### Data Download") + URLs <- sapply(Datetimes, FUN = function(Datetime) { + Year <- substr(Datetime, 1, 4) + Month <- substr(Datetime, 5, 6) + Day <- substr(Datetime, 7, 8) + Hour <- substr(Datetime, 9, 10) + paste("https://thredds.met.no/thredds/dodsC/nora3", Year, Month, Day, Hour, + paste0("fc", Datetime, "_", stringr::str_pad(leadTimeHour, 3, "left", 0), FilePrefix, ".nc"), + sep = "/" + ) + }) + MetNo_cf <- Helper_AccessCF(URLs = URLs, variable = variable, subset = subset) - ### write file - if (writeFile) { - NC_Write( - spatRaster = MetNo_rast, fileName = fileName, - varName = variable, - longName = ExtractVar, - unit = Unit, - meta = Meta_vec, compression = compression - ) - MetNo_rast <- NC_Read(fileName = fileName) - } + ## Exports ================================= + message("###### Data Export & Return") - ### unlink temporary files - if (removeTemporary & writeFile) { - unlink(FNames) - } + ## Metadata + callargs <- paste0("ClimHub::", paste(deparse(match.call()), collapse = ", ")) + Citation <- paste0("NORA3 (DOI:", Discovery_DOI(dataSet = "NORA3"), ") data provided by the The Norwegian Meteorological institute obtained on ", Sys.Date()) + MetNo_cf$set_attribute("source", "NC_CHAR", Citation) + MetNo_cf$set_attribute("comment", "NC_CHAR", paste("Created on", Sys.time(), "with the Access_NORA3() function from ClimHub version", packageVersion("ClimHub"))) + MetNo_cf$set_attribute("provenance", "NC_CHAR", callargs) - ### return object - return(MetNo_rast) + ### Optionally write file and return + if (is.null(fileName)) { + ds <- ncdfCF::create_ncdf() + ds$add_variable(MetNo_cf) + ds + } else { + MetNo_cf$save(fileName) + } } diff --git a/R/Discovery_Functionality.r b/R/Discovery_Functionality.r index 1bb4148..68578e6 100644 --- a/R/Discovery_Functionality.r +++ b/R/Discovery_Functionality.r @@ -7,7 +7,7 @@ #' @importFrom jsonlite fromJSON #' #' @return Throws an error message if user-provided dataSet string is not recognised in metadata library. -#' +#' #' @author Erik Kusch #' #' @seealso \code{\link{Discovery_Library}}, \code{\link{Discovery_Variables}}, \code{\link{Discovery_DOI}}, \code{\link{Discovery_QuickFacts}}. @@ -38,7 +38,7 @@ Discovery_DataSet.Check <- function(dataSet) { #' @importFrom jsonlite fromJSON #' #' @return List. Contains information of data set, type, variables, resolution, citation, etc. -#' +#' #' @author Erik Kusch #' #' @seealso \code{\link{Discovery_Library}}, \code{\link{Discovery_Variables}}, \code{\link{Discovery_DOI}}, \code{\link{Discovery_QuickFacts}}, \code{\link{Discovery_Citation}}. @@ -50,12 +50,13 @@ Discovery_DataSet.Check <- function(dataSet) { Discovery_Read <- function(dataSet = "NULL") { owner <- "Clim-Hub" repo <- "ClimHub" + branch <- "refs/heads/18-access_-functions-using-thredds-servers" # master path <- "product-metadata" Discovery_DataSet.Check(dataSet) # URL of the raw JSON file - URL <- paste0("https://raw.githubusercontent.com/", owner, "/", repo, "/master/", path, "/", paste0(dataSet, ".json")) + URL <- paste0("https://raw.githubusercontent.com/", owner, "/", repo, "/", branch, "/", path, "/", paste0(dataSet, ".json")) # Read JSON content json_data <- jsonlite::fromJSON(URL) diff --git a/R/Helper_AccessCF.r b/R/Helper_AccessCF.r new file mode 100644 index 0000000..74195b4 --- /dev/null +++ b/R/Helper_AccessCF.r @@ -0,0 +1,59 @@ +#' @title Execute direct download calls with ncdfCF +#' +#' @description Loops over all supplied URLs assuming these query netCDF files from open hosts. These are then registered and subsetted for variable and extent using ncdfCF before being downloaded and appended by the "time" axis. +#' +#' @param URLs Character. Vector of URLs for download. +#' @param variable Character. Variable name to extract from the netCDF files. +#' @param subset List, optional. A list with the ranges along the axes of the data variable to subset. +#' @param verbose Logical. If progress should be displayed in the console. +#' @return A CFVariable object containing the requested data. +#' +#' @author Erik Kusch, Patrick Van Laake +#' +#' @examples +#' Helper_AccessCF( +#' URLs = "https://thredds.met.no/thredds/dodsC/nora3/2011/05/28/12/fc2011052812_009_sfx.nc", +#' variable = "T2M", +#' subset = list( +#' longitude = c(0, 40), +#' latitude = c(50, 60) +#' ) +#' ) +#' +#' # subsetting with time and extent +#' Helper_AccessCF( +#' URLs = c( +#' "https://thredds.met.no/thredds/dodsC/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/tas/eqm/hist/noresm-r1i1p1f1-hclim/noresm-r1i1p1f1-hclim_hist_eqm-sn2018v2005_rawbc_norway_1km_tas_daily_2019.nc4", +#' "https://thredds.met.no/thredds/dodsC/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/tas/eqm/hist/noresm-r1i1p1f1-hclim/noresm-r1i1p1f1-hclim_hist_eqm-sn2018v2005_rawbc_norway_1km_tas_daily_2020.nc4", +#' "https://thredds.met.no/thredds/dodsC/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/tas/eqm/ssp370/noresm-r1i1p1f1-hclim/noresm-r1i1p1f1-hclim_ssp370_eqm-sn2018v2005_rawbc_norway_1km_tas_daily_2021.nc4", +#' "https://thredds.met.no/thredds/dodsC/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/tas/eqm/ssp370/noresm-r1i1p1f1-hclim/noresm-r1i1p1f1-hclim_ssp370_eqm-sn2018v2005_rawbc_norway_1km_tas_daily_2022.nc4" +#' ), +#' variable = "tas", +#' subset = list( +#' lon = c(6, 8), +#' lat = c(62, 64), +#' time = c("2019-08-01T00:00:00", "2022-09-18T00:00:00") +#' ) +#' ) +Helper_AccessCF <- function(URLs, variable, subset = list(), verbose = TRUE) { + ## make progress bar + if (verbose) { + pb <- Helper_Progress(iterLength = length(URLs), text = "Downloading Data") + } + + ## loading data + out <- NULL + for (LoadIter in seq_along(URLs)) { + iter_dataset <- NC_Read(fileName = URLs[LoadIter], vars = variable, subset) + iter_var <- iter_dataset[[variable]] + if (verbose) { + pb$tick(tokens = list(layer = LoadIter)) + } + if (is.null(out)) { + out <- iter_var + } else { + out$append(iter_var, "time") + } # "time" should be an argument to this function + } + out +} diff --git a/R/Helper_CallString.r b/R/Helper_CallString.r new file mode 100644 index 0000000..f8c5d59 --- /dev/null +++ b/R/Helper_CallString.r @@ -0,0 +1,23 @@ +#' @title Prepare metadata string for storing in NetCDF +#' @description Takes function call arguments and prepares a named vector suitable for storing as metadata attributes in NetCDF files. Optionally, also preprends a citation string. +#' +#' @param callargs Vector. A named vector of function call arguments to be stored as metadata. +#' @param functionName Character. The name of the function being called and whose arguments are stored in callargs. +#' @param citation Optional, Character. A citation string to be prepended to the metadata. +#' +#' @return A named vector suitable for storing as metadata attributes in NetCDF files. +#' +#' @author Erik Kusch +#' +#' @examples +#' callargs <- c(variable = "TS", dateStart = "1961-08-01 00", dateStop = "1961-08-02 18") +#' functionName <- "Access_NORA3" +#' citation <- "Please cite NORA3 data as: ..." +#' Helper_CallString(callargs, functionName, citation) +Helper_CallString <- function(callargs, functionName, citation = NULL) { + callargs[sapply(callargs, is.null)] <- "NULL" + callargs[sapply(callargs, class) == "name"] <- "" + names(callargs) <- paste(functionName, names(callargs), sep = "+") + Meta_vec <- c(c(Citation = citation), unlist(callargs)) + return(Meta_vec) +} diff --git a/R/Helper_InputChecker.r b/R/Helper_InputChecker.r index dd0f3e1..2ced139 100644 --- a/R/Helper_InputChecker.r +++ b/R/Helper_InputChecker.r @@ -1,4 +1,3 @@ -#' Check Validity of User Input #' @title Check Validity of User Input #' @description Loops over contents of a named list of lists where each sublist contains the pointers Input, Allowed, and Operator. #' diff --git a/R/Helper_VarDFtoJSON.r b/R/Helper_VarDFtoJSON.r new file mode 100644 index 0000000..a820153 --- /dev/null +++ b/R/Helper_VarDFtoJSON.r @@ -0,0 +1,32 @@ +#' @title Write Data Frame to JSON +#' +#' @description Writes a data frame to a JSON file. Designed to simplify creation of JSON files from variable metadata data frames. +#' +#' @param df A data frame to be written to JSON. +#' @param outfile Character string with the path to the output JSON file. +#' +#' @importFrom jsonlite toJSON +#' +#' @return A JSON file saved to the specified path. +#' +#' @author Erik Kusch +#' +#' @examples +#' NORA3_df <- Discovery_Variables(dataSet = "NORA3") +#' Helper_VarDFtoJSON(NORA3_df, "NORA3_variables.json") +#' +Helper_VarDFtoJSON <- function(df, outfile = "variables.json") { + # Ensure character columns (avoid factors in JSON) + df[] <- lapply(df, as.character) + + # Convert to JSON: each row = one element + json_txt <- jsonlite::toJSON( + df, + pretty = TRUE, + auto_unbox = TRUE, + na = "null" + ) + + # Write to file + writeLines(json_txt, outfile) +} diff --git a/R/NC_Read.r b/R/NC_Read.r index 4697343..d73fd42 100644 --- a/R/NC_Read.r +++ b/R/NC_Read.r @@ -1,33 +1,68 @@ -#' @title Read NetCDF files and their metadata +#' @title Read netCDF files #' -#' @description Read NetCDF files and their metadata attributes. Metadata from the NetCDF file is read and attached to the returned SpatRaster via `terra::metags()`. +#' @description Read netCDF files and their metadata. Specific data variables may be extracted and optionally subsetted over the dimensions of the data variable. #' -#' @param fileName Character. Filename including directory for reading/writing. +#' In the returned `CFDataset`, the data array of individual data variables need not have been loaded into memory. #' -#' @importFrom terra rast -#' @importFrom ncdf4 nc_open -#' @importFrom ncdf4 ncatt_get -#' @importFrom ncdf4 nc_close -#' @importFrom terra metags +#' @param fileName Character. Fully qualified name of the netCDF resource. This may be on a local file system or on a THREDDS server. +#' @param vars Character vector, optional. If supplied, only the indicated data variables are read from the netCDF resource. +#' @param ... Optional. Arguments for subsetting the data variables. When supplied, these must be of the form `axis_name = c(0, 90)`, naming an axis of the data variables and the extreme values of the range to extract. There may be multiple such entries, or they can alternatively be supplied in a named list. +#' @param forWriting Logical, default is `FALSE`. If `TRUE`, the netCDF resource will be opened for writing. This is typically only allowable on netCDF files on a local file system. +#' @return A `CFDataset` with the data variables, optionally subsetted. #' -#' @return A SpatRaster with metadata -#' -#' @author Erik Kusch +#' @author Patrick Van Laake, Erik Kusch #' #' @examples -#' Read_ras <- NC_Read(fileName = system.file("extdata", "KiN_rast.nc", package = "ClimHub")) -#' terra::metags(Read_ras)[terra::metags(Read_ras)$name == "Citation", ] +#' FNAME <- system.file("extdata", "NORA3.nc", package = "ClimHub") +#' # Reading entire CFDataset +#' NC_Read(fileName = FNAME) +#' # Reading just specific variable +#' NC_Read(fileName = FNAME, vars = "T2M") +#' # Read while subsetting +#' NC_Read( +#' fileName = FNAME, +#' vars = "T2M", +#' list( +#' longitude = c(10, 20), +#' latitude = c(55, 65), +#' time = "2001-08-01T06:00:00" +#' ) +#' ) #' @export -NC_Read <- function(fileName) { - ## we need to load the file now (read path from fileName) - nc_obj <- rast(fileName) - ## Reading metadata and assigning it to returned raster - nc_handle <- nc_open(fileName) - Meta <- ncdf4::ncatt_get(nc_handle, 0) - nc_close(nc_handle) - Meta_vec <- unlist(Meta) - terra::metags(nc_obj) <- Meta_vec - - ## return object - return(nc_obj) +NC_Read <- function(fileName, vars, ..., forWriting = FALSE) { + ds <- ncdfCF::open_ncdf(resource = fileName, write = forWriting) + if (inherits(ds, "CFDataset")) { + subs <- list(...) + if (is.list(subs) && length(subs)) subs <- subs[[1L]] + if (length(subs)) { + # Subset the variables + if (missing(vars)) { + vars <- ds$var_names + } + ds_new <- ncdfCF::create_ncdf() + lapply(vars, function(v) { + var <- ds[[v]]$subset(subs) + if (inherits(var, "CFVariable")) { + ds_new$add_variable(var) + } + }) + return(ds_new) + } else { + # Get the full extent of the data variables + if (missing(vars)) { + return(ds) + } else { + ds_new <- ncdfCF::create_ncdf() + lapply(vars, function(v) { + var <- ds[[v]] + if (inherits(var, "CFVariable")) { + ds_new$add_variable(var) + } + }) + return(ds_new) + } + } + } else { + stop(paste("Could not open the netCDF resource:", fileName)) + } } diff --git a/data-raw/DATASET.R b/data-raw/DATASET.R index 0645963..e9aec46 100644 --- a/data-raw/DATASET.R +++ b/data-raw/DATASET.R @@ -2,174 +2,167 @@ setwd("C:/Users/erikkus/OneDrive - CICERO senter for klimaforskning/Documents/31569 - ClimHub/CLIMHUB_GitHub") document() -build() +# build() load_all() +# Subsetted NORA3 file ----------------- +NORA3 <- Access_NORA3( + variable = "T2M", dateStart = "2001-08-01 00", dateStop = "2001-08-01 21", + extent = c(0, 30, 50, 75), leadTimeHour = 3, + fileName = file.path(getwd(), "inst/extdata", "NORA3.nc") +) + # Make NORA3 raw file ------------------ NORA3_rast <- Access_NORA3( - variable = "Air Temperature 2m (Height = 2)", # which variable - dateStart = "1995-01-03 00", dateStop = "1995-01-03 18", # time-window - leadTimeHour = 3, cores = 1, - fileName = file.path(getwd(), "inst/extdata", "NORA3_rast.nc"), compression = 9, # file storing - removeTemporary = TRUE + variable = "T2M", dateStart = "2001-08-01 00", dateStop = "2001-08-01 00", + leadTimeHour = 3, + fileName = file.path(getwd(), "inst/extdata", "NORA3_FULL.nc") ) # usethis::use_data(NORA3_rast) -# Make Klima i Norge raw file ------------------ -KiN_rast <- Access_KlimaiNorge2100( - variable = "Mean Air Temperature", - dateStart = "2025-01-01", - dateStop = "2025-01-10", - model = "CNRM_CCLM", - scenario = "rcp85", - cores = 1, - fileName = file.path(getwd(), "inst/extdata", "KiN_rast.nc"), - removeTemporary = FALSE, - writeFile = FALSE -) -## data is stored multiplied by 10 so needs to be adjusted here -KiN_rast <- NC_Write( - spatRaster = KiN_rast / 10, - fileName = file.path(getwd(), "inst/extdata", "KiN_rast.nc"), - varName = unique(terra::varnames(KiN_rast)), - longName = unique(terra::longnames(KiN_rast)), - unit = unique(terra::units(KiN_rast)), - meta = setNames(terra::metags(KiN_rast)[, 2], terra::metags(KiN_rast)[, 1]), - compression = 9 -) -unlink(list.files(pattern = "TEMP_")) - -# Jotunheimen boundary as spatialfeatureobject ------------------ -Jotunheimen_sf <- sf::st_read("data-raw/Shape/Shape-polygon.shp") -usethis::use_data(Jotunheimen_sf) - -# Peaks as spatialfeatureobject ------------------ -Peaks_df <- read.csv("data-raw/NorPeaks.csv")[, -1:-3] -Peaks_df$Longitude <- as.numeric(stringr::str_trim(Peaks_df$Longitude)) -Nor2K_sf <- sf::st_as_sf(Peaks_df, coords = c("Longitude", "Latitude"), crs = sf::st_crs(Jotunheimen_sf)) -usethis::use_data(Nor2K_sf, overwrite = TRUE) - -# Metrics.ETCCDI objects ------------------ -## Raw Data ----- -TX_rast <- Access_KlimaiNorge2100( - variable = "Maximum Air Temperature", - dateStart = "2050-01-01", - dateStop = "2051-12-31", - scenario = "rcp85", - model = "CNRM_CCLM", - fileName = file.path(getwd(), "inst/extdata", "KiN_TX.nc"), - writeFile = FALSE -) - -TN_rast <- Access_KlimaiNorge2100( - variable = "Minimum Air Temperature", - dateStart = "2050-01-01", - dateStop = "2051-12-31", - scenario = "rcp85", - model = "CNRM_CCLM", - fileName = file.path(getwd(), "inst/extdata", "KiN_TN.nc"), - writeFile = FALSE -) - -BP_TM_rast <- Access_KlimaiNorge2100( - variable = "Mean Air Temperature", - dateStart = "1971-01-01", - dateStop = "2000-12-31", - model = "CNRM_CCLM", - fileName = file.path(getwd(), "inst/extdata", "KiN_BP_TM.nc"), - writeFile = FALSE -) - -RR_rast <- Access_KlimaiNorge2100( - variable = "Precipitation", - dateStart = "2050-01-01", - dateStop = "2051-12-31", - scenario = "rcp85", - model = "CNRM_CCLM", - fileName = file.path(getwd(), "inst/extdata", "KiN_RR.nc"), - writeFile = FALSE -) -# RR_rast <- RR_rast / 10 - -BP_RR_rast <- Access_KlimaiNorge2100( - variable = "Precipitation", - dateStart = "1971-01-01", - dateStop = "2000-12-31", - model = "CNRM_CCLM", - fileName = file.path(getwd(), "inst/extdata", "KiN_BP_RR.nc"), - writeFile = FALSE -) -# BP_RR_rast <- BP_RR_rast / 10 - -## Cropping ----- -datals <- list( - TX = TX_rast, TN = TN_rast, RR = RR_rast, - BP_TM = BP_TM_rast, BP_RR = BP_RR_rast -) - -x <- lapply(names(datals), function(name) { - # name <- "X" - print(name) - FNAME <- file.path(getwd(), "inst/extdata", paste0("Sognefjord_", name, ".nc")) - if (file.exists(FNAME)) { - ret <- terra::rast(FNAME) - } else { - x <- datals[[name]] - # y <- Spatial_Reproject(x, Jotunheimen_sf) - z <- Spatial_Limit(spatRaster = x, shape = ext(c(1e4, 1.5e5, 6.76e6, 6.86e+06))) - if (unique(terra::units(x)) == "K") { - # z <- z / 100 - } else { - z <- z / 10 - terra::units(z) <- "mm" - } - # terra::plot(z[[1]]) - ret <- NC_Write( - spatRaster = z, - fileName = FNAME, - varName = unique(terra::varnames(x)), - longName = unique(terra::longnames(x)), - unit = unique(terra::units(x)), - meta = setNames(terra::metags(x)[, 2], terra::metags(x)[, 1]), - compression = 9 - ) - } - ret -}) -unlink(list.files(pattern = "TEMP_")) - -## Percentiles ----- -stop("Make percentiles for BASEPeriods") -## make Reference into percentiles -library(terra) -BASEPeriod <- terra::rast("inst/extdata/Jotunheimen_BASEPeriod.nc") -percentiles <- app(BASEPeriod, fun = function(x) { - quantile(x, probs = c(0.1, 0.9), na.rm = TRUE) -}) -# Optional: give meaningful layer names -names(percentiles) <- c("p10", "p90") -terra::time(percentiles) <- rep(time(BASEPeriod[[1]]), 2) - -BASEPeriod_rast <- NC_Write( - spatRaster = percentiles / 100, - fileName = file.path(getwd(), "inst/extdata", "Jotunheimen_BP_TM.nc"), - varName = "Air Temperature Percentiles", - longName = "Air Temperature Percentiles for 1971-2000", - unit = "K", - meta = setNames(terra::metags(BASEPeriod_rast)[, 2], terra::metags(BASEPeriod_rast)[, 1]), - compression = 9 -) - -BASEPeriod_rast <- terra::rast("inst/extdata/Jotunheimen_BASEPeriod.nc") - - -unlink(list.files(pattern = "TEMP_", full.names = TRUE)) - -### Sufficiently large file for testing of NC_Write ------------------ -NORA3 <- Access_NORA3( - variable = "TS (Surface temperature)", # which variable - dateStart = "1971-01-01 00", dateStop = "1971-05-31 18", # time-window - leadTimeHour = 3, cores = 1, - fileName = "NORA3.nc", compression = NA, # file storing - removeTemporary = TRUE -) +# # Make Klima i Norge raw file ------------------ +# KiN_rast <- Access_KlimaiNorge2100( +# variable = "mean_air_temperature", +# dateStart = "1995-01-01", +# dateStop = "1995-01-10", +# model = "noresm-r1i1p1f1-hclim", +# method = "eqm", +# scenario = "ssp370", +# fileName = file.path(getwd(), "inst/extdata", "KiN_rast.nc") +# ) + + +# # Jotunheimen boundary as spatialfeatureobject ------------------ +# Jotunheimen_sf <- sf::st_read("data-raw/Shape/Shape-polygon.shp") +# usethis::use_data(Jotunheimen_sf) + +# # Peaks as spatialfeatureobject ------------------ +# Peaks_df <- read.csv("data-raw/NorPeaks.csv")[, -1:-3] +# Peaks_df$Longitude <- as.numeric(stringr::str_trim(Peaks_df$Longitude)) +# Nor2K_sf <- sf::st_as_sf(Peaks_df, coords = c("Longitude", "Latitude"), crs = sf::st_crs(Jotunheimen_sf)) +# usethis::use_data(Nor2K_sf, overwrite = TRUE) + +# # # Metrics.ETCCDI objects ------------------ +# # ## Raw Data ----- +# # TX_rast <- Access_KlimaiNorge2100( +# # variable = "Maximum Air Temperature", +# # dateStart = "2050-01-01", +# # dateStop = "2051-12-31", +# # scenario = "rcp85", +# # model = "CNRM_CCLM", +# # fileName = file.path(getwd(), "inst/extdata", "KiN_TX.nc"), +# # writeFile = FALSE +# # ) + +# # TN_rast <- Access_KlimaiNorge2100( +# # variable = "Minimum Air Temperature", +# # dateStart = "2050-01-01", +# # dateStop = "2051-12-31", +# # scenario = "rcp85", +# # model = "CNRM_CCLM", +# # fileName = file.path(getwd(), "inst/extdata", "KiN_TN.nc"), +# # writeFile = FALSE +# # ) + +# # BP_TM_rast <- Access_KlimaiNorge2100( +# # variable = "Mean Air Temperature", +# # dateStart = "1971-01-01", +# # dateStop = "2000-12-31", +# # model = "CNRM_CCLM", +# # fileName = file.path(getwd(), "inst/extdata", "KiN_BP_TM.nc"), +# # writeFile = FALSE +# # ) + +# # RR_rast <- Access_KlimaiNorge2100( +# # variable = "Precipitation", +# # dateStart = "2050-01-01", +# # dateStop = "2051-12-31", +# # scenario = "rcp85", +# # model = "CNRM_CCLM", +# # fileName = file.path(getwd(), "inst/extdata", "KiN_RR.nc"), +# # writeFile = FALSE +# # ) +# # # RR_rast <- RR_rast / 10 + +# # BP_RR_rast <- Access_KlimaiNorge2100( +# # variable = "Precipitation", +# # dateStart = "1971-01-01", +# # dateStop = "2000-12-31", +# # model = "CNRM_CCLM", +# # fileName = file.path(getwd(), "inst/extdata", "KiN_BP_RR.nc"), +# # writeFile = FALSE +# # ) +# # # BP_RR_rast <- BP_RR_rast / 10 + +# # ## Cropping ----- +# # datals <- list( +# # TX = TX_rast, TN = TN_rast, RR = RR_rast, +# # BP_TM = BP_TM_rast, BP_RR = BP_RR_rast +# # ) + +# # x <- lapply(names(datals), function(name) { +# # # name <- "X" +# # print(name) +# # FNAME <- file.path(getwd(), "inst/extdata", paste0("Sognefjord_", name, ".nc")) +# # if (file.exists(FNAME)) { +# # ret <- terra::rast(FNAME) +# # } else { +# # x <- datals[[name]] +# # # y <- Spatial_Reproject(x, Jotunheimen_sf) +# # z <- Spatial_Limit(spatRaster = x, shape = ext(c(1e4, 1.5e5, 6.76e6, 6.86e+06))) +# # if (unique(terra::units(x)) == "K") { +# # # z <- z / 100 +# # } else { +# # z <- z / 10 +# # terra::units(z) <- "mm" +# # } +# # # terra::plot(z[[1]]) +# # ret <- NC_Write( +# # spatRaster = z, +# # fileName = FNAME, +# # varName = unique(terra::varnames(x)), +# # longName = unique(terra::longnames(x)), +# # unit = unique(terra::units(x)), +# # meta = setNames(terra::metags(x)[, 2], terra::metags(x)[, 1]), +# # compression = 9 +# # ) +# # } +# # ret +# # }) +# # unlink(list.files(pattern = "TEMP_")) + +# # ## Percentiles ----- +# # stop("Make percentiles for BASEPeriods") +# # ## make Reference into percentiles +# # library(terra) +# # BASEPeriod <- terra::rast("inst/extdata/Jotunheimen_BASEPeriod.nc") +# # percentiles <- app(BASEPeriod, fun = function(x) { +# # quantile(x, probs = c(0.1, 0.9), na.rm = TRUE) +# # }) +# # # Optional: give meaningful layer names +# # names(percentiles) <- c("p10", "p90") +# # terra::time(percentiles) <- rep(time(BASEPeriod[[1]]), 2) + +# # BASEPeriod_rast <- NC_Write( +# # spatRaster = percentiles / 100, +# # fileName = file.path(getwd(), "inst/extdata", "Jotunheimen_BP_TM.nc"), +# # varName = "Air Temperature Percentiles", +# # longName = "Air Temperature Percentiles for 1971-2000", +# # unit = "K", +# # meta = setNames(terra::metags(BASEPeriod_rast)[, 2], terra::metags(BASEPeriod_rast)[, 1]), +# # compression = 9 +# # ) + +# # BASEPeriod_rast <- terra::rast("inst/extdata/Jotunheimen_BASEPeriod.nc") + + +# # unlink(list.files(pattern = "TEMP_", full.names = TRUE)) + +# # ### Sufficiently large file for testing of NC_Write ------------------ +# # NORA3 <- Access_NORA3( +# # variable = "TS (Surface temperature)", # which variable +# # dateStart = "1971-01-01 00", dateStop = "1971-05-31 18", # time-window +# # leadTimeHour = 3, cores = 1, +# # fileName = "NORA3.nc", compression = NA, # file storing +# # removeTemporary = TRUE +# ) diff --git a/inst/extdata/KiN_rast.nc b/inst/extdata/KiN_rast.nc deleted file mode 100644 index f143713..0000000 Binary files a/inst/extdata/KiN_rast.nc and /dev/null differ diff --git a/inst/extdata/NORA3.nc b/inst/extdata/NORA3.nc new file mode 100644 index 0000000..9b6f7b4 Binary files /dev/null and b/inst/extdata/NORA3.nc differ diff --git a/inst/extdata/NORA3_rast.nc b/inst/extdata/NORA3_FULL.nc similarity index 52% rename from inst/extdata/NORA3_rast.nc rename to inst/extdata/NORA3_FULL.nc index af21626..a61a00f 100644 Binary files a/inst/extdata/NORA3_rast.nc and b/inst/extdata/NORA3_FULL.nc differ diff --git a/inst/extdata/Sognefjord_RR.nc b/inst/extdata/Sognefjord_RR.nc deleted file mode 100644 index 682a9f5..0000000 Binary files a/inst/extdata/Sognefjord_RR.nc and /dev/null differ diff --git a/inst/extdata/Sognefjord_TN.nc b/inst/extdata/Sognefjord_TN.nc deleted file mode 100644 index 47a4eb7..0000000 Binary files a/inst/extdata/Sognefjord_TN.nc and /dev/null differ diff --git a/inst/extdata/Sognefjord_TX.nc b/inst/extdata/Sognefjord_TX.nc deleted file mode 100644 index 1b1a578..0000000 Binary files a/inst/extdata/Sognefjord_TX.nc and /dev/null differ diff --git a/man/Access_KlimaiNorge2100.Rd b/man/Access_KlimaiNorge2100.Rd index 73fbeee..037d7fe 100644 --- a/man/Access_KlimaiNorge2100.Rd +++ b/man/Access_KlimaiNorge2100.Rd @@ -8,65 +8,60 @@ Access_KlimaiNorge2100( variable, dateStart, dateStop, + extent = NULL, + method, model, - scenario = c("rcp45", "rcp85"), - cores = 1, + scenario, fileName, - compression = NA, - removeTemporary = TRUE, - writeFile = TRUE + compression = NA ) } \arguments{ \item{variable}{Character. An overview of Klima i Norge variables can be obtained with \code{Discovery_Variables(dataSet = "KlimaiNorge2100")}.} -\item{dateStart}{Character. "YYYY-MM-DD" date at which to start time series of downloaded data. Data is available daily at hourly intervals.} +\item{dateStart}{Character. "YYYY-MM-DD" date at which to start time series of downloaded data. Data is available at daily resolution starting from \code{1971-01-01}.} -\item{dateStop}{Character. "YYYY-MM-DD" date at which to stop time series of downloaded data. Data is available daily at hourly intervals.} +\item{dateStop}{Character. "YYYY-MM-DD" date at which to stop time series of downloaded data, inclusive of this date. Data is available at daily resolution up to \code{2100-12-31}.} -\item{model}{Character. An overview of climate models from which data can be obtained can be obtained with \code{Discovery_QuickFacts("KlimaiNorge2100")$models}.} - -\item{scenario}{Character. An overview of climate models from which data can be obtained can be obtained with \code{Discovery_QuickFacts("KlimaiNorge2100")$scenarios}. Note that this choice only affects data post-dating 2005-12-31.} +\item{extent}{Optional. The extent to subset the data to, in coordinates of the projection or decimal degrees of longitude and latitude. A numeric vector of length 4 with values minimum and maximum X/longitude and minimum and maximum Y/latitude, in that order. Valid ranges for projected X and Y coordinates are \verb{(-74500, 1119500, 6450500, 7999500)}, for longitude/latitude values \verb{(-1.309, 32.515, 57.765, 72.095)}. Defaults to \code{NULL}, returning full spatial range of data.} -\item{cores}{Optional, Integer. Number of cores to use for parallel downloads. Default NULL defines no parallelisation.} +\item{method}{Character. An overview of bias-correction methods from which data can be obtained can be obtained with \code{Discovery_QuickFacts("KlimaiNorge2100")$methods}.} -\item{fileName}{Character. A file name for the produced file, including path.} +\item{model}{Character. An overview of climate models from which data can be obtained can be obtained with \code{Discovery_QuickFacts("KlimaiNorge2100")$models}.} -\item{compression}{Optional, Integer. Compression level between 1 to 9 applied to final .nc file. Same as compression argument in terra::writeCDF(). Defaults to NA.} +\item{scenario}{Character. An overview of climate models from which data can be obtained can be obtained with \code{Discovery_QuickFacts("KlimaiNorge2100")$scenarios}. Note that this choice only affects data post-dating 2020-12-31.} -\item{removeTemporary}{Optional, Logical. Whether to delete temporary files after completion. Defaults to TRUE.} +\item{fileName}{Character, optional. A file name for the produced file, including path. If \code{NULL} or missing, a virtual data set will be returned from this function.} -\item{writeFile}{Optional, Logical. Whether to write final SpatRaster to disk as an .nc or to return information from memory. Setting to FALSE will prohibit removal of temporary files. Defaults to TRUE.} +\item{compression}{Optional, integer. Compression level between 1 to 9 applied to final netCDF file. Defaults to NA (no compression applied). Currently not used due to ncdfCF saving scheme.} } \value{ -SpatRaster. Contains the downloaded data and metadata attributes that can be retrieved with terra::metags(...): -\itemize{ -\item \emph{Citation} - A string for in-line citation of the data product -\item \emph{Call_} - A set of strings matching arguments supplied to the download function call -} +A \code{CFDataset} object which contains the downloaded data and relevant metadata attributes. If specified, also writes a netCDF file to disk. } \description{ -Downloads and processes data from the \href{https://www.miljodirektoratet.no/publikasjoner/2015/september-2015/klima-i-norge-2100/}{Klima_i_Norge_2100} data product hosted through \href{https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge_2100/catalog.html}{thredds.met.no}. +Downloads and processes data from the \href{https://www.met.no/nyhetsarkiv/framtidens-klima-i-norge-flere-oversvommelser-mer-torke-og-mindre-sno/_/attachment/inline/cc1ae8f3-277d-4077-adb9-313e5e28b947:b8073784517edb9392f78c9d82bc5b296db2fc3c/Klima\%20i\%20Norge\%20digital\%20low.pdf}{Klima_i_Norge_2100} data product hosted through \href{https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge/utgave2025/catalog.html}{thredds.met.no}. Specifically, this function provides access to the following datasets: \enumerate{ -\item \href{https://publikasjoner.nve.no/rapport/2016/rapport2016_59.pdf}{Gridded 1 x 1 km climate and hydrological projections for Norway} data contained within \href{https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge_2100/utgave2015/catalog.html}{utgave 2015}. +\item Gridded 1 x 1 km climate and hydrological projections for Norway data at daily scales contained within \href{https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/catalog.html}{DailyTimeSeries}. } + +\textbf{Note: not all combinations of variables, models, scenarios, and bias-correction methods are available. If you encounter an error, please first consult whether data is provided for the requested combination at \url{https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/catalog.html}. The function is designed to give you informative errors when this happens and you should find the offending URL in your console.} } \examples{ \dontrun{ Access_KlimaiNorge2100( - variable = "Maximum Air Temperature", - dateStart = "2004-08-01", - dateStop = "2006-09-17", - model = "CNRM_CCLM", - scenario = "rcp85", - cores = 1, + variable = "mean_air_temperature", + dateStart = "2019-08-01", + dateStop = "2022-09-17", + extent = c(0, 10, 60, 65), + method = "eqm", + model = "noresm-r1i1p1-remo", + scenario = "rcp45", fileName = "KlimaiNorge2100.nc", - compression = 9, - removeTemporary = TRUE + compression = 9 ) } } \author{ -Erik Kusch +Erik Kusch, Patrick Van Laake } diff --git a/man/Access_NORA3.Rd b/man/Access_NORA3.Rd index 6a1bd84..2561a43 100644 --- a/man/Access_NORA3.Rd +++ b/man/Access_NORA3.Rd @@ -8,12 +8,10 @@ Access_NORA3( variable, dateStart, dateStop, + extent = NULL, leadTimeHour, - cores = 1, fileName, - compression = NA, - removeTemporary = TRUE, - writeFile = TRUE + compression = NA ) } \arguments{ @@ -23,24 +21,16 @@ Access_NORA3( \item{dateStop}{Character. "YYYY-MM-DD HH" date at which to stop time series of downloaded data. Data is available daily at hours 00, 06, 12, and 18.} -\item{leadTimeHour}{Integer. Lead time of reanalysis. NORA3 leadtimes can be obtained with \code{Discovery_QuickFacts("NORA3")$leadtime}.} +\item{extent}{Optional. The extent to subset the data to, in coordinates of the projection or decimal degrees of longitude and latitude. A numeric vector of length 4 with values minimum and maximum X/longitude and minimum and maximum Y/latitude, in that order. Valid ranges for projected X and Y coordinates are \verb{(778360.875, 3442360.75, -1270477, 3193523)}, for longitude/latitude values \verb{(-30.168 85.793 44.025 84.057)}. Defaults to \code{NULL}, returning full spatial range of data.} -\item{cores}{Optional, Integer. Number of cores to use for parallel downloads. Default NULL defines no parallelisation.} +\item{leadTimeHour}{Integer. Lead time of reanalysis. NORA3 lead times can be obtained with \code{Discovery_QuickFacts("NORA3")$leadtime}.} \item{fileName}{Character. A file name for the produced file, including path.} -\item{compression}{Optional, Integer. Compression level between 1 to 9 applied to final .nc file. Same as compression argument in terra::writeCDF(). Defaults to NA.} - -\item{removeTemporary}{Optional, Logical. Whether to delete temporary files after completion. Defaults to TRUE.} - -\item{writeFile}{Optional, Logical. Whether to write final SpatRaster to disk as an .nc or to return information from memory. Setting to FALSE will prohibit removal of temporary files. Defaults to TRUE.} +\item{compression}{Optional, integer. Compression level between 1 to 9 applied to final netCDF file. Defaults to NA (no compression applied). Currently not used due to ncdfCF saving scheme.} } \value{ -SpatRaster. Contains the downloaded data and metadata attributes that can be retrieved with terra::metags(...): -\itemize{ -\item \emph{Citation} - A string for in-line citation of the data product -\item \emph{Call_} - A set of strings matching arguments supplied to the download function call -} +A \code{CFDataset} object which contains the downloaded data and relevant metadata attributes. If specified, also writes a netCDF file to disk. } \description{ Downloads and processes data from the NORA3 data product hosted through \href{https://thredds.met.no/thredds/projects/nora3.html}{thredds.met.no}. @@ -49,15 +39,14 @@ Specifically, this function provides access to the NORA3 files contained within \examples{ \dontrun{ NORA3 <- Access_NORA3( - variable = "TS (Surface temperature)", # which variable - dateStart = "1961-08-01 00", dateStop = "1961-08-02 18", # time-window - leadTimeHour = 3, cores = 1, - fileName = "NORA3.nc", compression = 9, # file storing - removeTemporary = TRUE + variable = "T2M", # which variable + dateStart = "1961-08-01 00", dateStop = "1961-08-02 18", # time-window + extent = c(0, 40, 50, 60), + leadTimeHour = 3, + fileName = "NORA3.nc", compression = 9 # file storing ) -unlink("NORA3.nc") } } \author{ -Erik Kusch +Erik Kusch, Patrick Van Laake } diff --git a/man/Helper_AccessCF.Rd b/man/Helper_AccessCF.Rd new file mode 100644 index 0000000..cdca625 --- /dev/null +++ b/man/Helper_AccessCF.Rd @@ -0,0 +1,52 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/Helper_AccessCF.r +\name{Helper_AccessCF} +\alias{Helper_AccessCF} +\title{Execute direct download calls with ncdfCF} +\usage{ +Helper_AccessCF(URLs, variable, subset = list(), verbose = TRUE) +} +\arguments{ +\item{URLs}{Character. Vector of URLs for download.} + +\item{variable}{Character. Variable name to extract from the netCDF files.} + +\item{subset}{List, optional. A list with the ranges along the axes of the data variable to subset.} + +\item{verbose}{Logical. If progress should be displayed in the console.} +} +\value{ +A CFVariable object containing the requested data. +} +\description{ +Loops over all supplied URLs assuming these query netCDF files from open hosts. These are then registered and subsetted for variable and extent using ncdfCF before being downloaded and appended by the "time" axis. +} +\examples{ +Helper_AccessCF( + URLs = "https://thredds.met.no/thredds/dodsC/nora3/2011/05/28/12/fc2011052812_009_sfx.nc", + variable = "T2M", + subset = list( + longitude = c(0, 40), + latitude = c(50, 60) + ) +) + +# subsetting with time and extent +Helper_AccessCF( + URLs = c( + "https://thredds.met.no/thredds/dodsC/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/tas/eqm/hist/noresm-r1i1p1f1-hclim/noresm-r1i1p1f1-hclim_hist_eqm-sn2018v2005_rawbc_norway_1km_tas_daily_2019.nc4", + "https://thredds.met.no/thredds/dodsC/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/tas/eqm/hist/noresm-r1i1p1f1-hclim/noresm-r1i1p1f1-hclim_hist_eqm-sn2018v2005_rawbc_norway_1km_tas_daily_2020.nc4", + "https://thredds.met.no/thredds/dodsC/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/tas/eqm/ssp370/noresm-r1i1p1f1-hclim/noresm-r1i1p1f1-hclim_ssp370_eqm-sn2018v2005_rawbc_norway_1km_tas_daily_2021.nc4", + "https://thredds.met.no/thredds/dodsC/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/tas/eqm/ssp370/noresm-r1i1p1f1-hclim/noresm-r1i1p1f1-hclim_ssp370_eqm-sn2018v2005_rawbc_norway_1km_tas_daily_2022.nc4" + ), + variable = "tas", + subset = list( + lon = c(6, 8), + lat = c(62, 64), + time = c("2019-08-01T00:00:00", "2022-09-18T00:00:00") + ) +) +} +\author{ +Erik Kusch, Patrick Van Laake +} diff --git a/man/Helper_CallString.Rd b/man/Helper_CallString.Rd new file mode 100644 index 0000000..0a053dd --- /dev/null +++ b/man/Helper_CallString.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/Helper_CallString.r +\name{Helper_CallString} +\alias{Helper_CallString} +\title{Prepare metadata string for storing in NetCDF} +\usage{ +Helper_CallString(callargs, functionName, citation = NULL) +} +\arguments{ +\item{callargs}{Vector. A named vector of function call arguments to be stored as metadata.} + +\item{functionName}{Character. The name of the function being called and whose arguments are stored in callargs.} + +\item{citation}{Optional, Character. A citation string to be prepended to the metadata.} +} +\value{ +A named vector suitable for storing as metadata attributes in NetCDF files. +} +\description{ +Takes function call arguments and prepares a named vector suitable for storing as metadata attributes in NetCDF files. Optionally, also preprends a citation string. +} +\examples{ +callargs <- c(variable = "TS", dateStart = "1961-08-01 00", dateStop = "1961-08-02 18") +functionName <- "Access_NORA3" +citation <- "Please cite NORA3 data as: ..." +Helper_CallString(callargs, functionName, citation) +} +\author{ +Erik Kusch +} diff --git a/man/Helper_InputChecker.Rd b/man/Helper_InputChecker.Rd index ee053b0..efa9788 100644 --- a/man/Helper_InputChecker.Rd +++ b/man/Helper_InputChecker.Rd @@ -16,9 +16,6 @@ Nothing. Only generates an error if a check did not succeed. \description{ Loops over contents of a named list of lists where each sublist contains the pointers Input, Allowed, and Operator. } -\details{ -Check Validity of User Input -} \examples{ Variable <- "Maximum Air Temperature" DateStart <- "1971-01-01" diff --git a/man/Helper_VarDFtoJSON.Rd b/man/Helper_VarDFtoJSON.Rd new file mode 100644 index 0000000..a3382f9 --- /dev/null +++ b/man/Helper_VarDFtoJSON.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/Helper_VarDFtoJSON.r +\name{Helper_VarDFtoJSON} +\alias{Helper_VarDFtoJSON} +\title{Write Data Frame to JSON} +\usage{ +Helper_VarDFtoJSON(df, outfile = "variables.json") +} +\arguments{ +\item{df}{A data frame to be written to JSON.} + +\item{outfile}{Character string with the path to the output JSON file.} +} +\value{ +A JSON file saved to the specified path. +} +\description{ +Writes a data frame to a JSON file. Designed to simplify creation of JSON files from variable metadata data frames. +} +\examples{ +NORA3_df <- Discovery_Variables(dataSet = "NORA3") +Helper_VarDFtoJSON(NORA3_df, "NORA3_variables.json") + +} +\author{ +Erik Kusch +} diff --git a/man/NC_Read.Rd b/man/NC_Read.Rd index 8792631..0405ade 100644 --- a/man/NC_Read.Rd +++ b/man/NC_Read.Rd @@ -2,23 +2,44 @@ % Please edit documentation in R/NC_Read.r \name{NC_Read} \alias{NC_Read} -\title{Read NetCDF files and their metadata} +\title{Read netCDF files} \usage{ -NC_Read(fileName) +NC_Read(fileName, vars, ..., forWriting = FALSE) } \arguments{ -\item{fileName}{Character. Filename including directory for reading/writing.} +\item{fileName}{Character. Fully qualified name of the netCDF resource. This may be on a local file system or on a THREDDS server.} + +\item{vars}{Character vector, optional. If supplied, only the indicated data variables are read from the netCDF resource.} + +\item{...}{Optional. Arguments for subsetting the data variables. When supplied, these must be of the form \code{axis_name = c(0, 90)}, naming an axis of the data variables and the extreme values of the range to extract. There may be multiple such entries, or they can alternatively be supplied in a named list.} + +\item{forWriting}{Logical, default is \code{FALSE}. If \code{TRUE}, the netCDF resource will be opened for writing. This is typically only allowable on netCDF files on a local file system.} } \value{ -A SpatRaster with metadata +A \code{CFDataset} with the data variables, optionally subsetted. } \description{ -Read NetCDF files and their metadata attributes. Metadata from the NetCDF file is read and attached to the returned SpatRaster via \code{terra::metags()}. +Read netCDF files and their metadata. Specific data variables may be extracted and optionally subsetted over the dimensions of the data variable. + +In the returned \code{CFDataset}, the data array of individual data variables need not have been loaded into memory. } \examples{ -Read_ras <- NC_Read(fileName = system.file("extdata", "KiN_rast.nc", package = "ClimHub")) -terra::metags(Read_ras)[terra::metags(Read_ras)$name == "Citation", ] +FNAME <- system.file("extdata", "NORA3.nc", package = "ClimHub") +# Reading entire CFDataset +NC_Read(fileName = FNAME) +# Reading just specific variable +NC_Read(fileName = FNAME, vars = "T2M") +# Read while subsetting +NC_Read( + fileName = FNAME, + vars = "T2M", + list( + longitude = c(10, 20), + latitude = c(55, 65), + time = "2001-08-01T06:00:00" + ) +) } \author{ -Erik Kusch +Patrick Van Laake, Erik Kusch } diff --git a/product-metadata/KlimaiNorge2100.json b/product-metadata/KlimaiNorge2100.json index d11a4ec..48d7329 100644 --- a/product-metadata/KlimaiNorge2100.json +++ b/product-metadata/KlimaiNorge2100.json @@ -1,28 +1,43 @@ { "name": "Klima i Norge 2100", - "url": "https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge_2100/utgave2015/catalog.html", + "url": "https://thredds.met.no/thredds/catalog/KSS/Klima_i_Norge/utgave2025/DailyTimeSeries/catalog.html", "license": "CC-BY-4.0 and NLOD 2.0", "citation": "Klima i Norge 2100 Data from The Norwegian Meteorological Institute (MET Norway)", - "doi": "", - "issn": "", - "isbn": "978-82-410-1512-0", + "doi": "10.21343/0k90-6w67", + "issn": "2704-1018", + "isbn": "", "access_method": "Direct Download", - "access_function": "Download.KlimaiNorge2100", + "access_function": "Access_KlimaiNorge2100", + "methods": [ + "eqm", // Empirical Quantile Mapping + "3dbc-eqm" // 3-Dimensional Bias-Correction + ], "scenarios": [ - "rcp85", - "rcp45" + "ssp370", + "rcp45", + "rcp26" ], "models": [ - "CNRM_CCLM", - "CNRM_RCA", - "EC-EARTH_CCLM", - "EC-EARTH_HIRHAM", - "EC-EARTH_RACMO", - "EC-EARTH_RCA", - "HADGEM_RCA", - "IPSL_RCA", - "MPI_CCLM", - "MPI_RCA" + "noresm-r1i1p1f1-hclim", + "noresm-r1i1p1-remo", + "noresm-r1i1p1-rca", + "mpi-r2i1p1-remo", + "mpi-r1i1p1f1-racmo", + "mpi-r1i1p1f1-icon", + "mpi-r1i1p1f1-hclim", + "mpi-r1i1p1-cclm", + "miroc-r1i1p1f1-icon", + "hadgem-r1i1p1-remo", + "hadgem-r1i1p1-rca", + "ecearthveg-r1i1p1f1-hclim", + "ecearthveg-r1i1p1f1-cclm", + "ecearth-r3i1p1-hirham", + "ecearth-r1i1p1f1-racmo", + "ecearth-r12i1p1-rca", + "ecearth-r12i1p1-cclm", + "cnrm-r1i1p1f2-racmo", + "cnrm-r1i1p1f2-hclim", + "cnrm-r1i1p1-aladin" ], "time": { "extent": [ @@ -34,10 +49,10 @@ }, "space": { "extent": [ - -1.3264, - 32.5377, - 57.7604, - 72.0981 + -1.309, + 32.515, + 57.765, + 72.095 ], "resolution": 0.0154, "unit": "°", @@ -45,52 +60,108 @@ }, "variables": [ { - "name": "Maximum Air Temperature", + "name": "minimum_air_temperature", + "longname": "bias-adjusted daily minimum near-surface air temperature", "unit": "K", - "prefix": "TX", - "issues": "" + "issue": "", + "datafile": "tasmin", + "string": "sn2018v2005_rawbc" }, { - "name": "Minimum Air Temperature", + "name": "maximum_air_temperature", + "longname": "bias-adjusted daily maximum near-surface air temperature", "unit": "K", - "prefix": "TN", - "issues": "" + "issue": "", + "datafile": "tasmax", + "string": "sn2018v2005_rawbc" }, { - "name": "Mean Air Temperature", + "name": "mean_air_temperature", + "longname": "bias-adjusted daily mean near-surface air temperature", "unit": "K", - "prefix": "TM", - "issues": "Values recorded *10" + "issue": "", + "datafile": "tas", + "string": "sn2018v2005_rawbc" + }, + { + "name": "surface_total_snow_amount", + "longname": "daily mean snow water equivalent", + "unit": "kg m-2", + "issue": "", + "datafile": "swe", + "string": "estobs_disthbv" + }, + { + "name": "wind_speed", + "longname": "bias-adjusted daily mean near-surface wind speed", + "unit": "m s-1", + "issue": "", + "datafile": "sfcWind", + "string": "klinogrid1612_rawbc" + }, + { + "name": "surface_downwelling_shortwave_flux_in_air", + "longname": "bias-adjusted daily mean surface downwelling shortwave radiation", + "unit": "W m-2", + "issue": "", + "datafile": "rsds", + "string": "hysn2018v2005era5_rawbc" + }, + { + "name": "surface_downwelling_longwave_flux_in_air", + "longname": "bias-adjusted daily mean surface downwelling longwave radiation", + "unit": "W m-2", + "issue": "", + "datafile": "rlds", + "string": "hysn2018v2005era5_rawbc" + }, + { + "name": "surface_air_pressure", + "longname": "bias-adjusted daily mean surface air pressure", + "unit": "Pa", + "issue": "", + "datafile": "ps", + "string": "hysn2018v2005era5_rawbc" }, { - "name": "Snow Water Equivalent", - "unit": "kg/m^2", - "prefix": "SWE", - "issues": "" + "name": "precipitation_flux", + "longname": "bias-adjusted daily mean precipitation", + "unit": "kg m-2 s-1", + "issue": "", + "datafile": "pr", + "string": "sn2018v2005_rawbc" }, { - "name": "Soil Moisture Deficit", - "unit": "kg/m^2", - "prefix": "SMD", - "issues": "Values recorded *10" + "name": "mass_content_of_water_in_soil", + "longname": "daily mean soil moisture content", + "unit": "kg m-2", + "issue": "", + "datafile": "mrso", + "string": "estobs_disthbv" }, { - "name": "Runoff", - "unit": "kg/m^2", - "prefix": "RUN", - "issues": "Values recorded *10" + "name": "runoff_flux", + "longname": "daily mean runoff", + "unit": "kg m-2 s-1", + "issue": "", + "datafile": "mrro", + "string": "estobs_disthbv" }, { - "name": "Precipitation", - "unit": "kg/m^2", - "prefix": "RR", - "issues": "Values recorded *10" + "name": "relative_humidity", + "longname": "bias-adjusted daily mean near-surface relative humidity", + "unit": "%", + "issue": "", + "datafile": "hurs", + "string": "hysn2018v2005era5_rawbc" }, { - "name": "Groundwater", - "unit": "kg/m^2", - "prefix": "GRW", - "issues": "" + "name": "water_evapotranspiration_flux", + "longname": "daily mean evapotranspiration", + "unit": "kg m-2 s-1", + "issue": "", + "datafile": "evap", + "string": "estobs_disthbv" } ] } \ No newline at end of file diff --git a/product-metadata/NORA3.json b/product-metadata/NORA3.json index e3927af..5524c52 100644 --- a/product-metadata/NORA3.json +++ b/product-metadata/NORA3.json @@ -7,7 +7,7 @@ "issn": "", "isbn": "", "access_mode": "Direct Download", - "access_function": "Download.NORA3", + "access_function": "Access_NORA3", "leadtime": [ 3, 4, @@ -27,10 +27,10 @@ }, "space": { "extent": [ - -30.1945, - 85.9166, - 44.017, - 84.0572 + -30.168, + 85.793, + 44.025, + 84.057 ], "resolution": 0.0535, "unit": "°", @@ -38,4603 +38,571 @@ }, "variables": [ { - "name": "SIC (Sea_ice_fraction)", - "varname": "SIC_grib1_vLevel", + "name": "SIC", + "long_name": "Sea_ice_fraction", + "unit": "", "datafile": "_sfx", - "unit": "%", - "issues": "" - }, - { - "name": "SST (Sea Surface Temperature (SST))", - "varname": "SST_grib1_vLevel", - "datafile": "_sfx", - "unit": "K", - "issues": "" - }, - { - "name": "TS (Surface temperature)", - "varname": "TS_grib1_vLevel", - "datafile": "_sfx", - "unit": "K", - "issues": "" - }, - { - "name": "T2M (2m_Temperature)", - "varname": "T2M_grib1_vLevel", - "datafile": "_sfx", - "unit": "K", - "issues": "" - }, - { - "name": "Q2M (2m_Specific_Humidity)", - "varname": "Q2M_grib1_vLevel", - "datafile": "_sfx", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "HU2M (2m_Relative_Humidity)", - "varname": "HU2M_grib1_vLevel", - "datafile": "_sfx", - "unit": "%", - "issues": "" - }, - { - "name": "ZON10M (10m_Zonal_wind)", - "varname": "ZON10M_grib1_vLevel", - "datafile": "_sfx", - "unit": "m/s", - "issues": "" - }, - { - "name": "MER10M (10m_Meridian_Wind)", - "varname": "MER10M_grib1_vLevel", - "datafile": "_sfx", - "unit": "m/s", - "issues": "" - }, - { - "name": "H (Averaged_Sensible_Heat_Flux)", - "varname": "H_grib1_vLevel", - "datafile": "_sfx", - "unit": "W/m2", - "issues": "" - }, - { - "name": "LE (Averaged_Total_Latent_Heat_Flux)", - "varname": "LE_grib1_vLevel", - "datafile": "_sfx", - "unit": "W/m2", - "issues": "" - }, - { - "name": "GFLUX (Averaged_Ground_Heat_Flux)", - "varname": "GFLUX_grib1_vLevel", - "datafile": "_sfx", - "unit": "W/m2", - "issues": "" - }, - { - "name": "Land Area Fraction (Height = 0)", - "varname": "land_area_fraction_height0=0", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.009869232667160128)", - "varname": "specific_humidity_ml_hybrid=0.009869232667160128", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.02960874853503578)", - "varname": "specific_humidity_ml_hybrid=0.02960874853503578", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.04935756499814952)", - "varname": "specific_humidity_ml_hybrid=0.04935756499814952", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.06913441110697735)", - "varname": "specific_humidity_ml_hybrid=0.06913441110697735", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.08896442890087615)", - "varname": "specific_humidity_ml_hybrid=0.08896442890087615", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.1088762621868419)", - "varname": "specific_humidity_ml_hybrid=0.1088762621868419", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.1289012230440787)", - "varname": "specific_humidity_ml_hybrid=0.1289012230440787", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.1490728287630623)", - "varname": "specific_humidity_ml_hybrid=0.1490728287630623", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.1694265295096549)", - "varname": "specific_humidity_ml_hybrid=0.1694265295096549", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.1899994479784503)", - "varname": "specific_humidity_ml_hybrid=0.1899994479784503", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.2108654522384585)", - "varname": "specific_humidity_ml_hybrid=0.2108654522384585", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.2321068315732238)", - "varname": "specific_humidity_ml_hybrid=0.2321068315732238", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.2537288434579582)", - "varname": "specific_humidity_ml_hybrid=0.2537288434579582", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.2756874949626795)", - "varname": "specific_humidity_ml_hybrid=0.2756874949626795", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.297938870634528)", - "varname": "specific_humidity_ml_hybrid=0.297938870634528", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.32043892180952)", - "varname": "specific_humidity_ml_hybrid=0.32043892180952", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.3431436299389449)", - "varname": "specific_humidity_ml_hybrid=0.3431436299389449", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.3660090398029607)", - "varname": "specific_humidity_ml_hybrid=0.3660090398029607", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.3889912139798811)", - "varname": "specific_humidity_ml_hybrid=0.3889912139798811", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.4120461278469981)", - "varname": "specific_humidity_ml_hybrid=0.4120461278469981", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.4351297398411195)", - "varname": "specific_humidity_ml_hybrid=0.4351297398411195", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.4581981247417903)", - "varname": "specific_humidity_ml_hybrid=0.4581981247417903", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.4812072843241156)", - "varname": "specific_humidity_ml_hybrid=0.4812072843241156", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.5041132452359707)", - "varname": "specific_humidity_ml_hybrid=0.5041132452359707", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.5268720234490429)", - "varname": "specific_humidity_ml_hybrid=0.5268720234490429", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.549439583242366)", - "varname": "specific_humidity_ml_hybrid=0.549439583242366", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.5717719816996849)", - "varname": "specific_humidity_ml_hybrid=0.5717719816996849", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.5938252395184105)", - "varname": "specific_humidity_ml_hybrid=0.5938252395184105", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.6155553553626768)", - "varname": "specific_humidity_ml_hybrid=0.6155553553626768", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.6369183129717796)", - "varname": "specific_humidity_ml_hybrid=0.6369183129717796", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.6578701459599694)", - "varname": "specific_humidity_ml_hybrid=0.6578701459599694", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.6783668745214075)", - "varname": "specific_humidity_ml_hybrid=0.6783668745214075", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.6983645103529533)", - "varname": "specific_humidity_ml_hybrid=0.6983645103529533", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.7178190652511751)", - "varname": "specific_humidity_ml_hybrid=0.7178190652511751", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.7366865465172184)", - "varname": "specific_humidity_ml_hybrid=0.7366865465172184", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.7549229940152186)", - "varname": "specific_humidity_ml_hybrid=0.7549229940152186", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.7724843832483534)", - "varname": "specific_humidity_ml_hybrid=0.7724843832483534", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.7893267466890762)", - "varname": "specific_humidity_ml_hybrid=0.7893267466890762", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.8054061187048944)", - "varname": "specific_humidity_ml_hybrid=0.8054061187048944", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.8206784729395211)", - "varname": "specific_humidity_ml_hybrid=0.8206784729395211", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.8350998426945511)", - "varname": "specific_humidity_ml_hybrid=0.8350998426945511", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.8486546870699171)", - "varname": "specific_humidity_ml_hybrid=0.8486546870699171", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.8613802230634602)", - "varname": "specific_humidity_ml_hybrid=0.8613802230634602", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.8733218404930844)", - "varname": "specific_humidity_ml_hybrid=0.8733218404930844", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.8845088302333238)", - "varname": "specific_humidity_ml_hybrid=0.8845088302333238", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.8949708028463796)", - "varname": "specific_humidity_ml_hybrid=0.8949708028463796", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9047376705110146)", - "varname": "specific_humidity_ml_hybrid=0.9047376705110146", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9138396605308809)", - "varname": "specific_humidity_ml_hybrid=0.9138396605308809", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.922307349745209)", - "varname": "specific_humidity_ml_hybrid=0.922307349745209", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9301717038187545)", - "varname": "specific_humidity_ml_hybrid=0.9301717038187545", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9374640936416783)", - "varname": "specific_humidity_ml_hybrid=0.9374640936416783", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9442162716868128)", - "varname": "specific_humidity_ml_hybrid=0.9442162716868128", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9504605272561569)", - "varname": "specific_humidity_ml_hybrid=0.9504605272561569", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9562296606545504)", - "varname": "specific_humidity_ml_hybrid=0.9562296606545504", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9615570505351276)", - "varname": "specific_humidity_ml_hybrid=0.9615570505351276", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9664766982191144)", - "varname": "specific_humidity_ml_hybrid=0.9664766982191144", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9710233400910983)", - "varname": "specific_humidity_ml_hybrid=0.9710233400910983", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9752326002251563)", - "varname": "specific_humidity_ml_hybrid=0.9752326002251563", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9791410059008868)", - "varname": "specific_humidity_ml_hybrid=0.9791410059008868", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9827862849301419)", - "varname": "specific_humidity_ml_hybrid=0.9827862849301419", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9862076195360495)", - "varname": "specific_humidity_ml_hybrid=0.9862076195360495", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9894459545612335)", - "varname": "specific_humidity_ml_hybrid=0.9894459545612335", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9925448596477509)", - "varname": "specific_humidity_ml_hybrid=0.9925448596477509", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.9955521821975708)", - "varname": "specific_humidity_ml_hybrid=0.9955521821975708", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Specific Humidity (Model Level = 0.998519629240036)", - "varname": "specific_humidity_ml_hybrid=0.998519629240036", - "datafile": "", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.009869232667160128)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.009869232667160128", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.02960874853503578)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.02960874853503578", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.04935756499814952)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.04935756499814952", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.06913441110697735)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.06913441110697735", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.08896442890087615)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.08896442890087615", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.1088762621868419)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.1088762621868419", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.1289012230440787)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.1289012230440787", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.1490728287630623)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.1490728287630623", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.1694265295096549)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.1694265295096549", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.1899994479784503)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.1899994479784503", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.2108654522384585)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.2108654522384585", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.2321068315732238)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.2321068315732238", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.2537288434579582)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.2537288434579582", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.2756874949626795)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.2756874949626795", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.297938870634528)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.297938870634528", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.32043892180952)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.32043892180952", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.3431436299389449)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.3431436299389449", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.3660090398029607)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.3660090398029607", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.3889912139798811)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.3889912139798811", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.4120461278469981)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.4120461278469981", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.4351297398411195)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.4351297398411195", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.4581981247417903)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.4581981247417903", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.4812072843241156)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.4812072843241156", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.5041132452359707)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.5041132452359707", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.5268720234490429)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.5268720234490429", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.549439583242366)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.549439583242366", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.5717719816996849)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.5717719816996849", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.5938252395184105)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.5938252395184105", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.6155553553626768)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.6155553553626768", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.6369183129717796)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.6369183129717796", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.6578701459599694)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.6578701459599694", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.6783668745214075)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.6783668745214075", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.6983645103529533)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.6983645103529533", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.7178190652511751)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.7178190652511751", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.7366865465172184)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.7366865465172184", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.7549229940152186)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.7549229940152186", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.7724843832483534)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.7724843832483534", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.7893267466890762)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.7893267466890762", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.8054061187048944)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.8054061187048944", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.8206784729395211)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.8206784729395211", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.8350998426945511)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.8350998426945511", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.8486546870699171)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.8486546870699171", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.8613802230634602)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.8613802230634602", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.8733218404930844)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.8733218404930844", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.8845088302333238)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.8845088302333238", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.8949708028463796)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.8949708028463796", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9047376705110146)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9047376705110146", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9138396605308809)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9138396605308809", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.922307349745209)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.922307349745209", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9301717038187545)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9301717038187545", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9374640936416783)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9374640936416783", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9442162716868128)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9442162716868128", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9504605272561569)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9504605272561569", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9562296606545504)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9562296606545504", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9615570505351276)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9615570505351276", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9664766982191144)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9664766982191144", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9710233400910983)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9710233400910983", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9752326002251563)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9752326002251563", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9791410059008868)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9791410059008868", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9827862849301419)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9827862849301419", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9862076195360495)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9862076195360495", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9894459545612335)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9894459545612335", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9925448596477509)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9925448596477509", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.9955521821975708)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.9955521821975708", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Turbulent Kinetic Energy (Model Level = 0.998519629240036)", - "varname": "turbulent_kinetic_energy_ml_hybrid=0.998519629240036", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.009869232667160128)", - "varname": "cloud_area_fraction_ml_hybrid=0.009869232667160128", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.02960874853503578)", - "varname": "cloud_area_fraction_ml_hybrid=0.02960874853503578", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.04935756499814952)", - "varname": "cloud_area_fraction_ml_hybrid=0.04935756499814952", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.06913441110697735)", - "varname": "cloud_area_fraction_ml_hybrid=0.06913441110697735", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.08896442890087615)", - "varname": "cloud_area_fraction_ml_hybrid=0.08896442890087615", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.1088762621868419)", - "varname": "cloud_area_fraction_ml_hybrid=0.1088762621868419", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.1289012230440787)", - "varname": "cloud_area_fraction_ml_hybrid=0.1289012230440787", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.1490728287630623)", - "varname": "cloud_area_fraction_ml_hybrid=0.1490728287630623", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.1694265295096549)", - "varname": "cloud_area_fraction_ml_hybrid=0.1694265295096549", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.1899994479784503)", - "varname": "cloud_area_fraction_ml_hybrid=0.1899994479784503", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.2108654522384585)", - "varname": "cloud_area_fraction_ml_hybrid=0.2108654522384585", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.2321068315732238)", - "varname": "cloud_area_fraction_ml_hybrid=0.2321068315732238", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.2537288434579582)", - "varname": "cloud_area_fraction_ml_hybrid=0.2537288434579582", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.2756874949626795)", - "varname": "cloud_area_fraction_ml_hybrid=0.2756874949626795", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.297938870634528)", - "varname": "cloud_area_fraction_ml_hybrid=0.297938870634528", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.32043892180952)", - "varname": "cloud_area_fraction_ml_hybrid=0.32043892180952", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.3431436299389449)", - "varname": "cloud_area_fraction_ml_hybrid=0.3431436299389449", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.3660090398029607)", - "varname": "cloud_area_fraction_ml_hybrid=0.3660090398029607", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.3889912139798811)", - "varname": "cloud_area_fraction_ml_hybrid=0.3889912139798811", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.4120461278469981)", - "varname": "cloud_area_fraction_ml_hybrid=0.4120461278469981", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.4351297398411195)", - "varname": "cloud_area_fraction_ml_hybrid=0.4351297398411195", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.4581981247417903)", - "varname": "cloud_area_fraction_ml_hybrid=0.4581981247417903", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.4812072843241156)", - "varname": "cloud_area_fraction_ml_hybrid=0.4812072843241156", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.5041132452359707)", - "varname": "cloud_area_fraction_ml_hybrid=0.5041132452359707", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.5268720234490429)", - "varname": "cloud_area_fraction_ml_hybrid=0.5268720234490429", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.549439583242366)", - "varname": "cloud_area_fraction_ml_hybrid=0.549439583242366", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.5717719816996849)", - "varname": "cloud_area_fraction_ml_hybrid=0.5717719816996849", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.5938252395184105)", - "varname": "cloud_area_fraction_ml_hybrid=0.5938252395184105", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.6155553553626768)", - "varname": "cloud_area_fraction_ml_hybrid=0.6155553553626768", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.6369183129717796)", - "varname": "cloud_area_fraction_ml_hybrid=0.6369183129717796", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.6578701459599694)", - "varname": "cloud_area_fraction_ml_hybrid=0.6578701459599694", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.6783668745214075)", - "varname": "cloud_area_fraction_ml_hybrid=0.6783668745214075", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.6983645103529533)", - "varname": "cloud_area_fraction_ml_hybrid=0.6983645103529533", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.7178190652511751)", - "varname": "cloud_area_fraction_ml_hybrid=0.7178190652511751", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.7366865465172184)", - "varname": "cloud_area_fraction_ml_hybrid=0.7366865465172184", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.7549229940152186)", - "varname": "cloud_area_fraction_ml_hybrid=0.7549229940152186", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.7724843832483534)", - "varname": "cloud_area_fraction_ml_hybrid=0.7724843832483534", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.7893267466890762)", - "varname": "cloud_area_fraction_ml_hybrid=0.7893267466890762", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.8054061187048944)", - "varname": "cloud_area_fraction_ml_hybrid=0.8054061187048944", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.8206784729395211)", - "varname": "cloud_area_fraction_ml_hybrid=0.8206784729395211", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.8350998426945511)", - "varname": "cloud_area_fraction_ml_hybrid=0.8350998426945511", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.8486546870699171)", - "varname": "cloud_area_fraction_ml_hybrid=0.8486546870699171", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.8613802230634602)", - "varname": "cloud_area_fraction_ml_hybrid=0.8613802230634602", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.8733218404930844)", - "varname": "cloud_area_fraction_ml_hybrid=0.8733218404930844", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.8845088302333238)", - "varname": "cloud_area_fraction_ml_hybrid=0.8845088302333238", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.8949708028463796)", - "varname": "cloud_area_fraction_ml_hybrid=0.8949708028463796", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9047376705110146)", - "varname": "cloud_area_fraction_ml_hybrid=0.9047376705110146", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9138396605308809)", - "varname": "cloud_area_fraction_ml_hybrid=0.9138396605308809", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.922307349745209)", - "varname": "cloud_area_fraction_ml_hybrid=0.922307349745209", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9301717038187545)", - "varname": "cloud_area_fraction_ml_hybrid=0.9301717038187545", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9374640936416783)", - "varname": "cloud_area_fraction_ml_hybrid=0.9374640936416783", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9442162716868128)", - "varname": "cloud_area_fraction_ml_hybrid=0.9442162716868128", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9504605272561569)", - "varname": "cloud_area_fraction_ml_hybrid=0.9504605272561569", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9562296606545504)", - "varname": "cloud_area_fraction_ml_hybrid=0.9562296606545504", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9615570505351276)", - "varname": "cloud_area_fraction_ml_hybrid=0.9615570505351276", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9664766982191144)", - "varname": "cloud_area_fraction_ml_hybrid=0.9664766982191144", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9710233400910983)", - "varname": "cloud_area_fraction_ml_hybrid=0.9710233400910983", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9752326002251563)", - "varname": "cloud_area_fraction_ml_hybrid=0.9752326002251563", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9791410059008868)", - "varname": "cloud_area_fraction_ml_hybrid=0.9791410059008868", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9827862849301419)", - "varname": "cloud_area_fraction_ml_hybrid=0.9827862849301419", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9862076195360495)", - "varname": "cloud_area_fraction_ml_hybrid=0.9862076195360495", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9894459545612335)", - "varname": "cloud_area_fraction_ml_hybrid=0.9894459545612335", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9925448596477509)", - "varname": "cloud_area_fraction_ml_hybrid=0.9925448596477509", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.9955521821975708)", - "varname": "cloud_area_fraction_ml_hybrid=0.9955521821975708", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Model Level = 0.998519629240036)", - "varname": "cloud_area_fraction_ml_hybrid=0.998519629240036", - "datafile": "", - "unit": "%", - "issues": "" - }, - { - "name": "Top-of-Atmosphere Net Downward Shortwave Flux", - "varname": "toa_net_downward_shortwave_flux_top_of_atmosphere=0", - "datafile": "", - "unit": "W/m^2", - "issues": "" - }, - { - "name": "Surface Downwelling Shortwave Flux In Air (Height = 0)", - "varname": "surface_downwelling_shortwave_flux_in_air_height0=0", - "datafile": "", - "unit": "W/m^2", - "issues": "" - }, - { - "name": "Top-of-Atmosphere Outgoing Longwave Flux", - "varname": "toa_outgoing_longwave_flux_top_of_atmosphere=0", - "datafile": "", - "unit": "W/m^2", - "issues": "" - }, - { - "name": "Surface Downwelling Longwave Flux In Air (Height = 0)", - "varname": "surface_downwelling_longwave_flux_in_air_height0=0", - "datafile": "", - "unit": "W/m^2", - "issues": "" - }, - { - "name": "Atmosphere Boundary Layer Thickness (Height = 0)", - "varname": "atmosphere_boundary_layer_thickness_height0=0", - "datafile": "", - "unit": "m", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.009869232667160128)", - "varname": "pressure_departure_hybrid=0.009869232667160128", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.02960874853503578)", - "varname": "pressure_departure_hybrid=0.02960874853503578", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.04935756499814952)", - "varname": "pressure_departure_hybrid=0.04935756499814952", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.06913441110697735)", - "varname": "pressure_departure_hybrid=0.06913441110697735", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.08896442890087615)", - "varname": "pressure_departure_hybrid=0.08896442890087615", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.1088762621868419)", - "varname": "pressure_departure_hybrid=0.1088762621868419", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.1289012230440787)", - "varname": "pressure_departure_hybrid=0.1289012230440787", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.1490728287630623)", - "varname": "pressure_departure_hybrid=0.1490728287630623", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.1694265295096549)", - "varname": "pressure_departure_hybrid=0.1694265295096549", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.1899994479784503)", - "varname": "pressure_departure_hybrid=0.1899994479784503", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.2108654522384585)", - "varname": "pressure_departure_hybrid=0.2108654522384585", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.2321068315732238)", - "varname": "pressure_departure_hybrid=0.2321068315732238", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.2537288434579582)", - "varname": "pressure_departure_hybrid=0.2537288434579582", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.2756874949626795)", - "varname": "pressure_departure_hybrid=0.2756874949626795", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.297938870634528)", - "varname": "pressure_departure_hybrid=0.297938870634528", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.32043892180952)", - "varname": "pressure_departure_hybrid=0.32043892180952", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.3431436299389449)", - "varname": "pressure_departure_hybrid=0.3431436299389449", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.3660090398029607)", - "varname": "pressure_departure_hybrid=0.3660090398029607", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.3889912139798811)", - "varname": "pressure_departure_hybrid=0.3889912139798811", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.4120461278469981)", - "varname": "pressure_departure_hybrid=0.4120461278469981", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.4351297398411195)", - "varname": "pressure_departure_hybrid=0.4351297398411195", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.4581981247417903)", - "varname": "pressure_departure_hybrid=0.4581981247417903", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.4812072843241156)", - "varname": "pressure_departure_hybrid=0.4812072843241156", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.5041132452359707)", - "varname": "pressure_departure_hybrid=0.5041132452359707", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.5268720234490429)", - "varname": "pressure_departure_hybrid=0.5268720234490429", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.549439583242366)", - "varname": "pressure_departure_hybrid=0.549439583242366", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.5717719816996849)", - "varname": "pressure_departure_hybrid=0.5717719816996849", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.5938252395184105)", - "varname": "pressure_departure_hybrid=0.5938252395184105", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.6155553553626768)", - "varname": "pressure_departure_hybrid=0.6155553553626768", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.6369183129717796)", - "varname": "pressure_departure_hybrid=0.6369183129717796", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.6578701459599694)", - "varname": "pressure_departure_hybrid=0.6578701459599694", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.6783668745214075)", - "varname": "pressure_departure_hybrid=0.6783668745214075", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.6983645103529533)", - "varname": "pressure_departure_hybrid=0.6983645103529533", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.7178190652511751)", - "varname": "pressure_departure_hybrid=0.7178190652511751", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.7366865465172184)", - "varname": "pressure_departure_hybrid=0.7366865465172184", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.7549229940152186)", - "varname": "pressure_departure_hybrid=0.7549229940152186", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.7724843832483534)", - "varname": "pressure_departure_hybrid=0.7724843832483534", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.7893267466890762)", - "varname": "pressure_departure_hybrid=0.7893267466890762", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.8054061187048944)", - "varname": "pressure_departure_hybrid=0.8054061187048944", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.8206784729395211)", - "varname": "pressure_departure_hybrid=0.8206784729395211", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.8350998426945511)", - "varname": "pressure_departure_hybrid=0.8350998426945511", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.8486546870699171)", - "varname": "pressure_departure_hybrid=0.8486546870699171", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.8613802230634602)", - "varname": "pressure_departure_hybrid=0.8613802230634602", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.8733218404930844)", - "varname": "pressure_departure_hybrid=0.8733218404930844", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.8845088302333238)", - "varname": "pressure_departure_hybrid=0.8845088302333238", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.8949708028463796)", - "varname": "pressure_departure_hybrid=0.8949708028463796", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9047376705110146)", - "varname": "pressure_departure_hybrid=0.9047376705110146", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9138396605308809)", - "varname": "pressure_departure_hybrid=0.9138396605308809", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.922307349745209)", - "varname": "pressure_departure_hybrid=0.922307349745209", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9301717038187545)", - "varname": "pressure_departure_hybrid=0.9301717038187545", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9374640936416783)", - "varname": "pressure_departure_hybrid=0.9374640936416783", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9442162716868128)", - "varname": "pressure_departure_hybrid=0.9442162716868128", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9504605272561569)", - "varname": "pressure_departure_hybrid=0.9504605272561569", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9562296606545504)", - "varname": "pressure_departure_hybrid=0.9562296606545504", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9615570505351276)", - "varname": "pressure_departure_hybrid=0.9615570505351276", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9664766982191144)", - "varname": "pressure_departure_hybrid=0.9664766982191144", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9710233400910983)", - "varname": "pressure_departure_hybrid=0.9710233400910983", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9752326002251563)", - "varname": "pressure_departure_hybrid=0.9752326002251563", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9791410059008868)", - "varname": "pressure_departure_hybrid=0.9791410059008868", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9827862849301419)", - "varname": "pressure_departure_hybrid=0.9827862849301419", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9862076195360495)", - "varname": "pressure_departure_hybrid=0.9862076195360495", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9894459545612335)", - "varname": "pressure_departure_hybrid=0.9894459545612335", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9925448596477509)", - "varname": "pressure_departure_hybrid=0.9925448596477509", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.9955521821975708)", - "varname": "pressure_departure_hybrid=0.9955521821975708", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Pressure Departure (Model Level = 0.998519629240036)", - "varname": "pressure_departure_hybrid=0.998519629240036", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Surface Air Pressure (Height = 0)", - "varname": "surface_air_pressure_height0=0", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.009869232667160128)", - "varname": "air_temperature_ml_hybrid=0.009869232667160128", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.02960874853503578)", - "varname": "air_temperature_ml_hybrid=0.02960874853503578", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.04935756499814952)", - "varname": "air_temperature_ml_hybrid=0.04935756499814952", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.06913441110697735)", - "varname": "air_temperature_ml_hybrid=0.06913441110697735", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.08896442890087615)", - "varname": "air_temperature_ml_hybrid=0.08896442890087615", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.1088762621868419)", - "varname": "air_temperature_ml_hybrid=0.1088762621868419", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.1289012230440787)", - "varname": "air_temperature_ml_hybrid=0.1289012230440787", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.1490728287630623)", - "varname": "air_temperature_ml_hybrid=0.1490728287630623", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.1694265295096549)", - "varname": "air_temperature_ml_hybrid=0.1694265295096549", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.1899994479784503)", - "varname": "air_temperature_ml_hybrid=0.1899994479784503", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.2108654522384585)", - "varname": "air_temperature_ml_hybrid=0.2108654522384585", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.2321068315732238)", - "varname": "air_temperature_ml_hybrid=0.2321068315732238", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.2537288434579582)", - "varname": "air_temperature_ml_hybrid=0.2537288434579582", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.2756874949626795)", - "varname": "air_temperature_ml_hybrid=0.2756874949626795", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.297938870634528)", - "varname": "air_temperature_ml_hybrid=0.297938870634528", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.32043892180952)", - "varname": "air_temperature_ml_hybrid=0.32043892180952", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.3431436299389449)", - "varname": "air_temperature_ml_hybrid=0.3431436299389449", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.3660090398029607)", - "varname": "air_temperature_ml_hybrid=0.3660090398029607", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.3889912139798811)", - "varname": "air_temperature_ml_hybrid=0.3889912139798811", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.4120461278469981)", - "varname": "air_temperature_ml_hybrid=0.4120461278469981", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.4351297398411195)", - "varname": "air_temperature_ml_hybrid=0.4351297398411195", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.4581981247417903)", - "varname": "air_temperature_ml_hybrid=0.4581981247417903", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.4812072843241156)", - "varname": "air_temperature_ml_hybrid=0.4812072843241156", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.5041132452359707)", - "varname": "air_temperature_ml_hybrid=0.5041132452359707", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.5268720234490429)", - "varname": "air_temperature_ml_hybrid=0.5268720234490429", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.549439583242366)", - "varname": "air_temperature_ml_hybrid=0.549439583242366", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.5717719816996849)", - "varname": "air_temperature_ml_hybrid=0.5717719816996849", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.5938252395184105)", - "varname": "air_temperature_ml_hybrid=0.5938252395184105", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.6155553553626768)", - "varname": "air_temperature_ml_hybrid=0.6155553553626768", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.6369183129717796)", - "varname": "air_temperature_ml_hybrid=0.6369183129717796", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.6578701459599694)", - "varname": "air_temperature_ml_hybrid=0.6578701459599694", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.6783668745214075)", - "varname": "air_temperature_ml_hybrid=0.6783668745214075", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.6983645103529533)", - "varname": "air_temperature_ml_hybrid=0.6983645103529533", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.7178190652511751)", - "varname": "air_temperature_ml_hybrid=0.7178190652511751", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.7366865465172184)", - "varname": "air_temperature_ml_hybrid=0.7366865465172184", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.7549229940152186)", - "varname": "air_temperature_ml_hybrid=0.7549229940152186", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.7724843832483534)", - "varname": "air_temperature_ml_hybrid=0.7724843832483534", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.7893267466890762)", - "varname": "air_temperature_ml_hybrid=0.7893267466890762", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.8054061187048944)", - "varname": "air_temperature_ml_hybrid=0.8054061187048944", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.8206784729395211)", - "varname": "air_temperature_ml_hybrid=0.8206784729395211", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.8350998426945511)", - "varname": "air_temperature_ml_hybrid=0.8350998426945511", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.8486546870699171)", - "varname": "air_temperature_ml_hybrid=0.8486546870699171", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.8613802230634602)", - "varname": "air_temperature_ml_hybrid=0.8613802230634602", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.8733218404930844)", - "varname": "air_temperature_ml_hybrid=0.8733218404930844", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.8845088302333238)", - "varname": "air_temperature_ml_hybrid=0.8845088302333238", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.8949708028463796)", - "varname": "air_temperature_ml_hybrid=0.8949708028463796", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9047376705110146)", - "varname": "air_temperature_ml_hybrid=0.9047376705110146", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9138396605308809)", - "varname": "air_temperature_ml_hybrid=0.9138396605308809", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.922307349745209)", - "varname": "air_temperature_ml_hybrid=0.922307349745209", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9301717038187545)", - "varname": "air_temperature_ml_hybrid=0.9301717038187545", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9374640936416783)", - "varname": "air_temperature_ml_hybrid=0.9374640936416783", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9442162716868128)", - "varname": "air_temperature_ml_hybrid=0.9442162716868128", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9504605272561569)", - "varname": "air_temperature_ml_hybrid=0.9504605272561569", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9562296606545504)", - "varname": "air_temperature_ml_hybrid=0.9562296606545504", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9615570505351276)", - "varname": "air_temperature_ml_hybrid=0.9615570505351276", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9664766982191144)", - "varname": "air_temperature_ml_hybrid=0.9664766982191144", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9710233400910983)", - "varname": "air_temperature_ml_hybrid=0.9710233400910983", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9752326002251563)", - "varname": "air_temperature_ml_hybrid=0.9752326002251563", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9791410059008868)", - "varname": "air_temperature_ml_hybrid=0.9791410059008868", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9827862849301419)", - "varname": "air_temperature_ml_hybrid=0.9827862849301419", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9862076195360495)", - "varname": "air_temperature_ml_hybrid=0.9862076195360495", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9894459545612335)", - "varname": "air_temperature_ml_hybrid=0.9894459545612335", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9925448596477509)", - "varname": "air_temperature_ml_hybrid=0.9925448596477509", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.9955521821975708)", - "varname": "air_temperature_ml_hybrid=0.9955521821975708", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Model Level = 0.998519629240036)", - "varname": "air_temperature_ml_hybrid=0.998519629240036", - "datafile": "", - "unit": "K", - "issues": "" - }, - { - "name": "Surface Geopotential (Height = 0)", - "varname": "surface_geopotential_height0=0", - "datafile": "", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.009869232667160128)", - "varname": "x_wind_ml_hybrid=0.009869232667160128", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.02960874853503578)", - "varname": "x_wind_ml_hybrid=0.02960874853503578", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.04935756499814952)", - "varname": "x_wind_ml_hybrid=0.04935756499814952", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.06913441110697735)", - "varname": "x_wind_ml_hybrid=0.06913441110697735", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.08896442890087615)", - "varname": "x_wind_ml_hybrid=0.08896442890087615", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.1088762621868419)", - "varname": "x_wind_ml_hybrid=0.1088762621868419", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.1289012230440787)", - "varname": "x_wind_ml_hybrid=0.1289012230440787", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.1490728287630623)", - "varname": "x_wind_ml_hybrid=0.1490728287630623", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.1694265295096549)", - "varname": "x_wind_ml_hybrid=0.1694265295096549", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.1899994479784503)", - "varname": "x_wind_ml_hybrid=0.1899994479784503", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.2108654522384585)", - "varname": "x_wind_ml_hybrid=0.2108654522384585", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.2321068315732238)", - "varname": "x_wind_ml_hybrid=0.2321068315732238", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.2537288434579582)", - "varname": "x_wind_ml_hybrid=0.2537288434579582", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.2756874949626795)", - "varname": "x_wind_ml_hybrid=0.2756874949626795", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.297938870634528)", - "varname": "x_wind_ml_hybrid=0.297938870634528", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.32043892180952)", - "varname": "x_wind_ml_hybrid=0.32043892180952", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.3431436299389449)", - "varname": "x_wind_ml_hybrid=0.3431436299389449", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.3660090398029607)", - "varname": "x_wind_ml_hybrid=0.3660090398029607", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.3889912139798811)", - "varname": "x_wind_ml_hybrid=0.3889912139798811", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.4120461278469981)", - "varname": "x_wind_ml_hybrid=0.4120461278469981", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.4351297398411195)", - "varname": "x_wind_ml_hybrid=0.4351297398411195", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.4581981247417903)", - "varname": "x_wind_ml_hybrid=0.4581981247417903", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.4812072843241156)", - "varname": "x_wind_ml_hybrid=0.4812072843241156", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.5041132452359707)", - "varname": "x_wind_ml_hybrid=0.5041132452359707", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.5268720234490429)", - "varname": "x_wind_ml_hybrid=0.5268720234490429", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.549439583242366)", - "varname": "x_wind_ml_hybrid=0.549439583242366", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.5717719816996849)", - "varname": "x_wind_ml_hybrid=0.5717719816996849", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.5938252395184105)", - "varname": "x_wind_ml_hybrid=0.5938252395184105", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.6155553553626768)", - "varname": "x_wind_ml_hybrid=0.6155553553626768", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.6369183129717796)", - "varname": "x_wind_ml_hybrid=0.6369183129717796", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.6578701459599694)", - "varname": "x_wind_ml_hybrid=0.6578701459599694", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.6783668745214075)", - "varname": "x_wind_ml_hybrid=0.6783668745214075", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.6983645103529533)", - "varname": "x_wind_ml_hybrid=0.6983645103529533", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.7178190652511751)", - "varname": "x_wind_ml_hybrid=0.7178190652511751", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.7366865465172184)", - "varname": "x_wind_ml_hybrid=0.7366865465172184", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.7549229940152186)", - "varname": "x_wind_ml_hybrid=0.7549229940152186", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.7724843832483534)", - "varname": "x_wind_ml_hybrid=0.7724843832483534", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.7893267466890762)", - "varname": "x_wind_ml_hybrid=0.7893267466890762", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.8054061187048944)", - "varname": "x_wind_ml_hybrid=0.8054061187048944", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.8206784729395211)", - "varname": "x_wind_ml_hybrid=0.8206784729395211", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.8350998426945511)", - "varname": "x_wind_ml_hybrid=0.8350998426945511", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.8486546870699171)", - "varname": "x_wind_ml_hybrid=0.8486546870699171", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.8613802230634602)", - "varname": "x_wind_ml_hybrid=0.8613802230634602", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.8733218404930844)", - "varname": "x_wind_ml_hybrid=0.8733218404930844", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.8845088302333238)", - "varname": "x_wind_ml_hybrid=0.8845088302333238", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.8949708028463796)", - "varname": "x_wind_ml_hybrid=0.8949708028463796", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9047376705110146)", - "varname": "x_wind_ml_hybrid=0.9047376705110146", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9138396605308809)", - "varname": "x_wind_ml_hybrid=0.9138396605308809", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.922307349745209)", - "varname": "x_wind_ml_hybrid=0.922307349745209", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9301717038187545)", - "varname": "x_wind_ml_hybrid=0.9301717038187545", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9374640936416783)", - "varname": "x_wind_ml_hybrid=0.9374640936416783", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9442162716868128)", - "varname": "x_wind_ml_hybrid=0.9442162716868128", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9504605272561569)", - "varname": "x_wind_ml_hybrid=0.9504605272561569", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9562296606545504)", - "varname": "x_wind_ml_hybrid=0.9562296606545504", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9615570505351276)", - "varname": "x_wind_ml_hybrid=0.9615570505351276", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9664766982191144)", - "varname": "x_wind_ml_hybrid=0.9664766982191144", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9710233400910983)", - "varname": "x_wind_ml_hybrid=0.9710233400910983", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9752326002251563)", - "varname": "x_wind_ml_hybrid=0.9752326002251563", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9791410059008868)", - "varname": "x_wind_ml_hybrid=0.9791410059008868", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9827862849301419)", - "varname": "x_wind_ml_hybrid=0.9827862849301419", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9862076195360495)", - "varname": "x_wind_ml_hybrid=0.9862076195360495", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9894459545612335)", - "varname": "x_wind_ml_hybrid=0.9894459545612335", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9925448596477509)", - "varname": "x_wind_ml_hybrid=0.9925448596477509", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.9955521821975708)", - "varname": "x_wind_ml_hybrid=0.9955521821975708", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Model Level = 0.998519629240036)", - "varname": "x_wind_ml_hybrid=0.998519629240036", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.009869232667160128)", - "varname": "y_wind_ml_hybrid=0.009869232667160128", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.02960874853503578)", - "varname": "y_wind_ml_hybrid=0.02960874853503578", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.04935756499814952)", - "varname": "y_wind_ml_hybrid=0.04935756499814952", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.06913441110697735)", - "varname": "y_wind_ml_hybrid=0.06913441110697735", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.08896442890087615)", - "varname": "y_wind_ml_hybrid=0.08896442890087615", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.1088762621868419)", - "varname": "y_wind_ml_hybrid=0.1088762621868419", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.1289012230440787)", - "varname": "y_wind_ml_hybrid=0.1289012230440787", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.1490728287630623)", - "varname": "y_wind_ml_hybrid=0.1490728287630623", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.1694265295096549)", - "varname": "y_wind_ml_hybrid=0.1694265295096549", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.1899994479784503)", - "varname": "y_wind_ml_hybrid=0.1899994479784503", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.2108654522384585)", - "varname": "y_wind_ml_hybrid=0.2108654522384585", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.2321068315732238)", - "varname": "y_wind_ml_hybrid=0.2321068315732238", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.2537288434579582)", - "varname": "y_wind_ml_hybrid=0.2537288434579582", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.2756874949626795)", - "varname": "y_wind_ml_hybrid=0.2756874949626795", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.297938870634528)", - "varname": "y_wind_ml_hybrid=0.297938870634528", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.32043892180952)", - "varname": "y_wind_ml_hybrid=0.32043892180952", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.3431436299389449)", - "varname": "y_wind_ml_hybrid=0.3431436299389449", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.3660090398029607)", - "varname": "y_wind_ml_hybrid=0.3660090398029607", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.3889912139798811)", - "varname": "y_wind_ml_hybrid=0.3889912139798811", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.4120461278469981)", - "varname": "y_wind_ml_hybrid=0.4120461278469981", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.4351297398411195)", - "varname": "y_wind_ml_hybrid=0.4351297398411195", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.4581981247417903)", - "varname": "y_wind_ml_hybrid=0.4581981247417903", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.4812072843241156)", - "varname": "y_wind_ml_hybrid=0.4812072843241156", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.5041132452359707)", - "varname": "y_wind_ml_hybrid=0.5041132452359707", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.5268720234490429)", - "varname": "y_wind_ml_hybrid=0.5268720234490429", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.549439583242366)", - "varname": "y_wind_ml_hybrid=0.549439583242366", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.5717719816996849)", - "varname": "y_wind_ml_hybrid=0.5717719816996849", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.5938252395184105)", - "varname": "y_wind_ml_hybrid=0.5938252395184105", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.6155553553626768)", - "varname": "y_wind_ml_hybrid=0.6155553553626768", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.6369183129717796)", - "varname": "y_wind_ml_hybrid=0.6369183129717796", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.6578701459599694)", - "varname": "y_wind_ml_hybrid=0.6578701459599694", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.6783668745214075)", - "varname": "y_wind_ml_hybrid=0.6783668745214075", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.6983645103529533)", - "varname": "y_wind_ml_hybrid=0.6983645103529533", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.7178190652511751)", - "varname": "y_wind_ml_hybrid=0.7178190652511751", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.7366865465172184)", - "varname": "y_wind_ml_hybrid=0.7366865465172184", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.7549229940152186)", - "varname": "y_wind_ml_hybrid=0.7549229940152186", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.7724843832483534)", - "varname": "y_wind_ml_hybrid=0.7724843832483534", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.7893267466890762)", - "varname": "y_wind_ml_hybrid=0.7893267466890762", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.8054061187048944)", - "varname": "y_wind_ml_hybrid=0.8054061187048944", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.8206784729395211)", - "varname": "y_wind_ml_hybrid=0.8206784729395211", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.8350998426945511)", - "varname": "y_wind_ml_hybrid=0.8350998426945511", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.8486546870699171)", - "varname": "y_wind_ml_hybrid=0.8486546870699171", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.8613802230634602)", - "varname": "y_wind_ml_hybrid=0.8613802230634602", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.8733218404930844)", - "varname": "y_wind_ml_hybrid=0.8733218404930844", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.8845088302333238)", - "varname": "y_wind_ml_hybrid=0.8845088302333238", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.8949708028463796)", - "varname": "y_wind_ml_hybrid=0.8949708028463796", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9047376705110146)", - "varname": "y_wind_ml_hybrid=0.9047376705110146", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9138396605308809)", - "varname": "y_wind_ml_hybrid=0.9138396605308809", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.922307349745209)", - "varname": "y_wind_ml_hybrid=0.922307349745209", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9301717038187545)", - "varname": "y_wind_ml_hybrid=0.9301717038187545", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9374640936416783)", - "varname": "y_wind_ml_hybrid=0.9374640936416783", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9442162716868128)", - "varname": "y_wind_ml_hybrid=0.9442162716868128", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9504605272561569)", - "varname": "y_wind_ml_hybrid=0.9504605272561569", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9562296606545504)", - "varname": "y_wind_ml_hybrid=0.9562296606545504", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9615570505351276)", - "varname": "y_wind_ml_hybrid=0.9615570505351276", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9664766982191144)", - "varname": "y_wind_ml_hybrid=0.9664766982191144", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9710233400910983)", - "varname": "y_wind_ml_hybrid=0.9710233400910983", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9752326002251563)", - "varname": "y_wind_ml_hybrid=0.9752326002251563", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9791410059008868)", - "varname": "y_wind_ml_hybrid=0.9791410059008868", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9827862849301419)", - "varname": "y_wind_ml_hybrid=0.9827862849301419", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9862076195360495)", - "varname": "y_wind_ml_hybrid=0.9862076195360495", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9894459545612335)", - "varname": "y_wind_ml_hybrid=0.9894459545612335", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9925448596477509)", - "varname": "y_wind_ml_hybrid=0.9925448596477509", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.9955521821975708)", - "varname": "y_wind_ml_hybrid=0.9955521821975708", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Model Level = 0.998519629240036)", - "varname": "y_wind_ml_hybrid=0.998519629240036", - "datafile": "", - "unit": "m/s", - "issues": "" - }, - { - "name": "Air Pressure At Sea Level Height Above Msl", - "varname": "air_pressure_at_sea_level_height_above_msl=0", - "datafile": "", - "unit": "Pa", - "issues": "" - }, - { - "name": "Precipitation Amount Acc (Height = 0)", - "varname": "precipitation_amount_acc_height0=0", - "datafile": "", - "unit": "kg/m^2", - "issues": "" - }, - { - "name": "Air Temperature 0m (Height = 0)", - "varname": "air_temperature_0m_height0=0", - "datafile": "_fp", - "unit": "K", - "issues": "" - }, - { - "name": "Surface Geopotential (Height = 0)", - "varname": "surface_geopotential_height0=0", - "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Liquid Water Content Of Surface Snow (Height = 0)", - "varname": "liquid_water_content_of_surface_snow_height0=0", - "datafile": "_fp", - "unit": "kg/m^2", - "issues": "" - }, - { - "name": "Downward Northward Momentum Flux In Air (Height = 0)", - "varname": "downward_northward_momentum_flux_in_air_height0=0", - "datafile": "_fp", - "unit": "N/m^2", - "issues": "" - }, - { - "name": "Downward Eastward Momentum Flux In Air (Height = 0)", - "varname": "downward_eastward_momentum_flux_in_air_height0=0", - "datafile": "_fp", - "unit": "N/m^2", - "issues": "" - }, - { - "name": "Integral Of Top-of-Atmosphere Net Downward Shortwave Flux Wrt Time", - "varname": "integral_of_toa_net_downward_shortwave_flux_wrt_time_top_of_atmosphere=0", - "datafile": "_fp", - "unit": "W s/m^2", - "issues": "" - }, - { - "name": "Integral Of Surface Net Downward Shortwave Flux Wrt Time (Height = 0)", - "varname": "integral_of_surface_net_downward_shortwave_flux_wrt_time_height0=0", - "datafile": "_fp", - "unit": "W s/m^2", - "issues": "" - }, - { - "name": "Integral Of Top-of-Atmosphere Outgoing Longwave Flux Wrt Time", - "varname": "integral_of_toa_outgoing_longwave_flux_wrt_time_top_of_atmosphere=0", - "datafile": "_fp", - "unit": "W s/m^2", - "issues": "" - }, - { - "name": "Integral Of Surface Net Downward Longwave Flux Wrt Time (Height = 0)", - "varname": "integral_of_surface_net_downward_longwave_flux_wrt_time_height0=0", - "datafile": "_fp", - "unit": "W s/m^2", - "issues": "" - }, - { - "name": "Integral Of Surface Downward Latent Heat Evaporation Flux Wrt Time (Height = 0)", - "varname": "integral_of_surface_downward_latent_heat_evaporation_flux_wrt_time_height0=0", - "datafile": "_fp", - "unit": "W s/m^2", - "issues": "" - }, - { - "name": "Integral Of Surface Downward Latent Heat Sublimation Flux Wrt Time (Height = 0)", - "varname": "integral_of_surface_downward_latent_heat_sublimation_flux_wrt_time_height0=0", - "datafile": "_fp", - "unit": "J/m^2", - "issues": "" - }, - { - "name": "Water Evaporation Amount (Height = 0)", - "varname": "water_evaporation_amount_height0=0", - "datafile": "_fp", - "unit": "kg/m^2", - "issues": "" - }, - { - "name": "Surface Snow Sublimation Amount Acc (Height = 0)", - "varname": "surface_snow_sublimation_amount_acc_height0=0", - "datafile": "_fp", - "unit": "kg/m^2", - "issues": "" - }, - { - "name": "Integral Of Surface Downward Sensible Heat Flux Wrt Time (Height = 0)", - "varname": "integral_of_surface_downward_sensible_heat_flux_wrt_time_height0=0", - "datafile": "_fp", - "unit": "W s/m^2", - "issues": "" - }, - { - "name": "Integral Of Surface Downwelling Shortwave Flux In Air Wrt Time (Height = 0)", - "varname": "integral_of_surface_downwelling_shortwave_flux_in_air_wrt_time_height0=0", - "datafile": "_fp", - "unit": "W s/m^2", - "issues": "" - }, - { - "name": "Integral Of Surface Downwelling Longwave Flux In Air Wrt Time (Height = 0)", - "varname": "integral_of_surface_downwelling_longwave_flux_in_air_wrt_time_height0=0", - "datafile": "_fp", - "unit": "J/m^2", - "issues": "" - }, - { - "name": "Air Temperature 2m (Height = 2)", - "varname": "air_temperature_2m_height1=2", - "datafile": "_fp", - "unit": "K", - "issues": "" - }, - { - "name": "Relative Humidity 2m (Height = 2)", - "varname": "relative_humidity_2m_height1=2", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Specific Humidity 2m (Height = 2)", - "varname": "specific_humidity_2m_height1=2", - "datafile": "_fp", - "unit": "kg/kg", - "issues": "" - }, - { - "name": "X Wind 10m (Height = 10)", - "varname": "x_wind_10m_height4=10", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind 10m (Height = 10)", - "varname": "y_wind_10m_height4=10", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 0)", - "varname": "cloud_area_fraction_height3=0", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 20)", - "varname": "cloud_area_fraction_height3=20", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 50)", - "varname": "cloud_area_fraction_height3=50", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 100)", - "varname": "cloud_area_fraction_height3=100", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 150)", - "varname": "cloud_area_fraction_height3=150", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 250)", - "varname": "cloud_area_fraction_height3=250", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 500)", - "varname": "cloud_area_fraction_height3=500", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 750)", - "varname": "cloud_area_fraction_height3=750", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 1000)", - "varname": "cloud_area_fraction_height3=1000", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 1250)", - "varname": "cloud_area_fraction_height3=1250", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 1500)", - "varname": "cloud_area_fraction_height3=1500", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 2000)", - "varname": "cloud_area_fraction_height3=2000", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Cloud Area Fraction (Height = 2500)", - "varname": "cloud_area_fraction_height3=2500", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "X Wind Gust 10m (Height = 10)", - "varname": "x_wind_gust_10m_height4=10", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind Gust 10m (Height = 10)", - "varname": "y_wind_gust_10m_height4=10", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Air Temperature Max (Height = 2)", - "varname": "air_temperature_max_height1=2", - "datafile": "_fp", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature Min (Height = 2)", - "varname": "air_temperature_min_height1=2", - "datafile": "_fp", - "unit": "K", - "issues": "" - }, - { - "name": "Convective Cloud Area Fraction (Height = 0)", - "varname": "convective_cloud_area_fraction_height0=0", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "High Type Cloud Area Fraction (Height = 0)", - "varname": "high_type_cloud_area_fraction_height0=0", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Medium Type Cloud Area Fraction (Height = 0)", - "varname": "medium_type_cloud_area_fraction_height0=0", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Low Type Cloud Area Fraction (Height = 0)", - "varname": "low_type_cloud_area_fraction_height0=0", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Atmosphere Boundary Layer Thickness (Height = 0)", - "varname": "atmosphere_boundary_layer_thickness_height0=0", - "datafile": "_fp", - "unit": "m", - "issues": "" - }, - { - "name": "Hail Diagnostic (Height = 0)", - "varname": "hail_diagnostic_height0=0", - "datafile": "_fp", - "unit": "%", - "issues": "" - }, - { - "name": "Rainfall Amount (Height = 0)", - "varname": "rainfall_amount_height0=0", - "datafile": "_fp", - "unit": "kg/m^2", - "issues": "" - }, - { - "name": "Snowfall Amount (Height = 0)", - "varname": "snowfall_amount_height0=0", - "datafile": "_fp", - "unit": "kg/m^2", - "issues": "" - }, - { - "name": "Graupelfall Amount (Height = 0)", - "varname": "graupelfall_amount_height0=0", - "datafile": "_fp", - "unit": "kg/m^2", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 50)", - "varname": "x_wind_pl_pressure0=50", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 100)", - "varname": "x_wind_pl_pressure0=100", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 150)", - "varname": "x_wind_pl_pressure0=150", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 200)", - "varname": "x_wind_pl_pressure0=200", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 250)", - "varname": "x_wind_pl_pressure0=250", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 300)", - "varname": "x_wind_pl_pressure0=300", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 400)", - "varname": "x_wind_pl_pressure0=400", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 500)", - "varname": "x_wind_pl_pressure0=500", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 600)", - "varname": "x_wind_pl_pressure0=600", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 700)", - "varname": "x_wind_pl_pressure0=700", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 800)", - "varname": "x_wind_pl_pressure0=800", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 850)", - "varname": "x_wind_pl_pressure0=850", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 900)", - "varname": "x_wind_pl_pressure0=900", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 925)", - "varname": "x_wind_pl_pressure0=925", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 950)", - "varname": "x_wind_pl_pressure0=950", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind (Pressure Level = 1000)", - "varname": "x_wind_pl_pressure0=1000", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 50)", - "varname": "y_wind_pl_pressure0=50", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 100)", - "varname": "y_wind_pl_pressure0=100", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 150)", - "varname": "y_wind_pl_pressure0=150", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 200)", - "varname": "y_wind_pl_pressure0=200", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 250)", - "varname": "y_wind_pl_pressure0=250", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 300)", - "varname": "y_wind_pl_pressure0=300", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 400)", - "varname": "y_wind_pl_pressure0=400", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 500)", - "varname": "y_wind_pl_pressure0=500", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 600)", - "varname": "y_wind_pl_pressure0=600", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 700)", - "varname": "y_wind_pl_pressure0=700", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 800)", - "varname": "y_wind_pl_pressure0=800", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 850)", - "varname": "y_wind_pl_pressure0=850", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 900)", - "varname": "y_wind_pl_pressure0=900", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 925)", - "varname": "y_wind_pl_pressure0=925", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 950)", - "varname": "y_wind_pl_pressure0=950", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind (Pressure Level = 1000)", - "varname": "y_wind_pl_pressure0=1000", - "datafile": "_fp", - "unit": "m/s", - "issues": "" - }, - { - "name": "Air Temperature (Pressure Level = 50)", - "varname": "air_temperature_pl_pressure0=50", - "datafile": "_fp", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Pressure Level = 100)", - "varname": "air_temperature_pl_pressure0=100", - "datafile": "_fp", - "unit": "K", - "issues": "" + "issue": "" }, { - "name": "Air Temperature (Pressure Level = 150)", - "varname": "air_temperature_pl_pressure0=150", - "datafile": "_fp", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Pressure Level = 200)", - "varname": "air_temperature_pl_pressure0=200", - "datafile": "_fp", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Pressure Level = 250)", - "varname": "air_temperature_pl_pressure0=250", - "datafile": "_fp", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Pressure Level = 300)", - "varname": "air_temperature_pl_pressure0=300", - "datafile": "_fp", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Pressure Level = 400)", - "varname": "air_temperature_pl_pressure0=400", - "datafile": "_fp", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Pressure Level = 500)", - "varname": "air_temperature_pl_pressure0=500", - "datafile": "_fp", - "unit": "K", - "issues": "" - }, - { - "name": "Air Temperature (Pressure Level = 600)", - "varname": "air_temperature_pl_pressure0=600", - "datafile": "_fp", + "name": "SST", + "long_name": "Sea Surface Temperature (SST)", "unit": "K", - "issues": "" + "datafile": "_sfx", + "issue": "" }, { - "name": "Air Temperature (Pressure Level = 700)", - "varname": "air_temperature_pl_pressure0=700", - "datafile": "_fp", + "name": "TS", + "long_name": "Surface temperature", "unit": "K", - "issues": "" + "datafile": "_sfx", + "issue": "" }, { - "name": "Air Temperature (Pressure Level = 800)", - "varname": "air_temperature_pl_pressure0=800", - "datafile": "_fp", + "name": "T2M", + "long_name": "2m_Temperature", "unit": "K", - "issues": "" + "datafile": "_sfx", + "issue": "" }, { - "name": "Air Temperature (Pressure Level = 850)", - "varname": "air_temperature_pl_pressure0=850", - "datafile": "_fp", - "unit": "K", - "issues": "" + "name": "Q2M", + "long_name": "2m_Specific_Humidity", + "unit": "kg/kg", + "datafile": "_sfx", + "issue": "" }, { - "name": "Air Temperature (Pressure Level = 900)", - "varname": "air_temperature_pl_pressure0=900", - "datafile": "_fp", - "unit": "K", - "issues": "" + "name": "HU2M", + "long_name": "2m_Relative_Humidity", + "unit": "1", + "datafile": "_sfx", + "issue": "" }, { - "name": "Air Temperature (Pressure Level = 925)", - "varname": "air_temperature_pl_pressure0=925", - "datafile": "_fp", - "unit": "K", - "issues": "" + "name": "ZON10M", + "long_name": "10m_Zonal_wind", + "unit": "m/s", + "datafile": "_sfx", + "issue": "" }, { - "name": "Air Temperature (Pressure Level = 950)", - "varname": "air_temperature_pl_pressure0=950", - "datafile": "_fp", - "unit": "K", - "issues": "" + "name": "MER10M", + "long_name": "10m_Meridian_Wind", + "unit": "m/s", + "datafile": "_sfx", + "issue": "" }, { - "name": "Air Temperature (Pressure Level = 1000)", - "varname": "air_temperature_pl_pressure0=1000", - "datafile": "_fp", - "unit": "K", - "issues": "" + "name": "H", + "long_name": "Averaged_Sensible_Heat_Flux", + "unit": "W/m2", + "datafile": "_sfx", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 50)", - "varname": "cloud_area_fraction_pl_pressure0=50", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "LE", + "long_name": "Averaged_Total_Latent_Heat_Flux", + "unit": "W/m2", + "datafile": "_sfx", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 100)", - "varname": "cloud_area_fraction_pl_pressure0=100", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "GFLUX", + "long_name": "Averaged_Ground_Heat_Flux", + "unit": "W/m2", + "datafile": "_sfx", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 150)", - "varname": "cloud_area_fraction_pl_pressure0=150", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "land_area_fraction", + "long_name": "Land-Sea Mask (LSM)", + "unit": "1", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 200)", - "varname": "cloud_area_fraction_pl_pressure0=200", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "specific_humidity_ml", + "long_name": "Specific humidity model levels", + "unit": "kg/kg", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 250)", - "varname": "cloud_area_fraction_pl_pressure0=250", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "turbulent_kinetic_energy_ml", + "long_name": "Turbulent kinetic energy (TKE)", + "unit": "m^2/s^2", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 300)", - "varname": "cloud_area_fraction_pl_pressure0=300", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "cloud_area_fraction_ml", + "long_name": "Cloud cover in model levels", + "unit": "1", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 400)", - "varname": "cloud_area_fraction_pl_pressure0=400", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "toa_net_downward_shortwave_flux", + "long_name": "Instantanous TOA net downward SW radiation", + "unit": "W/m^2", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 500)", - "varname": "cloud_area_fraction_pl_pressure0=500", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "surface_downwelling_shortwave_flux_in_air", + "long_name": "Instantaneous surface SW downwelling radiation", + "unit": "W/m^2", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 600)", - "varname": "cloud_area_fraction_pl_pressure0=600", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "toa_outgoing_longwave_flux", + "long_name": "Instantanous TOA outgoing LW radiation flux", + "unit": "W/m^2", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 700)", - "varname": "cloud_area_fraction_pl_pressure0=700", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "surface_downwelling_longwave_flux_in_air", + "long_name": "Instantanous surface LW downwelling radiation", + "unit": "W/m^2", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 800)", - "varname": "cloud_area_fraction_pl_pressure0=800", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "atmosphere_boundary_layer_thickness", + "long_name": "Height of the PBL", + "unit": "m", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 850)", - "varname": "cloud_area_fraction_pl_pressure0=850", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "pressure_departure", + "long_name": "Nonhydrostatic departure from hydrostatic pressure", + "unit": "Pa", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 900)", - "varname": "cloud_area_fraction_pl_pressure0=900", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "air_temperature_ml", + "long_name": "Air temperature model levels", + "unit": "K", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 925)", - "varname": "cloud_area_fraction_pl_pressure0=925", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "surface_geopotential", + "long_name": "Surface geopotential (fis)", + "unit": "m^2/s^2", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 950)", - "varname": "cloud_area_fraction_pl_pressure0=950", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "x_wind_ml", + "long_name": "X-component of wind in model levels", + "unit": "m/s", + "datafile": "", + "issue": "" }, { - "name": "Cloud Area Fraction (Pressure Level = 1000)", - "varname": "cloud_area_fraction_pl_pressure0=1000", - "datafile": "_fp", - "unit": "%", - "issues": "" + "name": "y_wind_ml", + "long_name": "Y-component of wind in model levels", + "unit": "m/s", + "datafile": "", + "issue": "" }, { - "name": "Geopotential (Pressure Level = 50)", - "varname": "geopotential_pl_pressure0=50", - "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "name": "air_pressure_at_sea_level", + "long_name": "Mean Sea Level Pressure (MSLP)", + "unit": "Pa", + "datafile": "", + "issue": "" }, { - "name": "Geopotential (Pressure Level = 100)", - "varname": "geopotential_pl_pressure0=100", - "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "name": "precipitation_amount_acc", + "long_name": "Total precipitation accumulated from start of forecast", + "unit": "kg/m^2", + "datafile": "", + "issue": "" }, { - "name": "Geopotential (Pressure Level = 150)", - "varname": "geopotential_pl_pressure0=150", + "name": "air_temperature_0m", + "long_name": "Surface temperature (T0M)", + "unit": "K", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 200)", - "varname": "geopotential_pl_pressure0=200", - "datafile": "_fp", + "name": "surface_geopotential", + "long_name": "Surface geopotential (fis)", "unit": "m^2/s^2", - "issues": "" - }, - { - "name": "Geopotential (Pressure Level = 250)", - "varname": "geopotential_pl_pressure0=250", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 300)", - "varname": "geopotential_pl_pressure0=300", + "name": "liquid_water_content_of_surface_snow", + "long_name": "Snow Water Equivivalent (SWE)", + "unit": "kg/m^2", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 400)", - "varname": "geopotential_pl_pressure0=400", + "name": "downward_northward_momentum_flux_in_air", + "long_name": "Momentum flux y-direction", + "unit": "N/m^2", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 500)", - "varname": "geopotential_pl_pressure0=500", + "name": "downward_eastward_momentum_flux_in_air", + "long_name": "Momentum flux x-direction", + "unit": "N/m^2", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 600)", - "varname": "geopotential_pl_pressure0=600", + "name": "integral_of_toa_net_downward_shortwave_flux_wrt_time", + "long_name": "Accumulated TOA net downward SW radiation", + "unit": "W s/m^2", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 700)", - "varname": "geopotential_pl_pressure0=700", + "name": "integral_of_surface_net_downward_shortwave_flux_wrt_time", + "long_name": "Accumulated net downward surface SW radiation", + "unit": "W s/m^2", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 800)", - "varname": "geopotential_pl_pressure0=800", + "name": "integral_of_toa_outgoing_longwave_flux_wrt_time", + "long_name": "Accumulated TOA outgoing LW radiation flux", + "unit": "W s/m^2", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 850)", - "varname": "geopotential_pl_pressure0=850", + "name": "integral_of_surface_net_downward_longwave_flux_wrt_time", + "long_name": "Accumulated net downward surface LW radiation", + "unit": "W s/m^2", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 900)", - "varname": "geopotential_pl_pressure0=900", + "name": "integral_of_surface_downward_latent_heat_evaporation_flux_wrt_time", + "long_name": "Accumulated latent heat evaporation flux", + "unit": "W s/m^2", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 925)", - "varname": "geopotential_pl_pressure0=925", + "name": "integral_of_surface_downward_latent_heat_sublimation_flux_wrt_time", + "long_name": "Accumulated latent heat sublimation flux at surface", + "unit": "J/m^2", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 950)", - "varname": "geopotential_pl_pressure0=950", + "name": "water_evaporation_amount", + "long_name": "Water evaporation amount", + "unit": "kg/m^2", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Geopotential (Pressure Level = 1000)", - "varname": "geopotential_pl_pressure0=1000", + "name": "surface_snow_sublimation_amount_acc", + "long_name": "Accumulated Snow Sublimation", + "unit": "kg/m^2", "datafile": "_fp", - "unit": "m^2/s^2", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 50)", - "varname": "relative_humidity_pl_pressure0=50", + "name": "integral_of_surface_downward_sensible_heat_flux_wrt_time", + "long_name": "Accumulated downwelling surface sensible heat flux", + "unit": "W s/m^2", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 100)", - "varname": "relative_humidity_pl_pressure0=100", + "name": "integral_of_surface_downwelling_shortwave_flux_in_air_wrt_time", + "long_name": "Accumulated surface SW downwelling radiation", + "unit": "W s/m^2", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 150)", - "varname": "relative_humidity_pl_pressure0=150", + "name": "integral_of_surface_downwelling_longwave_flux_in_air_wrt_time", + "long_name": "Accumulated surface LW downwelling radiation", + "unit": "J/m^2", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 200)", - "varname": "relative_humidity_pl_pressure0=200", + "name": "air_temperature_2m", + "long_name": "Screen level temperature (T2M)", + "unit": "K", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 250)", - "varname": "relative_humidity_pl_pressure0=250", + "name": "relative_humidity_2m", + "long_name": "Screen level relative humidity (RH2M)", + "unit": "1", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 300)", - "varname": "relative_humidity_pl_pressure0=300", + "name": "specific_humidity_2m", + "long_name": "Screen level specific humidity", + "unit": "kg/kg", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 400)", - "varname": "relative_humidity_pl_pressure0=400", + "name": "x_wind_10m", + "long_name": "X-component of 10 metre wind", + "unit": "m/s", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 500)", - "varname": "relative_humidity_pl_pressure0=500", + "name": "y_wind_10m", + "long_name": "Y-component of 10 metre wind", + "unit": "m/s", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 600)", - "varname": "relative_humidity_pl_pressure0=600", + "name": "cloud_area_fraction", + "long_name": "Total cloud cover (TCC)", + "unit": "1", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 700)", - "varname": "relative_humidity_pl_pressure0=700", + "name": "x_wind_gust_10m", + "long_name": "X-component of 10 metre wind gust", + "unit": "m/s", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 800)", - "varname": "relative_humidity_pl_pressure0=800", + "name": "y_wind_gust_10m", + "long_name": "Y-component of 10 metre wind gust", + "unit": "m/s", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 850)", - "varname": "relative_humidity_pl_pressure0=850", + "name": "air_temperature_max", + "long_name": "Max screen level temperature last hour", + "unit": "K", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 900)", - "varname": "relative_humidity_pl_pressure0=900", + "name": "air_temperature_min", + "long_name": "Min screen level temperature last hour", + "unit": "K", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 925)", - "varname": "relative_humidity_pl_pressure0=925", - "datafile": "_fp", + "name": "convective_cloud_area_fraction", + "long_name": "Convective cloud cover", "unit": "%", - "issues": "" - }, - { - "name": "Relative Humidity (Pressure Level = 950)", - "varname": "relative_humidity_pl_pressure0=950", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Relative Humidity (Pressure Level = 1000)", - "varname": "relative_humidity_pl_pressure0=1000", + "name": "high_type_cloud_area_fraction", + "long_name": "Cloud cover of high clouds (HCC)", + "unit": "1", "datafile": "_fp", - "unit": "%", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 50)", - "varname": "upward_air_velocity_pl_pressure0=50", + "name": "medium_type_cloud_area_fraction", + "long_name": "Cloud cover of medium height clouds (MCC)", + "unit": "1", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 100)", - "varname": "upward_air_velocity_pl_pressure0=100", + "name": "low_type_cloud_area_fraction", + "long_name": "Cloud cover of low clouds (LCC)", + "unit": "1", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 150)", - "varname": "upward_air_velocity_pl_pressure0=150", + "name": "atmosphere_boundary_layer_thickness", + "long_name": "Height of the PBL", + "unit": "m", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 200)", - "varname": "upward_air_velocity_pl_pressure0=200", + "name": "hail_diagnostic", + "long_name": "Hail diagnostic", + "unit": "%", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 250)", - "varname": "upward_air_velocity_pl_pressure0=250", + "name": "rainfall_amount", + "long_name": "Instantanous rainfall at surface", + "unit": "kg/m^2", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 300)", - "varname": "upward_air_velocity_pl_pressure0=300", + "name": "snowfall_amount", + "long_name": "Instantaneous snowfall amount at surface", + "unit": "kg/m^2", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 400)", - "varname": "upward_air_velocity_pl_pressure0=400", + "name": "graupelfall_amount", + "long_name": "Instantaneous graupel at surface", + "unit": "kg/m^2", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 500)", - "varname": "upward_air_velocity_pl_pressure0=500", - "datafile": "_fp", + "name": "x_wind_pl", + "long_name": "X-component of wind in pressure levels", "unit": "m/s", - "issues": "" - }, - { - "name": "Upward Air Velocity (Pressure Level = 600)", - "varname": "upward_air_velocity_pl_pressure0=600", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 700)", - "varname": "upward_air_velocity_pl_pressure0=700", - "datafile": "_fp", + "name": "y_wind_pl", + "long_name": "Y-component of wind in pressure levels", "unit": "m/s", - "issues": "" - }, - { - "name": "Upward Air Velocity (Pressure Level = 800)", - "varname": "upward_air_velocity_pl_pressure0=800", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 850)", - "varname": "upward_air_velocity_pl_pressure0=850", + "name": "air_temperature_pl", + "long_name": "Air temperature pressure levels", + "unit": "K", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 900)", - "varname": "upward_air_velocity_pl_pressure0=900", + "name": "cloud_area_fraction_pl", + "long_name": "Total cloud cover (TCC) in pressure levels", + "unit": "1", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 925)", - "varname": "upward_air_velocity_pl_pressure0=925", + "name": "geopotential_pl", + "long_name": "Geopotential pressure levels", + "unit": "m^2/s^2", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 950)", - "varname": "upward_air_velocity_pl_pressure0=950", + "name": "relative_humidity_pl", + "long_name": "Relative humidity pressure levels", + "unit": "1", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Upward Air Velocity (Pressure Level = 1000)", - "varname": "upward_air_velocity_pl_pressure0=1000", - "datafile": "_fp", + "name": "upward_air_velocity_pl", + "long_name": "Vertical vind pressure levels", "unit": "m/s", - "issues": "" - }, - { - "name": "Air Pressure At Sea Level (Height Above Msl = 0)", - "varname": "air_pressure_at_sea_level_height_above_msl=0", - "datafile": "_fp", - "unit": "Pa", - "issues": "" - }, - { - "name": "Lwe Thickness Of Atmosphere Mass Content Of Water Vapor Atmosphere As Single Layer", - "varname": "lwe_thickness_of_atmosphere_mass_content_of_water_vapor_atmosphere_as_single_layer=0", "datafile": "_fp", - "unit": "m", - "issues": "" + "issue": "" }, { - "name": "Surface Air Pressure (Height = 0)", - "varname": "surface_air_pressure_height0=0", - "datafile": "_fp", + "name": "air_pressure_at_sea_level", + "long_name": "Mean Sea Level Pressure (MSLP)", "unit": "Pa", - "issues": "" - }, - { - "name": "Lifting Condensation Level (Height = 0)", - "varname": "lifting_condensation_level_height0=0", - "datafile": "_fp", - "unit": "m", - "issues": "" - }, - { - "name": "Atmosphere Level Of Free Convection (Height = 0)", - "varname": "atmosphere_level_of_free_convection_height0=0", "datafile": "_fp", - "unit": "m", - "issues": "" + "issue": "" }, { - "name": "Atmosphere Level Of Neutral Buoyancy (Height = 0)", - "varname": "atmosphere_level_of_neutral_buoyancy_height0=0", - "datafile": "_fp", + "name": "lwe_thickness_of_atmosphere_mass_content_of_water_vapor", + "long_name": "Precipitable water", "unit": "m", - "issues": "" - }, - { - "name": "Wind Direction (Height = 10)", - "varname": "wind_direction_height4=10", "datafile": "_fp", - "unit": "degree", - "issues": "" + "issue": "" }, { - "name": "Wind Speed (Height = 10)", - "varname": "wind_speed_height4=10", - "datafile": "_fp", + "name": "x_wind_z", + "long_name": "X-component of wind in heights", "unit": "m/s", - "issues": "" - }, - { - "name": "Precipitation Amount Acc (Height = 0)", - "varname": "precipitation_amount_acc_height0=0", - "datafile": "_fp", - "unit": "kg/m^2", - "issues": "" - }, - { - "name": "Snowfall Amount Acc (Height = 0)", - "varname": "snowfall_amount_acc_height0=0", - "datafile": "_fp", - "unit": "kg/m^2", - "issues": "" - }, - { - "name": "X Wind Z (Height = 20)", - "varname": "x_wind_z_height2=20", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "X Wind Z (Height = 50)", - "varname": "x_wind_z_height2=50", - "datafile": "_fp", + "name": "y_wind_z", + "long_name": "Y-component of wind in heights", "unit": "m/s", - "issues": "" - }, - { - "name": "X Wind Z (Height = 100)", - "varname": "x_wind_z_height2=100", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "X Wind Z (Height = 250)", - "varname": "x_wind_z_height2=250", + "name": "surface_air_pressure", + "long_name": "Surface air pressure", + "unit": "Pa", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "X Wind Z (Height = 500)", - "varname": "x_wind_z_height2=500", + "name": "lifting_condensation_level", + "long_name": "Atmosphere lifting condensation level wrt surface (LCL)", + "unit": "m", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "X Wind Z (Height = 750)", - "varname": "x_wind_z_height2=750", + "name": "atmosphere_level_of_free_convection", + "long_name": "Level of free convection wrt surface (LFC)", + "unit": "m", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Y Wind Z (Height = 20)", - "varname": "y_wind_z_height2=20", + "name": "atmosphere_level_of_neutral_buoyancy", + "long_name": "Level of neutral buoyancy (LNB)", + "unit": "m", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Y Wind Z (Height = 50)", - "varname": "y_wind_z_height2=50", + "name": "wind_direction", + "long_name": "Wind direction in 10 metre", + "unit": "degree", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Y Wind Z (Height = 100)", - "varname": "y_wind_z_height2=100", - "datafile": "_fp", + "name": "wind_speed", + "long_name": "Wind speed in 10 metre", "unit": "m/s", - "issues": "" - }, - { - "name": "Y Wind Z (Height = 250)", - "varname": "y_wind_z_height2=250", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Y Wind Z (Height = 500)", - "varname": "y_wind_z_height2=500", + "name": "precipitation_amount_acc", + "long_name": "Total precipitation accumulated from start of forecast", + "unit": "kg/m^2", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" }, { - "name": "Y Wind Z (Height = 750)", - "varname": "y_wind_z_height2=750", + "name": "snowfall_amount_acc", + "long_name": "Total accumulated solid precipitation (snow+graupel+hail)", + "unit": "kg/m^2", "datafile": "_fp", - "unit": "m/s", - "issues": "" + "issue": "" } ] } \ No newline at end of file