Universidade Federal de Santa Maria - UFSM

Departamento de Física

Prof. Jônatan Tatsch

Aluno Roilan Hernandez Valdes


1 Resumo

2 Introdução

3 Métodos

3.1 Análises das séries

setwd("~/MATERIAS/R/PROJETO_FINAL/")
dados.pauliceia <- read.table("PEG_30m_Tatsch2009-2014.dat", 
                              header = TRUE, 
                              na.strings = c("-7777.00000000","-9999.00000000") )
# Convertendo a data
dados.pauliceia$date <- as.Date(dados.pauliceia$DOY-1,
                                origin = as.Date(paste(dados.pauliceia$ANO,
                                                       "-01-01 00:00",
                                                       sep = "")
                                                 ) 
                                )
dados.pauliceia$date <- as.POSIXct(paste(dados.pauliceia$date," ", 
                                         ifelse(dados.pauliceia$HH < 10,
                                                 paste("0",dados.pauliceia$HH,sep = ""), 
                                                 dados.pauliceia$HH),
                                        ":",
                                         ifelse(dados.pauliceia$MN < 10,
                                                paste("0",dados.pauliceia$MN,sep = ""),
                                                dados.pauliceia$MN), 
                                         sep = "" ), 
                                    tz = "UTC")

# Convertendo a vazão de m³/s para mm
dados.pauliceia$VAZAO.mm. <- dados.pauliceia$VAZAO.m3.s. * 1.8 / 11.94

O intervalo de dados está definido entre 2009-07-01 17:00:00 e 2014-09-17 14:30:00

3.1.1 Precipitação e vazão

3.1.1.1 Escala Horária

Precipitação no exutório, torre e vazão, escala horária.

# Rearranjo da serie:
# Acumulado da chuva para cada sitio e vazão na escala horária
dados.horario <- data.frame(date = dados.pauliceia$date[c(T,F)])
# Sumando para levar a escala horária
to.hour.RAIN_AWS.mm. <- aggregate(x = dados.pauliceia$RAIN_AWS.mm., 
                                        by = list(format(dados.pauliceia$date,"%Y-%m-%d %H", tz = "UTC")),
                                        FUN = sum, 
                                        na.rm = FALSE)
dados.horario$RAIN_AWS.mm. <- to.hour.RAIN_AWS.mm.$x
        to.hour.RAIN_AWS.mm. <- xts(to.hour.RAIN_AWS.mm.$x, order.by = dados.horario$date, tzone = "UTC")

to.hour.RAIN_VERT.mm. <- aggregate(x = dados.pauliceia$RAIN_VERT.mm., 
                                        by = list(format(dados.pauliceia$date,"%Y-%m-%d %H", tz = "UTC")),
                                        FUN = sum, 
                                        na.rm = FALSE)
dados.horario$RAIN_VERT.mm. <- to.hour.RAIN_VERT.mm.$x
        to.hour.RAIN_VERT.mm. <- xts(to.hour.RAIN_VERT.mm.$x, order.by = dados.horario$date, tzone = "UTC")

to.hour.VAZAO <- aggregate(x = dados.pauliceia$VAZAO.mm. , 
                           by = list(format(dados.pauliceia$date,"%Y-%m-%d %H", tz = "UTC")),
                           FUN = sum, 
                           na.rm = FALSE)
dados.horario$VAZAO.mm. <- to.hour.VAZAO$x 
        to.hour.VAZAO <- xts( to.hour.VAZAO$x, order.by = dados.horario$date, tzone = "UTC")


Separação dos escoamentos básico e superficial, na escala horária.

São usadas as funções do pacote EcoHydRology

# Separação de escoamentos básico e superficial
    sem.na <- dados.horario$VAZAO.mm. 
    # Sustituindo os dados NA com a média da vazão [A função BaseflowSeparation não aceita NA]
    sem.na[is.na(dados.horario$VAZAO.mm.)] <- mean(dados.horario$VAZAO.mm., na.rm = TRUE)
# Separação dos escoamentos
    vaz <- BaseflowSeparation(sem.na, filter_parameter = 0.95,  passes = 5)
    # Voltando ao NA onde tinha NA 
    vaz$bt[is.na(dados.horario$VAZAO.mm.)] <- NA
    vaz$qft[is.na(dados.horario$VAZAO.mm.)] <- NA
    dados.horario$VAZAO.mm.basico <- vaz$bt
    dados.horario$VAZAO.mm.superficial <- vaz$qft
# Convertendo no formato XTS     
    hour.VAZAO.mm.basico <- xts(vaz$bt, order.by = dados.horario$date, tz = "UTC") 
    hour.VAZAO.mm.superfial <- xts(vaz$qft, order.by = dados.horario$date, tz = "UTC")


3.1.1.2 Escala Diária

Precipitação no exutório, torre e a vazão, escala diária.

# Rearranjo da serie:
# Acumulado da chuva para cada sitio e vazão na escala diária
dados.diarios <- data.frame(date = as.POSIXct(unique(format(dados.pauliceia$date, "%Y-%m-%d")) ) )
# Sumando para levar a escala diária
to.day.RAIN_AWS.mm. <- aggregate(x = dados.pauliceia$RAIN_AWS.mm., 
                                        by = list(format(dados.pauliceia$date,"%Y-%m-%d", tz = "UTC")),
                                        FUN = sum, 
                                        na.rm = FALSE)
dados.diarios$RAIN_AWS.mm. <- to.day.RAIN_AWS.mm.$x
        to.day.RAIN_AWS.mm. <- xts(to.day.RAIN_AWS.mm.$x, order.by = dados.diarios$date, tzone = "UTC")
# Sumando para levar a escala diária
to.day.RAIN_VERT.mm. <- aggregate(x = dados.pauliceia$RAIN_VERT.mm., 
                                        by = list(format(dados.pauliceia$date,"%Y-%m-%d", tz = "UTC")),
                                        FUN = sum, 
                                        na.rm = FALSE)
dados.diarios$RAIN_VERT.mm. <- to.day.RAIN_VERT.mm.$x
        to.day.RAIN_VERT.mm. <- xts(to.day.RAIN_VERT.mm.$x, order.by = dados.diarios$date, tzone = "UTC")
#Determinando a vazão média diária
to.day.VAZAO <- aggregate(x = dados.pauliceia$VAZAO.mm., 
                           by = list(format(dados.pauliceia$date,"%Y-%m-%d", tz = "UTC")),
                           FUN = sum, 
                           na.rm = FALSE)
dados.diarios$VAZAO.mm. <- to.day.VAZAO$x
        to.day.VAZAO <- xts( to.day.VAZAO$x, order.by = dados.diarios$date, tzone = "UTC")


Separação dos escoamentos básico e superficial, na escala diária.

# Separação de escoamentos básico e superficial
    sem.na <- dados.diarios$VAZAO.mm. 
    # Sustituindo os dados NA com a média da vazão [A função BaseflowSeparation não aceita NA]
    sem.na[is.na(dados.diarios$VAZAO.mm.)] <- mean(dados.diarios$VAZAO.mm., na.rm = TRUE)
# Separação dos escoamentos
    vaz <- BaseflowSeparation(sem.na, filter_parameter = 0.95,  passes = 3)
    # Voltando ao NA onde tinha NA 
    vaz$bt[is.na(dados.diarios$VAZAO.mm.)] <- NA
    vaz$qft[is.na(dados.diarios$VAZAO.mm.)] <- NA
    dados.diarios$VAZAO.mm.basico <- vaz$bt
    dados.diarios$VAZAO.mm.superficial <- vaz$qft
# Convertendo no formato XTS     
    day.VAZAO.mm.basico <- xts(vaz$bt, order.by = dados.diarios$date, tz = "UTC") 
    day.VAZAO.mm.superfial <- xts(vaz$qft, order.by = dados.diarios$date, tz = "UTC")


3.1.1.3 Escala Mensal

Precipitação no exutório, torre e a vazão, escala mensal.

# Rearranjo da serie:
# Acumulado da chuva para cada sitio e vazão na escala diária
dados.month <- data.frame(date = as.yearmon(unique(format(dados.pauliceia$date, "%Y-%m")), format = "%Y-%m" ) )
# Sumando para levar a escala diária
to.month.RAIN_AWS.mm. <- aggregate(x = dados.pauliceia$RAIN_AWS.mm., 
                                        by = list(format(dados.pauliceia$date,"%Y-%m", tz = "UTC")),
                                        FUN = sum, 
                                        na.rm = T)
dados.month$RAIN_AWS.mm. <- to.month.RAIN_AWS.mm.$x
        to.month.RAIN_AWS.mm. <- xts(to.month.RAIN_AWS.mm.$x, order.by = dados.month$date, tzone = "UTC")
# Sumando para levar a escala diária
to.month.RAIN_VERT.mm. <- aggregate(x = dados.pauliceia$RAIN_VERT.mm., 
                                        by = list(format(dados.pauliceia$date,"%Y-%m", tz = "UTC")),
                                        FUN = sum, 
                                        na.rm = T)
dados.month$RAIN_VERT.mm. <- to.month.RAIN_VERT.mm.$x
        to.month.RAIN_VERT.mm. <- xts(to.month.RAIN_VERT.mm.$x, order.by = dados.month$date, tzone = "UTC")
#Determinando a vazão média diária en [mm] a partir dos dados de média hora 
to.month.VAZAO <- aggregate(x = dados.pauliceia$VAZAO.mm., 
                           by = list(format(dados.pauliceia$date,"%Y-%m", tz = "UTC")),
                           FUN = sum, 
                           na.rm = T)
dados.month$VAZAO.mm. <- to.month.VAZAO$x
        to.month.VAZAO <- xts( to.month.VAZAO$x, order.by = dados.month$date, tzone = "UTC")

A área da bacia foi determinada usando o Modelo Digital do Terreno (MDT), direcção de fluxo, e a área a montante partindo do ponto de exutório da bacia, o valor da área é: 11.94 km² (1.19410^{7} m² ).

    by.year.prec <- aggregate(x = dados.pauliceia$RAIN_AWS.mm.,
                              by = list(format(as.POSIXct(dados.pauliceia$date), "%Y")),
                              FUN = sum,
                              na.rm = T )
 
    quantos.na.prec <- as.data.frame(round(table(format(dados.pauliceia[!is.na(dados.pauliceia$RAIN_AWS.mm.),"date"],
                                                   "%Y") ) / 48))
              names(quantos.na.prec) <- c("Ano", "notNA.prec")
              
#     by.year.vaz <- aggregate(x = dados.pauliceia$VAZAO.m3.s. *(3.6*24/11.94) ,
#                               by = list(format(as.POSIXct(dados.pauliceia$date), "%Y")),
#                               FUN = mean,
#                               na.rm = T
#                               )
    by.year.vaz <- aggregate(x = dados.pauliceia$VAZAO.mm. ,
                              by = list(format(as.POSIXct(dados.pauliceia$date), "%Y")),
                              FUN = sum,
                              na.rm = T
                              )                               
    quantos.na.vaz <- as.data.frame(round(table(format(dados.pauliceia[!is.na(dados.pauliceia$VAZAO.mm.), "date"],
                                                  "%Y") )/48))
              names(quantos.na.vaz) <- c("Ano", "notNA.vaz")
            
    total <- as.vector(round(table(format(dados.pauliceia[, "date"],"%Y") )/48))
            
              na.all <- cbind(quantos.na.vaz, quantos.na.prec$notNA.prec, total)
                names(na.all) <- c("Ano", "Valid.Vazão", "Valid.Prec", "Total")
                    kable(na.all, format = "markdown",align = "c" )                
Ano Valid.Vazão Valid.Prec Total
2009 179 183 183
2010 325 338 365
2011 365 365 365
2012 366 366 366
2013 365 365 365
2014 259 218 260
    esco.coef <- data.frame(date = by.year.prec$Group.1,
                            precip = by.year.prec$x, 
                            vazao = by.year.vaz$x , 
                            coef = by.year.vaz$x  / by.year.prec$x)    
    
                    kable(esco.coef, format = "markdown",align = "c" )
date precip vazao coef
2009 1016.242 155.0198 0.1525422
2010 1052.330 291.7379 0.2772305
2011 1462.411 338.3178 0.2313425
2012 1185.670 348.8181 0.2941949
2013 1273.048 349.2596 0.2743491
2014 289.052 217.4663 0.7523432

3.1.2 Umidade do solo

      umid <- names(dados.pauliceia[,grep(names(dados.pauliceia),pattern = "Umid.")])
 umidade.pauliceia <- dados.pauliceia[,c("date",umid)]
        kable(summary(umidade.pauliceia[,-1]*100), format = "markdown", digits = 8)
UmidSolo_10cm UmidSolo_20cm UmidSolo_20cm.1 UmidSolo_80cm UmidSolo_150cm UmidSolo_200cm
Min. : 6.49 Min. : 6.32 Min. : 3.50 Min. : 6.33 Min. : 9.23 Min. : 8.49
1st Qu.: 8.75 1st Qu.: 8.40 1st Qu.: 4.37 1st Qu.: 7.28 1st Qu.:11.10 1st Qu.: 9.67
Median :12.30 Median :12.65 Median : 6.71 Median :11.28 Median :14.41 Median :12.44
Mean :12.73 Mean :12.47 Mean : 7.13 Mean :10.98 Mean :13.93 Mean :13.14
3rd Qu.:15.88 3rd Qu.:15.78 3rd Qu.: 9.21 3rd Qu.:13.52 3rd Qu.:16.47 3rd Qu.:15.58
Max. :56.04 Max. :47.48 Max. :49.51 Max. :60.55 Max. :57.41 Max. :60.83
NA’s :52369 NA’s :72176 NA’s :63481 NA’s :56527 NA’s :56570 NA’s :64930

# Conteúdo de água no perfil do solo
    cont.agua <- data.frame(date = umidade.pauliceia$date, 
                            cont.agua = (umidade.pauliceia$UmidSolo_10cm * 100 + 
                                        umidade.pauliceia$UmidSolo_20cm * 200 + 
                                        umidade.pauliceia$UmidSolo_80cm * 800 + 
                                        umidade.pauliceia$UmidSolo_150cm * 1500 )
                            )
        cont.agua.xts <- xts(x = cont.agua$cont.agua , order.by = cont.agua$date, tzone = "UTC")
                    names(cont.agua.xts) <- "cont.agua"
          as <- dygraph(data = cont.agua.xts, main = "Conteúdo de água no solo.")
            as <- dySeries(dygraph = as,label = "cont.agua" )
            as <- dyRangeSelector(dygraph = as)
                as

3.1.2.1 Evapotranspiração

3.1.2.2 Temperatura do solo

3.1.2.3 Radiação

3.2 Formulação do modelo usado

4 Resultados

5 Referências