Nothing
## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 9,
fig.height = 5
)
## ----setup--------------------------------------------------------------------
library(SunsVoc)
## -----------------------------------------------------------------------------
# below is the function used to read in our csv
# df_wbw <- read_df_raw_from_csv('../../data/sa42589-albsf_full_ddiv.csv', 0, 7)
colnames(df_wbw)
## ----eval=FALSE, warning=FALSE------------------------------------------------
# # Load required packages
# library(dplyr)
# library(purrr)
# library(magrittr)
# library(ddiv)
#
# # I-V curve feature extraction using the IVfeature function
# str_ddiv <- function(iv_str, pb) {
# iv <- char_to_df(iv_str)
# # initialize result for when IVfeature encounters an error
# err_df <- data.frame("Isc" = NA, "Rsh" = NA,
# "Voc" = NA, "Rs" = NA,
# "Pmp" = NA,"Imp" = NA,
# "Vmp" = NA, "FF" = NA)
#
# # calculate ddiv with error trapping
# res <- tryCatch(
# as.data.frame(IVfeature(I = iv$I, V = iv$V, num = 200, crt = 0.1, crtvalb = 0.2)),
# error = function(e) err_df
# )
# pb$tick()$print()
# return(res)
# }
#
# # Batch processing of I-V curves for feature extraction
# batch_ddiv <- function(df) {
# iv_list <- df$ivdf
# pb <- dplyr::progress_estimated(length(iv_list))
# ddiv_df <- iv_list %>% map_dfr(~str_ddiv(iv_str = ., pb))
# res <- cbind(df$tmst, ddiv_df)
# return(res)
# }
#
# # It is recommended to test on a small number of I-V curves
# # to tweak the input parameters of the IVfeature function
# test <- sample_n(df_wbw, 5)
# ddiv_test <- batch_ddiv(test)
# colnames(ddiv_test) <- c("tmst", "isc", "rsh", "voc", "rs", "pmp", "imp", "vmp", "ff" )
#
# # Bind the ddiv result with the original dataframe
# test_res <- full_join(test[,c(1,3:4)], ddiv_test[,c(1:2,4:8)])
#
# # See the column names of the extracted features
# colnames(test_res)
#
## -----------------------------------------------------------------------------
T_corr <- median_temp(df_wbw)
T_corr
## -----------------------------------------------------------------------------
# Read the raw data with tracer accuracy for filtering and time period for pseudo I-V curves
df <- read_df_raw(df_wbw, tracer_accuracy = 0.02, t_period = 7)
# Subset the data for the first 21 days
df_init <- select_init_df(df, days = 21)
# See the column names of the initial dataframe
colnames(df_init)
## -----------------------------------------------------------------------------
# Psuedo-IV curve generation
df_full <- IVXbyX(df, corr_temp = T_corr, N_c= 60)
# See the column names of the generated data
colnames(df_full)
## -----------------------------------------------------------------------------
# Power loss mode calculation
res <- power_loss_phys_bat(df_full, df_init, corr_T = T_corr, N_c = 60)
# Generate an example table for power loss modes
knitr::kable(res[1:5, ], caption = "Power Loss Modes")
## -----------------------------------------------------------------------------
library(ggplot2)
ggplot(data = res, aes(x = date)) +
geom_point(aes(y = uni_I, color = "Uniform current", shape = "Uniform current"), size = 2) +
geom_point(aes(y = rec, color = "Recombination", shape = "Recombination"), size = 2) +
geom_point(aes(y = rs, color = "Rs loss", shape = "Rs loss"), size = 2) +
geom_point(aes(y = I_mis, color = "I mismatch", shape = "I mismatch"), size = 2) +
ylab(expression(paste(Delta, "Power (W)"))) + xlab("Date") +
theme_bw() +
theme(axis.text = element_text(size = 12), axis.title = element_text(size = 12),
legend.text = element_text(size = 10), legend.position = "top") +
scale_shape_manual(values = c(4, 8, 17, 16), name = "Power loss \n mode") +
scale_colour_discrete(name = "Power loss \n mode")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.