Eu estou tentando montar um programa de troca de calor com um reservatório. Dentro de uma janela de tempo de 63 minutos, se uma dada combinação é maior ou igual a 3, então o reservatório é aberto e recebe uma quantidade de calor. Ele é fechado se essa combinação atinge 0.5, ou se ela atinge um valor que é igual a de abertura mais 2, ou se atinge o limite de tempo, 63 minutos.
Como é possível ver abaixo, a operação fecha duas vezes, abre e fecha no mesmo instante( então ele não esta mudando o j para que feche com o valor de abertura +2) e ainda está usando o tempo limite sem precisar.
O resultado era para ser uma abertura no instante 17, um encerramento no 44, uma abertura no instante 45 e um encerramento por tempo no instante 63 já que ele não atinge 6.0176641+2 ou 0.5).
Eu sei que que o erro está nas posições dos laços mas já mexi de várias formas e nada. Alguém saberia me dizer onde estou errando?
vF18
[1] -0.3121193 -0.3121193 -0.3121193 -0.3121193 -2.0091919 -0.3121193 -0.3121193 -0.3121193
[9] -0.3121193 -0.3121193 -0.3121193 -0.3121193 -0.3121193 -0.3121193 -2.0091919 1.0156736
[17] 3.6570085 1.0599739 1.0599739 1.0599739 3.7013087 3.7013087 4.1291396 1.5321050
[25] 2.4320670 1.5321050 1.5321050 2.9041981 2.4763673 3.8041601 3.3763293 3.3763293
[33] 3.8484604 5.5455330 2.9484984 3.8484604 3.8484604 3.8484604 4.3205915 2.6235189
[41] 3.8927606 1.2957260 3.4206295 8.6146987 6.0176641 6.4454950 6.4454950 9.0425296
[49] 6.4454950 6.4454950 4.3205915 4.3205915 4.3205915 3.4649298 3.8927606 3.8927606
[57] 3.8927606 3.8927606 3.8927606 3.8927606 3.8927606 3.8927606 3.8927606
> matrizzF18<-matrix(NA,n,2)
> colnames(matrizzF18)<-c("Abre F18","Fecha F18")
> j <- 1
>
> while (j <= n) {
+ k<-1
+
+ if(abs(vF18[j])>=3 && j<63){
+ abre_F18<-5*s.F18[j]-round(c18_17)*5*s.F17[j]-round(c18_19)*5*s.F19[j]
+ matrizzF18[j,1]<-abre_F18
+ while (abs(vF18[j + k])>0.5 && j+k<63) {
+
+ if(abs(vF18[j + k])>abs(vF18[j])+2){
+ fecha_F18<--5*s.F18[j+k]+round(c18_17)*5*s.F17[j+k]+round(c18_19)*5*s.F19[j+k]
+ matrizzF18[j + k,2]<-fecha_F18
+
+ k<-k+1
+ break
+ }
+ else k <- k + 1 }
+
+ fecha_F18<--5*s.F18[j+k]+round(c18_17)*5*s.F17[j+k]+round(c18_19)*5*s.F19[j+k]
+ matrizzF18[j + k,2]<-fecha_F18
+ }
+
+ j=j+k
+ }
> print(matrizzF18)
Abre F18 Fecha F18
[1,] NA NA
[2,] NA NA
[3,] NA NA
[4,] NA NA
[5,] NA NA
[6,] NA NA
[7,] NA NA
[8,] NA NA
[9,] NA NA
[10,] NA NA
[11,] NA NA
[12,] NA NA
[13,] NA NA
[14,] NA NA
[15,] NA NA
[16,] NA NA
[17,] 0.4 NA
[18,] NA NA
[19,] NA NA
[20,] NA NA
[21,] NA NA
[22,] NA NA
[23,] NA NA
[24,] NA NA
[25,] NA NA
[26,] NA NA
[27,] NA NA
[28,] NA NA
[29,] NA NA
[30,] NA NA
[31,] NA NA
[32,] NA NA
[33,] NA NA
[34,] NA NA
[35,] NA NA
[36,] NA NA
[37,] NA NA
[38,] NA NA
[39,] NA NA
[40,] NA NA
[41,] NA NA
[42,] NA NA
[43,] NA NA
[44,] NA -0.45
[45,] 0.4 -0.40
[46,] NA NA
[47,] NA NA
[48,] NA -0.45
[49,] 0.4 -0.40
[50,] NA NA
[51,] NA NA
[52,] NA NA
[53,] NA NA
[54,] NA NA
[55,] NA NA
[56,] NA NA
[57,] NA NA
[58,] NA NA
[59,] NA NA
[60,] NA NA
[61,] NA NA
[62,] NA NA
[63,] NA -0.35