<div dir="ltr">Boa tarde colegas programadores, como vão?<div><br></div><div>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.</div><div>Tenho essas condições que deve ser obedecida para execução dos cálculos:</div><div><ul><li>Se P - ETP < 0:<br></li></ul></div><div>NAc = (P - ETP) + NAc[i-1]<br></div><div>ARM = CAD * exp(NAc/CAD)</div><div><ul><li>Se P - ETP >= 0:</li></ul>ARM = (P - ETP) + ARM[i-1]</div><div>NAc = CAD * Ln(ARM/CAD)</div><div><br></div><div><ul><li>ARM <= CAD</li></ul><div>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.</div></div><div>Segue o script no corpo do email e os dados de entrada em anexo.</div><div>Agradeço de antemão a ajuda de todos!</div><div><br></div><div>Abs</div><div><br></div><div><div>#----------Remover Objetos----------#</div><div>rm(list = ls())</div><div><br></div><div>#----------Selecionar arquivo de interesse----------#</div><div>a = read.table("x.txt", sep = "\t", header = T); head(a)<br></div><div><br></div><div>#----------Iniciar o BH----------#</div><div>a$P.ETP = a$RAIN-a$ETP.Penman</div><div>cad = 100</div><div>a$NAc = NA</div><div>a$ARMi = NA</div><div>a$ARMf = NA</div><div>a$ALT = NA</div><div>a$ETR = NA</div><div>a$DEF = NA</div><div>a$EXC = NA</div><div>head(a)</div><div><br></div><div>a$NAc[1] = 0</div><div>a$ARMi[1] = cad</div><div>a$ARMf[1] = cad</div><div>a$ALT[1] = 0</div><div><br></div><div>for(i in 2:length(a[,1])){</div><div>      if(a$P.ETP[i]<0){ </div><div>        (a$NAc[i] = a$P.ETP[i]+a$NAc[i-1]) </div><div>        a$ARMi[i] = (cad*exp(-1*((abs(a$NAc[i]))/cad)))</div><div>    }else{</div><div>      a$ARMf[i] = ifelse(a$ARMi[i] > cad, cad, a$ARMi[i])</div><div>      a$ARMi[i] = a$ARMf[i-1]+a$P.ETP[i]</div><div>      a$NAc[i] = cad*log((a$ARMf[i])/cad)</div><div>    }</div><div>   </div><div>  a$ALT[i] = a$ARMf[i] - a$ARMf[i-1]</div><div>  a$ETR[i] = if(a$P.ETP[i]<0){a$RAIN[i]+abs(a$ALT[i])} else{a$ETP.Penman[i]} </div><div>  a$DEF[i] = a$ETP.Penman[i] - a$ETR[i]</div><div>  a$EXC[i] = a$ARMi[i] - a$ARMf[i]</div><div>  }</div><div><br></div><div>View(a)</div></div><div><br clear="all"><div><div><div dir="ltr"><div>Yury Duarte<br></div>Engenheiro Agrônomo - ESALQ/USP<br></div></div></div>
</div></div>