title: “Lab 3” author: “John King” date: “April 24th, 2024” This script creates a snowmelt model for a particular location using data from SNOTEL

# Install necessary packages
library(snotelr)
## Warning: package 'snotelr' was built under R version 4.3.3
library(hydroGOF)
## Warning: package 'hydroGOF' was built under R version 4.3.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(hydromisc)

# Downloading data from Echo Peak station
station <- "463"
snow_data <- snotelr::snotel_download(site_id = station, internal = TRUE)
## Downloading site: echo peak , with id: 463
# Plotting data from SNOTEL
plot(as.Date(snow_data$date), snow_data$snow_water_equivalent,
     type = "l", xlab = "Date", ylab = "SWE (mm)")

# Using phenology to determine snow accumulation timeframe
phenology <- snotelr::snotel_phenology(snow_data)
## Joining with `by = join_by(date)`
# County: El Dorado
# Elevation: 7653 feet

# First Snow of Chosen Year: November 8th, 2002
# Last Snow of Chosen Year: June 5th, 2003
# The chosen year will range from November to July.

# Plotting chosen year
snow_data_2002 <- subset(snow_data, as.Date(date) >= as.Date("2002-09-01") &
                             as.Date(date) <= as.Date("2003-08-31"))
snow_data_final <- subset(snow_data_2002, select=c("date", "snow_water_equivalent", "precipitation", "temperature_mean", "temperature_min", "temperature_max"))
plot(as.Date(snow_data_final$date),snow_data_final$snow_water_equivalent,
     type = "l",xlab = "Date", ylab = "SWE (mm)")

# Hand calibration
Tmax_snow <- 3  
Tmin_rain <- 1
kd <- 4
r_cap <- 0.050
T_melt <- 2
snow_estim <- hydromisc::snow.sim(DATA=snow_data_final, 
                                  Tmax=Tmax_snow, 
                                  Tmin=Tmin_rain,
                                  kd=kd,
                                  rcap=r_cap,
                                  Tmelt=T_melt)

#Comparing data sets
obs <- snow_data_final$snow_water_equivalent
simulated <- snow_estim$swe_simulated
hydroGOF::ggof(simulated, obs, na.rm = TRUE, dates=snow_data_final$date,
               gofs=c("MAE", "RMSE", "PBIAS"),
               xlab = "", ylab="SWE, mm", 
               tick.tstep="months", cex=c(0,0),lwd=c(2,2))
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !

# Calling function to optimize
fcn_to_minimize <- function(par,datain, obs){
  snow_estim <- hydromisc::snow.sim(DATA=datain, Tmax=par[1], Tmin=par[2], kd=par[3], Tmelt=par[4])
  calib.stats <- hydroGOF::gof(snow_estim$swe_simulated,obs,na.rm=TRUE)
  objective_stat <- as.numeric(calib.stats['MAE',])
  return(objective_stat)
}
opt_res <- optim(par=c(1,0.5,1.07,0),fn=fcn_to_minimize,
                 lower=c(-1,-1,0.5,-2),
                 upper=c(3,1,5,3),
                 method="L-BFGS-B",
                 datain=snow_data_final,
                 obs=obs)
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !
# Printing required data
cat(sprintf("Optimal parameters:\nTmax=%.1f\nTmin=%.1f\nkd=%.2f\nTmelt=%.1f\n",
            max(opt_res$par[1],opt_res$par[2]),min(opt_res$par[1],opt_res$par[2]),
            opt_res$par[3],opt_res$par[4]))
## Optimal parameters:
## Tmax=1.0
## Tmin=0.5
## kd=1.07
## Tmelt=0.0
snow_estim_opt <- hydromisc::snow.sim(DATA=snow_data_final,
                                      Tmax=max(opt_res$par[1],opt_res$par[2]),
                                      Tmin=min(opt_res$par[1],opt_res$par[2]),
                                      kd=opt_res$par[3],
                                      Tmelt=opt_res$par[4])
obs <- snow_data_final$snow_water_equivalent
simulated <- snow_estim_opt$swe_simulated
hydroGOF::ggof(simulated, obs, na.rm = TRUE, dates=snow_data_final$date,
               gofs=c("MAE", "RMSE", "PBIAS"),
               xlab = "", ylab="SWE, mm", 
               tick.tstep="months", cex=c(0,0),lwd=c(2,2))
## Warning: 'rNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'wNSE' can not be computed: some elements in 'obs' are zero !
## Warning: 'rd' can not be computed: some elements in 'obs' are zero !

# Climate adjustment
dT <- 4
snow_plus3 <- hydromisc::snow.sim(DATA=snow_data_final,
                                  Tmax=max(opt_res$par[1],opt_res$par[2]),
                                  Tmin=min(opt_res$par[1],opt_res$par[2]),
                                  kd=opt_res$par[3],
                                  Tmelt=opt_res$par[4],
                                  deltaT = dT)
simplusdT <- snow_plus3$swe_simulated
# plot the results
dTlegend  <- expression("Simulated"*~+4~degree*C)
plot(as.Date(snow_data_final$date),obs,type = "l",xlab = "", ylab = "SWE (mm)")
lines(as.Date(snow_estim$date),simulated,lty=2,col="blue")
lines(as.Date(snow_estim$date),simplusdT,lty=3,col="red")
legend("topleft", legend = c("Observed", "Simulated",dTlegend),
       lty = c(1,2,3), col=c("black","blue","red"))
grid()