Boa tarde, Éder!!

Mais uma vez, lhe agradeço pelas contribuições. Foram de grande valia.
Como havia comentado, segue o script que programei para fazer o calculo diário da ETP através dos métodos de Penman-Monteith (padronizado por Allen, 1998) e através do método proposto por Priestly-Taylor.

Abraços!

rm(list = ls())

setwd("DIRETÓRIO")
a = read.table("ARQUIVO_CLIMATICO'); head(a)
a$Data = as.Date(a$Data)
a$DiaJuliano = as.numeric(format(a$Data, trim = T, '%j')); head(a)

altitude = 259.38
Patm = 101.3*((293-0.0065*altitude)/293)**5.26
gama = 0.665*(10**-3)*Patm
latitude = -7.53
corr = pi/180
decl = 23.45*sin(corr*((a$DiaJuliano-80)*360/365)); decl
hn = 1/corr*acos(-tan(corr*lat)*tan(corr*decl))
a$N = 2*hn/15
s = (1+0.033*cos(a$DiaJuliano*360/365))
t = corr*hn*sin(corr*lat)*sin(corr*decl)
u = cos(corr*lat)*cos(corr*decl)*sin(corr*hn)
a$Qo = 37.6*s*(t+u)
head(a)
x = 0.25
b = 0.50
n.est = (a$RS/a$Qo-x)*a$N/b; n.est
a$n<- ifelse((n.est)<0,1, n.est); head(a)
a$n.N = a$n/a$N; head(a)
r = 0.23

a$Tmed = (a$Tmax+a$Tmin)/2; head(a)
a$esMax = 0.6100*exp((17.3*a$Tmax)/(237.3+a$Tmax))
a$esMin = 0.6100*exp((17.3*a$Tmin)/(237.3+a$Tmin))
a$esMed = (a$esMax+a$esMin)/2
a$ea = (a$esMed*a$UR)/100
a$DPV = a$esMed-a$ea
a$Delta = (4098*a$esMed)/(a$Tmed+237.3)**2
a$BOC = a$RS*(1-r)
a$BOL = -(0.903*(10**-9)*((a$Tmed+273)**4)*(0.34-0.14*(sqrt(a$ea)))*(0.1+(0.9*a$n.N)))
a$Rn = (a$BOC+a$BOL)
a$ETP.Penman = ((0.408*a$Delta*a$Rn)+(gama*(900/(a$Tmed+273))*a$Vel*a$DPV))/(a$Delta+(gama*(1+0.34*a$u2)))
#View(a)

a$W = ifelse(a$Tmed<16,(0.407+0.0145*a$Tmed),(0.483+0.01*a$Tmed))
a$ETP.Priestley = (1.26*a$W*a$Rn)/2.45

plot(a$ETP.Penman,a$ETP.Priestley)

write.table(a, "ETP.txt") 

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP

Em 28 de abril de 2016 14:51, Éder Comunello <comunello.eder@gmail.com> escreveu:
Yuri, boa tarde!

Você deve editar as constantes conforme os dados disponíveis e fórmula utilizada.

Penman-Monteith diário utilizando "Rs":
# ET.PenmanMonteith(data, constants, ts="daily", solar="data", wind="yes", crop="short", ...)
labels <- c("Elev", "lambda", "lat_rad", "Gsc", "z", "sigma", "G")


Penman-Monteith diário utilizando "n":
# ET.PenmanMonteith(data, constants, ts="daily", solar="sunshine hours", wind="yes", crop="short", ...)
labels <- c("Elev", "lambda", "lat_rad", "Gsc", "z", "sigma", "G", "as", "bs")


Priestley-Taylor diário utilizando "Rs":
# ET.PriestleyTaylor(data, constants, ts="daily", solar="data", alpha=0.23, ...)
labels <- c("Elev", "lambda", "lat_rad", "Gsc", "sigma", "G", "alphaPT")


Priestley-Taylor diário utilizando "n":
# ET.PriestleyTaylor(data, constants, ts="daily", solar="sunshine hours", alpha=0.23, ...)
labels <- c("Elev", "lambda", "lat_rad", "Gsc", "sigma", "G", "alphaPT", "as", "bs")


No caso de comparar resultados atente para diferenças de padrão das fórmulas para crop="short" (FAO-56) ou crop="tall" (ASCE-EWRI).

Você pode avaliar diretamente as fórmulas empregadas no pacote! Se você digitar a função sem estar seguida de parênteses, terá acesso ao código utilizado e poderá comparar com teu script:

> ET.PenmanMonteith
# function (data, constants, ts = "daily", solar = "sunshine hours",
#           wind = "yes", crop = "short", ...)
# {
#   if (is.null(data$Tmax) | is.null(data$Tmin)) {
#     stop("Required data missing for 'Tmax.daily' and 'Tmin.daily', or 'Temp.subdaily'")
#   }
#   if (is.null(data$RHmax) | is.null(data$RHmin)) {
#     stop("Required data missing for 'RHmax.daily' and 'RHmin.daily', or 'RH.subdaily'")
#   }
# ...


================================================
Éder Comunello
Agronomist (UEM), MSc in Environ. Sciences (UEM)
DSc in Agricultural Systems Engineering (USP/Esalq)
Brazilian Agricultural Research Corporation (Embrapa)
Dourados, MS, Brazil |<O>|
================================================
GEO, -22.2752, -54.8182, 408m
UTC-04:00 / DST: UTC-03:00




Em 28 de abril de 2016 13:19, Yury Duarte <yurynepomuceno@gmail.com> escreveu:
Obrigado, Éder!!

De fato, não consegui entender a necessidade de informar todas essas constantes que vc abordou no código quando li o "help" do pacote.
Irei rodar seus comandos e acertarei as constantes segundo minhas situações.
Estou finalizando a programação das fórmulas de PriestleyTaylor e PenmanMonteith para comparar com as saídas das evapo fornecidas pelo pacote. Assim que tiver os scripts prontos os enviarei nessa mesma conversa!

Abs

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP

Em 28 de abril de 2016 12:18, Éder Comunello <comunello.eder@gmail.com> escreveu:
Yuri, bom dia!

Esse pacote é um pouco melindroso quanto ao formato de entrada dos dados e muita coisa não está documentada.

O objeto de entrada deve ser uma lista, iniciando com Date e J (data e dia juliano), sendo seguida pelas variáveis climáticas (na classe {zoo}).

O script tá rodando a partir dos seus dados de exemplo, mas você tem que utilizar as constantes adequadas pro seu caso.

### <code r>
rm(list=ls())
require(Evapotranspiration)

# URL <- "http://r-br.2285057.n4.nabble.com/attachment/4666053/0/a.txt"

setwd("~/LAB/LEARN") ### Alterar!
df <- read.table("a.txt", sep=";", head=T, as.is=T)
df$Data <- as.Date(df$Data)

climate <- lapply(as.list(df)[2:7], zoo, df$Data)
J       <- as.numeric(format(df$Data, "%j"))
data    <- c(list(Date.daily=df$Data, J=J), climate)

names(data)
# [1] "Date.daily" "J"          "Rs"         "Tmax"       "Tmin"       "RHmax"      "u2"         "RHmin"    
str(data)

# Editar adequadamente as constantes utilizadas!!!
# As constantes a serem utilizadas variam com a formulação escolhida... Ver ajuda...
# ?ET.PenmanMonteith
# ?ET.PristleyTaylor
# pi/180*-23.45 # [1] -0.4092797
myConst <- list(lambda = 2.45, sigma = 4.903e-09, Gsc = 0.082,
                          lat = -23.45, lat_rad = -0.40928, as = 0.25,
                          bs = 0.55, Elev = 480, z = 2, Roua = 1.2, Ca = 0.001013, G = 0,
                          alphaA = 0.14, alphaPT = 1.26, ap = 2.4, fz = 28, b0 = 1,
                          a_0 = 11.9, b_0 = -0.15, c_0 = -0.25, d_0 = -0.0107, e0 = 0.81917,
                          e1 = -0.0040922, e2 = 1.0705, e3 = 0.065649, e4 = -0.0059684,
                          e5 = -0.0005967, gammaps = 0.66, epsilonMo = 0.92, PA = 285.8,
                          alphaMo = 17.27, betaMo = 237.3, sigmaMo = 5.67e-08, lambdaMo = 28.5,
                          b1 = 14, b2 = 1.2)

res1 <- ET.PenmanMonteith(data,  myConst, ts="daily", solar="data", wind="yes", crop = "short")
res2 <- ET.PriestleyTaylor(data, myConst, ts="daily", solar="data", alpha=.23)

res <- cbind(PM=res1$ET.Daily, PT=res2$ET.Daily)
head(res)
fit <- lm(res$PM~res$PT-1); summary(fit)
plot(res$PM~res$PT); abline(fit, col=2); abline(a=0, b=1, col=3, lty=2) # 1:1
### </code>


================================================
Éder Comunello
Agronomist (UEM), MSc in Environ. Sciences (UEM)
DSc in Agricultural Systems Engineering (USP/Esalq)
Brazilian Agricultural Research Corporation (Embrapa)
Dourados, MS, Brazil |<O>|
================================================
GEO, -22.2752, -54.8182, 408m
UTC-04:00 / DST: UTC-03:00




Em 27 de abril de 2016 18:09, Jônatan <jdtatsch@gmail.com> escreveu:
Qual erro? Qual os parâmetros usados no comando? 
Exponha um exemplo reproduzível.

2016-04-27 15:02 GMT-03:00 Yury Duarte <yurynepomuceno@gmail.com>:
Boa tarde colegas programadores!

Estou com algumas dificuldades em rodar o comando "ET.PenmanMonteith" do pacote "Evapotranspiration". Minha intenção é de calcular a evapotranspiração potencial para a escala diária. Segundo o pacote, as variáveis exigidas são:
Tmax; Tmin; RHmax; RHmin; Rs e u2.
Todas as variáveis exigidas pelo pacote estão compreendidas no meu arquivo de entrada (que segue em anexo), entretanto o comando segue dando erro.
Caso alguém seja familiar com o pacote e/ou com o comando e puder me dar uma luz, seria de muita ajuda!

Desde já agradeço pela colaboração de todos!

Abraços
Yury Duarte
Engenheiro Agrônomo - ESALQ/USP

_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.



--
###############################################################
##  Jônatan Dupont Tatsch
##  Professor do Departamento de Física
##  Coordenador Substituto do Programa de Pós-Graduação em Meteorologia (PPGMET)
##  Centro de Ciências Exatas e Naturais (CCNE)
##  Universidade Federal de Santa Maria - UFSM
##  Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil - 97105-900
##  Telefone: +55(55)33012083
###############################################################

_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.


_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.