Closed cfbastarz closed 1 year ago
No push b22c2a2d44841e3824b43e0f8acdec5bd901b847, foram inseridas as seguintes modificações na rotina scan_bstatistic.f90
:
Essa modificação converte os valores das variáveis scantec%atime
ou scantec%ftime
(valores inteiros referentes às datas de análise ou previsão) para strings, as quais são utilizadas para gerar uma nova string utilizada como data de referência dentro do arquivo CTL do GrADS. Nessa mesma rotina, a nova data formata é utilizada na escrita da diretiva tdef
dos arquivos CTL escritos. Exemplo:
Dessa forma, os arquivos CTL apresentam a data de referência correta, de acordo com os valores das variáveis scantec%atime
ou scantec%ftime
(atribuídas através das variáveis Starting Time
ou Ending Time
do namelist do SCANTEC). Apesar disso surge um problema prático quanto ao uso da opção Time Step Type
(backward ou forward): quando Time Step Type: forward
, pela lógica, a data de referência é a data da análise (atime
) e os arquivos de previsão utilizados na avaliação, partem dessa data de referência. Por exemplo:
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
! Running scantec !
! Please wait while the system is performing the statistics !
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
Analisys Forecast fct
2020061000 2020061000 00h
2020061000 2020061100 24h
2020061000 2020061200 48h
2020061100 2020061100 00h
2020061100 2020061200 24h
2020061100 2020061300 48h
Por outro lado, quando a opção Time Step Type: backward
(situação próxima à operacional, quando os modelos são avaliados "para trás"), pela lógica, a data de referência é a data de previsão (ftime
) e os arquivos de previsão utilizados na avaliação, são a referência. Por exemplo:
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
! Running scantec !
! Please wait while the system is performing the statistics !
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
Analisys Forecast fct
2020061000 2020061000 00h
2020060900 2020061000 24h
2020060800 2020061000 48h
2020061100 2020061100 00h
2020061000 2020061100 24h
2020060900 2020061100 48h
Independente do ajuste da opção Time Step Type
, a diretiva tdef
do GrADS apenas incrementa das datas para frente, ou seja, as datas são sempre somadas e nunca subtraídas. Com isso, surge a dificuldade de se representar a data no arquivo CTL do GrADS quando o SCANTEC é realizado com a opção Time Step Type: backward
, pois a data de referência é a data de previsão (e as datas de análise são anteriores à essa data de referência, para as previsões de 24, 48, 72 horas etc) e, no arquivo CTL, a data inserida no arquivo CTL é a data de referência com incrementos somados (datas futuras) e não subtraídos (datas passadas). Então, considerando o exemplo de realização do SCANTEC com a opção Time Step Type: backward
, os arquivos CTLs criados possuirão a diretiva tdef
da seguinte forma:
tdef 3 linear 00Z10JUN2020 24HR
Com isso, no GrADS, t=1
será 00Z10JUN2020, t=2
será 00Z11JUN2020 e t=3
será 00Z12JUN2020 e estas datas não fazem referência aos arquivos utilizados na avaliação. Como resolver esse problema (@joaogerd e @Garcia-INPE)? O mínimo é esclarecer esse detalhe na documentação do SCANTEC.
Conversando com o @joaogerd, podemos adotar a solução proposta para inserir a data correta no arquivo CTL, mas uma solução mais adequada (e.g., ao invés de se escrever arquivos binários, escrever arquivos no formato GRIB) deverá ser proposta para uma revisão maior do código. Dessa forma, a modificação proposta, deverá ser lançada na versão 2.1.0 do SCANTEC (https://github.com/GAM-DIMNT-CPTEC/SCANTEC/milestone/7).
Realizando testes a partir da consolidação das modificações deste branch, foram identificados dois problemas:
AGO
, quando deveria ser AUG
; isso faz com que o arquivo CTL não seja aberto. Os nomes dos outros meses também devem ser revisados;Esta issue será reaberta para que esses problemas possam ser corrigidos.
O PR 3c36acc9e83200d79e79384928aeffeb6269176c corrige o nome da data do mês 8 na rotina scan_bstatistic.f90
. Sobre a discrepância entre o número de linhas da tabela e o número de tempos no arquivos CTL, como já fora discutido, isso se deve à escolha do número de time steps da análise, que no caso do testcase do modelo BAM, está como 12 ao invés de 24. Isso já havia sido discutido no escopo desta issue, mas faltou alterar o script run_scantes.sh
com esse valor.
Os arquivos binários escritos pelo SCANTEC, são acompanhados de um arquivo descritor (
.ctl
) para que possam ser abertos pelo GrADS. O @Garcia-INPE identificou que todos os arquivos.ctl
contém a mesma data na diretivatdef
. Esta data está hardwired na rotinascan_bstatistic.f90
(linhas 628, 656 e 683).Além disso, a variável
Analysis Time Step
é utilizada nessa rotina para o cálculo dotdef
(número de tempos de previsão) e, se a avaliação for feita dia a dia, essa variável - se não ajustada de forma correta, pode resultar em valores erradas detdef
.Exemplo do problema:
Considerando os seguintes parâmetros no arquivo
scantec.conf
:Fará com que o SCANTEC escreva arquivos
.ctl
com o seguinte conteúdo:Quando o correto deveria ser:
O problema ocorre porque a data
00Z05AUG2014
está hardwired na rotinascan_bstatistic.f90
e porque a conta realizada para calcular otdef
(scantec%forecast_time/scantec%atime_step)+1
) utiliza o valor deAnalisys Time Step: 12
. Nesse caso, bastaria instruir para o usuário que substitua o valor deAnalisys Time Step
por 24, mas é necessário investigar uma forma de se evitar isso.