
Boa tarde colegas programadores, como vão? Estou tendo alguma dificuldade em acertar o script para executar o calculo do balanço hídrico de Thornthwaite & Mather, mas para uma escala diária. Tenho essas condições que deve ser obedecida para execução dos cálculos: - Se P - ETP < 0: NAc = (P - ETP) + NAc[i-1] ARM = CAD * exp(NAc/CAD) - Se P - ETP >= 0: ARM = (P - ETP) + ARM[i-1] NAc = CAD * Ln(ARM/CAD) - ARM <= CAD Utilizei o comando for e o if else para estabelecer as condições e calcular cada variável para cada dia do período analisado. Entretanto, o script não está calculando as variáveis e retorna os vetores vazios. Segue o script no corpo do email e os dados de entrada em anexo. Agradeço de antemão a ajuda de todos! Abs #----------Remover Objetos----------# rm(list = ls()) #----------Selecionar arquivo de interesse----------# a = read.table("x.txt", sep = "\t", header = T); head(a) #----------Iniciar o BH----------# a$P.ETP = a$RAIN-a$ETP.Penman cad = 100 a$NAc = NA a$ARMi = NA a$ARMf = NA a$ALT = NA a$ETR = NA a$DEF = NA a$EXC = NA head(a) a$NAc[1] = 0 a$ARMi[1] = cad a$ARMf[1] = cad a$ALT[1] = 0 for(i in 2:length(a[,1])){ if(a$P.ETP[i]<0){ (a$NAc[i] = a$P.ETP[i]+a$NAc[i-1]) a$ARMi[i] = (cad*exp(-1*((abs(a$NAc[i]))/cad))) }else{ a$ARMf[i] = ifelse(a$ARMi[i] > cad, cad, a$ARMi[i]) a$ARMi[i] = a$ARMf[i-1]+a$P.ETP[i] a$NAc[i] = cad*log((a$ARMf[i])/cad) } a$ALT[i] = a$ARMf[i] - a$ARMf[i-1] a$ETR[i] = if(a$P.ETP[i]<0){a$RAIN[i]+abs(a$ALT[i])} else{a$ETP.Penman[i]} a$DEF[i] = a$ETP.Penman[i] - a$ETR[i] a$EXC[i] = a$ARMi[i] - a$ARMf[i] } View(a) Yury Duarte Engenheiro Agrônomo - ESALQ/USP