GAD-DIMNT-CPTEC / oensMB09

Método de Perturbação baseado em EOFs para o Brazilian global Atmospheric Model - BAM
https://gad-dimnt-cptec.github.io/oensMB09/
0 stars 1 forks source link

Compilação e teste inicial do oensMN09 na EGEON #1

Closed cfbastarz closed 1 year ago

cfbastarz commented 2 years ago

Nesta tarefa, será realizado um primeiro teste para a compilação e uso do método de perturbação oensMB09 na máquina EGEON.

Serão realizadas as seguintes etapas:

cfbastarz commented 2 years ago

Configuração do ambiente de compilação (GNU)

Foram utilizandos os seguintes módulos da máquina EGEON para a compilação com o GNU (seguindo as orientações dadas pelos Denis):

Currently Loaded Modules:
  1) gnu9/9.4.0   3) openmpi4/4.1.1   5) netcdf-fortran/4.5.3   7) hwloc/2.5.0
  2) ucx/1.11.2   4) netcdf/4.7.4     6) phdf5/1.10.8           8) libfabric/1.13.0

Aparentemente, a máquina não possui o alias ftn para o compilador em uso. Os arquivos Makefile do oensMB09, definem o nome do compilador como ftn. Foram alterados os arquivos Makefile a seguir para a utilização do alias mpif90:

Para não quebrar a compatibilidade desses arquivos Makefile com as máquinas Cray XE6 e o Cray XC50, serão desenvolvidos Makefiles extras para uso com a máquina EGEON.

cfbastarz commented 2 years ago

Testes com o script de configuração

Foi testado o script config_spcon.sh para a compilação das etapas do método de perturbação e dos produtos (incluindo a w3lib). O script foi modificado para indentificar o host em que está sendo executado e fazer as alterações necessárias nos arquivos config/Makefile.conf.[cray,pgi,gnu], pois na máquina EGEON é utilizado o alias mpif90 ao invés do ftn. Estas alterações estão no commit 2c513b052e2922cf155d122972b7f1002e653ebf.

cfbastarz commented 2 years ago

Compilação do código do método de perturbação

A princípio não foi necessário realizar nenhum alteração nos códigos fonte para a compilação. Foram apenas alterados o alias do compilador (de ftn para mpif90) e ajustados os scripts e arquivos Makefiles que realizam a compilação.

cfbastarz commented 2 years ago

Compilação do modelo BAM_V1.2.1 (pre/model/pos)

Até a data de escrita desta atualização da tarefa, não há instruções oficiais de compilação do modelo BAM na Egeon. O modelo utilizado para os testes com o método de perturbação MB09, é o BAM_V1.2.1 (o que equivale à release SPCON_V2.1.0). A compilação e a execução do modelo são necessárias pois fazem parte do método de perturbação. Ficam aqui registrados os procedimentos provisórios para a compilação do modelo BAM_V1.2.1 na Egeon com o GNU (pre e pos compilado com o GNU 9.4.0 e o model compilado com o GNU 4.8.5 a partir de um container com essa versão do compilador GNU - arquivo /mnt/beegfs/carlos.bastarz/containers/ubuntu_remix_latest-gcc_4.8.5.sif).

Ajuste dos Makefile

Para a compilação do pre, model e pos, foi aproveitado o arquivo Makefile.linux_gnu, com a seguinte modificação:

FC = mpif90

O compilador utilizado é o mpif90 porque o wrapper do ftn não existe na máquina. Este arquivo com a modificação, foi renomeado para Makefile.linux_gnu_egeon para o pre e o pos. Para o model, foi removida a opção -static para a compilação, além de adicionar a opção -ffree-line-length-none.

Compilação do pre

Para compilar o pre, é necessário compilar a libbacio. Para isso, foi necessário modificar o script makebacio_cray_gnu.sh, incluindo as instruções a seguir:

gnu)
  export FCMP=${1:-mpif90}
  export CCMP=${2:-cc}
  flagOpt="-O0"
  flag64bit=""

Este script foi renomeado para makebacio_cray_gnu-carlos.sh e foi utilizado para a compilação. É importante notar que este script não é utilizado pelo arquivo Makefile.linux_gnu_egeon e que a compilação do pre, deve ser feita sem a opção clean, como em:

make linux_gnu_egeon

Ambiente de compilação para o pre e pos

Currently Loaded Modules:
  1) gnu9/9.4.0   3) openmpi4/4.1.1   5) netcdf-fortran/4.5.3   7) hwloc/2.5.0
  2) ucx/1.11.2   4) netcdf/4.7.4     6) phdf5/1.10.8           8) libfabric/1.13.0

Compilação do pos

Basta compilar normalmente com o comando:

make clean linux_gnu_egeon

Compilação do model

O model foi compilado com uma versão mais antiga do GNU na EGEON e foi utilizado o container ubuntu_remix_latest-gcc_4.8.5.sif. Isso foi feito porque com a versão do GNU (9.4.0) da EGEON, a compilação apresenta problemas e para apenas testar o método de perturbação do oensMB09, foi suficiente aproximar o ambiente de compilação utilizado na Tupã (o qual é fornecido pelo container, GNU 4.8.5).

Para compilar:

module load singularity
singularity shell -e --bind /mnt/beegfs/carlos.bastarz:/mnt/beegfs/carlos.bastarz ubuntu_remix_latest-gcc_4.8.5.sif
cd BAM_V1.2.1/model/source
make clean linux_gnu_egeon

Execução

Com a compilação do pre, model e pos, para a realização desses processos, foi necessário adaptar os scripts de submissão para as diretivas do SLURM. Para o pre, foi necessário adptar o script runPre e com isso, foi possível gerar todas as condições iniciais e de contorno do modelo. O model, entretanto, apresentou algumas dificuldades. Como a compilação foi feita a partir do container, então a sua execução também precisa ser feita a partir do container. Foi modificado o comando de execução do modelo para utilizar o singularity, mas a Egeon ainda não está completamente configurada (informação do Luiz Flávio). Foi enviado um email para o Diego para verificar isso.

cfbastarz commented 2 years ago

Atualização dos scripts de submissão para o SLURM

O script runPre do modelo BAM cria scripts de submissão para cada processo a ser realizado na máquina. Um exemplo da comparação entre o mesmo script (serial) com diretivas PBSPro (comentadas) e Slurm:

#!/bin/bash
#SBATCH --output=/mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/Out.MPI1_VarTopo
#SBATCH --error=/mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/Err.MPI1_VarTopo
#SBATCH --time=00:30:00
#SBATCH --tasks-per-node=1
#SBATCH --nodes=1
#SBATCH --job-name=VarTop
#SBATCH --partition=batch

####!/bin/bash
####PBS -o headnode.egeon.cptec.inpe.br:/mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/Out.MPI1_VarTopo
####PBS -j oe
####PBS -l walltime=00:30:00
####PBS -A CPTEC
####PBS -l mppwidth=1
####PBS -l mppnppn=1
####PBS -V
####PBS -S /bin/bash
####PBS -N VarTop
####PBS -q pesq.q

auxvarname=VarTopo

# EGEON GNU
module purge
module load gnu9/9.4.0
module load ucx/1.11.2
module load openmpi4/4.1.1
module load netcdf/4.7.4
module load netcdf-fortran/4.5.3
module load phdf5/1.10.8
module load hwloc
module load libfabric/1.13.0

if [[ (${auxvarname} = "Chopping_parallel") ]]
then
#  .  /opt/modules/default/etc/modules.sh
#  module load stat
#  module list
  export PBS_SERVER=headnode
else
  export PBS_SERVER=headnode
fi

if [[ (Linux = "Linux") || (Linux = "linux") ]]
then
  export F_UFMTENDIAN=10,20,30,40
fi

export KMP_STACKSIZE=128m

if [[ (${auxvarname} = "FLUXCO2Clima") ]]
then
  ulimit -s 65532
else
  ulimit -s unlimited
fi

cd /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec

date

optserver=hea

if [[ (${optserver} = "aux") ]]
then
  /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo -i /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo.nml
else
#  time aprun -n 1 -N 1 /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo -i /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo.nml
  time mpirun -n 1 -N 1 /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo -i /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo.nml
fi

date

echo "" > /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/.VarTopo.ok

Com essas alterações foi possível realizar o pre. Ainda é necessário adaptar os scripts runModel, runPos e todos os demais scripts do método de perturbação e produdos do SPCON.

cfbastarz commented 2 years ago

BAM_V1.2.1

Adicionado o código do modelo BAM V1.2.1 para teste do oensMB09 na Egeon: https://github.com/GAD-DIMNT-CPTEC/cfbastarz/tree/main/BAM_V1.2.1

Notas

cfbastarz commented 2 years ago

Containers

Foram adicionados dois arquivos de definição do singularity para construir um container com o modelo compilado. Estes arquivos (BAM_V1.2.0.def e BAM_V1.2.1.def) foram adicionados ao repositório https://github.com/GAD-DIMNT-CPTEC/Containers.

Embora estes dois containers sejam compilados com sucesso na Egeon, ainda não foi possível executar o modelo, sendo que o seguinte erro é persistente:

Comando dentro do script de submissão:

singularity exec -e --bind /mnt/beegfs/carlos.bastarz:/mnt/beegfs/carlos.bastarz /mnt/beegfs/carlos.bastarz/containers/BAM_V1.2.0.sif mpirun -np 24 /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/exec_SMT2020021700/ParModel_MPI > /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/exec_SMT2020021700/setout/Print.model.2020021700.2020021900.1656361768.MPI24.out 2>&1

Resultado:

more Print.model.2020021700.2020021900.1656361768.MPI24.out 
**(CreateParallelism)** Process 0 (n10) among 24 processes with 1 threads is alive
**(InitVerSizes)** Model sigma levels
  k       si(k)       ci(k)       sl(k)       cl(k)      del(k)    delcl(k)
  1  1.00000000  0.00000000         NaN         NaN  0.00000000         NaN
  2  1.00000000  0.00000000         NaN         NaN  **********         NaN
  3  **********  **********         NaN         NaN  **********         NaN
  4  1.00000000  0.00000000         NaN         NaN  **********         NaN
  5  **********  **********         NaN         NaN  **********         NaN
  6  **********  **********         NaN         NaN  **********         NaN
  7  1.00000000  0.00000000         NaN         NaN  **********         NaN
  8  **********  **********         NaN         NaN  **********         NaN
  9  **********  **********         NaN         NaN  **********         NaN
 10  **********  **********         NaN         NaN  -.00005155         NaN
 11  **********  **********         NaN         NaN  -.00000000         NaN
 12  **********  **********         NaN         NaN  **********         NaN
 13  **********  **********         NaN         NaN  **********         NaN
 14  **********  **********         NaN         NaN  **********         NaN
 15  **********  **********         NaN         NaN  -.00000000         NaN
 16  **********  **********         NaN         NaN  **********         NaN
 17  **********  **********         NaN         NaN  **********         NaN
 18  1.00000000  0.00000000  **********  **********  **********  **********
 19  **********  **********  **********  **********  **********  0.00000000
 20  **********  **********  **********  **********  **********         NaN
 21  **********  **********         NaN         NaN  0.00000000         NaN
 22  **********  **********         NaN         NaN  **********         NaN
 23  **********  **********         NaN         NaN  **********         NaN
 24  **********  **********         NaN         NaN  **********         NaN
 25  **********  **********         NaN         NaN  -.04095195         NaN
 26  **********  **********         NaN         NaN  0.04095195         NaN
 27  **********  **********         NaN         NaN  -.00000000         NaN
 28  **********  **********  **********  **********  0.00000000
 29  0.00000000  1.00000000
**(setsst)*********************************************************
**(setsst)*** NMSST changed from weekly running mean (sstwkl) to    *
**(setsst)*** climatology (sstaoi), since sstwkl are unavailable  *
**(setsst)*** for the last 15 days                                *
**(setsst)*********************************************************
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 7
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 0
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 2
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 5
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 16
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 17
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 18
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 21
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 22
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 6
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 20
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 11
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 8
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 9
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 12
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 19
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 3
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 1
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 10
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 13
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 14
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 15
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 23
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 4
cfbastarz commented 2 years ago

Adicionando a opção -fconvert='big-endian ao arquivo Makefile.linux_gnu_egeon do model do BAM_V1.2.1 para a compilação com o singularity na Egeon, revolve o problema reportado na última atualização dessa issue. Para os arquivos de definição dos containers BAM_V1.2.0.def e BAM_V1.2.1.def, deverá ser consertado o referido arquivo Makefile.

cfbastarz commented 2 years ago

Atualização dos scripts de submissão para o SLURM

A atualização dos scripts do PBS para o SLURM, como já foram registrado, é simples e não requereu muitas modificações. Para as submissões que utilizam array, foram feitas as seguintes modificações (exemplo):

#PBS -o ${DK_suite}/deceof/output/setdeceof${2}${RESOL}${LABELI}.${MAQUI}.${RUNTM}.out
#PBS -e ${DK_suite}/deceof/output/setdeceof${2}${RESOL}${LABELI}.${MAQUI}.${RUNTM}.err
#PBS -l walltime=0:15:00
#PBS -l mppnppn=1
#PBS -A CPTEC
#PBS -V
#PBS -S /bin/bash
#PBS -J 1-${NUMPERT}
#PBS -N  DECEOF
#PBS -q ${AUX_QUEUE}

para

#SBATCH --output=${DK_suite}/deceof/output/setdeceof${2}${RESOL}${LABELI}.${MAQUI}.${RUNTM}.out
#SBATCH --error=${DK_suite}/deceof/output/setdeceof${2}${RESOL}${LABELI}.${MAQUI}.${RUNTM}.err
#SBATCH --time=${AUX_WALLTIME}
#SBATCH --tasks-per-node=1
#SBATCH --nodes=1
#SBATCH --job-name=DECEOF
#SBATCH --partition=${AUX_QUEUE}
#SBATCH --array=1-${NUMPERT}

Os trechos de código que utilizam a variável de ambiente PBS_ARRAY_INDEX foram atualizadas para utilizar a variável equivalente do SLURM, SLURM_ARRAY_TASK_ID. Exemplo de utilização destas variáveis para a atribuição do número do membro do conjunto de acordo com o índice do array:

export NUM=\$(printf %02g \${PBS_ARRAY_INDEX})

para

export NUM=\$(printf %02g \${SLURM_ARRAY_TASK_ID})

E a execução:

aprun -n ${MPPWIDTH} -N ${MPPNPPN} -d ${MPPDEPTH} -ss \${EXECFILEPATH}/ParModel_MPI < \${EXECFILEPATH}/MODELIN > \${EXECFILEPATH}/setout/Print.model.${LABELI}.MPI${MPPWIDTH}.log

para

singularity exec -e --bind /mnt/beegfs/carlos.bastarz:/mnt/beegfs/carlos.bastarz /mnt/beegfs/carlos.bastarz/containers/egeon_dev.sif mpirun -np ${MPPWIDTH} \${EXECFILEPATH}/ParModel_MPI < \${EXECFILEPATH}/MODELIN > \${EXECFILEPATH}/setout/Print.model.${LABELI}.MPI${MPPWIDTH}.log
cfbastarz commented 2 years ago

Realização das etapas do método de perturbação a partir de uma análise do NCEP

Com a atualização dos scripts para o SLURM, foi possível testar também a submissão dos processos do método de perturbação, incluindo o modelo BAM_V1.2.1. Todas as submissões estão sendo feitas utilizando um container singularity com o GCC 4.8.5 e o mpich 3.3 (compilado dentro do container). Os códigos do modelo e do método de perturbação foram compilados e foram testados utilizando o container.

Para submeter um processo utilizando um script SLURM e o container, em um processo serial:

singularity exec -e --bind /mnt/beegfs/carlos.bastarz:/mnt/beegfs/carlos.bastarz /mnt/beegfs/carlos.bastarz/containers/egeon_dev.sif mpirun -np 1 \${HOME_suite}/deceof/bin/\${TRUNC}\${LEV}/deceof.\${TRUNC}\${LEV} < \${HOME_suite}/deceof/datain/deceof\${NUM}.nml > \${HOME_suite}/deceof/output/deceof.\${NUM}.${LABELI}.\${HOUR}.\${TRUNC}\${LEV}

Ainda é necessário ajustar algumas variáveis de ambiente para a execução do modelo, mas, a princípio, tudo está funcionando.

cfbastarz commented 2 years ago

Após a execução do pós-processamento do BAM_V1.2.1 na Egeon (a partir do container), notou-se que alguns arquivos .ctl não foram gerados corretamente:

(base) [/mnt/beegfs/carlos.bastarz/oensMB09/pos/dataout/TQ0126L028/2020021700/NMC]
carlos.bastarz@headnode 15:54 $ more GPOSNMC20200217002020030100P.fct.TQ0126L028.ctl

E AT 2-M FROM SURFACE         (K               )
Q02M    0  199,    1,    0  ** sfc    SPECIFIC HUMIDITY AT 2-M FROM SURFACE   (KG/KG           )
U10M    0  130,  105,   10  ** sfc10m 10 METRE U-WIND COMPONENT               (M/S             )
V10M    0  131,  105,   10  ** sfc10m 10 METRE V-WIND COMPONENT               (M/S             )
STTM    0  251,    1,    0  ** sfc    TIME MEAN SURFACE TEMPERATURE           (K               )
PREC    0   61,    1,    0  ** sfc    TOTAL PRECIPITATION                     (KG/M2/DAY       )
PRCV    0   63,    1,    0  ** sfc    CONVECTIVE PRECIPITATION                (KG/M2/DAY       )
CSSF    0  122,    1,    0  ** sfc    SENSIBLE HEAT FLUX FROM SURFACE         (W/M2            )
CLSF    0  121,    1,    0  ** sfc    LATENT HEAT FLUX FROM SURFACE           (W/M2            )
USST    0  193,    1,    0  ** sfc    SURFACE ZONAL WIND STRESS               (PA              )
VSST    0  195,    1,    0  ** sfc    SURFACE MERIDIONAL WIND STRESS          (PA              )
CBNV    0   71,    3,    0  ** cltlay CLOUD COVER                             (0-1             )
OLIS    0  207,    1,    0  ** sfc    DOWNWARD LONG WAVE AT BOTTOM            (W/M2            )
OLES    0  211,    1,    0  ** sfc    UPWARD LONG WAVE AT BOTTOM              (W/M2            )
ROLE    0  114,    8,    0  ** toa    OUTGOING LONG WAVE AT TOP               (W/M2            )
OCIS    0  209,    1,    0  ** sfc    DOWNWARD SHORT WAVE AT GROUND           (W/M2            )
OCES    0  212,    1,    0  ** sfc    UPWARD SHORT WAVE AT GROUND             (W/M2            )
ROCE    0  214,    8,    0  ** toa    UPWARD SHORT WAVE AT TOP                (W/M2            )
OCAS    0  111,    1,    0  ** sfc    SHORT WAVE ABSORBED AT GROUND           (W/M2            )
TGSC    0  191,    1,    0  ** sfc    GROUND/SURFACE COVER TEMPERATURE        (K               )
w010    0  167,  105,   10  ** sfc10m SPEED WIND AT 10-M FROM SURFACE         (M/S             )
TOZN    0   10,    1,    0  ** sfc    VERTICALLY INTEGRATED OZONE CONTENT     (DOBSON          )
CAPE    0  140,  200,    0  ** atm    CONVECTIVE AVAIL. POT.ENERGY            (M2/S2           )
CINE    0  141,  200,    0  ** atm    CONVECTIVE INHIB. ENERGY                (M2/S2           )
SWET    0  154,    1,    0  ** sfc    SEVERE WEATHER THREAT                   (                )
w050    0  168,  105,   50  ** sfc50m SPEED WIND AT 50-M FROM SURFACE LAYER   (M/S             )
w100    0  169,  105,  100  ** sfc100mSPEED WIND AT 100-M FROM SURFACE LAYER  (M/S             )
d010    0  170,  105,   10  ** sfc10m DIR WIND AT 10-M FROM SURFACE LAYER     (DEGREES         )
d050    0  171,  105,   50  ** sfc50m DIR WIND AT 50-M FROM SURFACE LAYER     (DEGREES         )
d100    0  172,  105,  100  ** sfc100mDIR WIND AT 100-M FROM SURFACE LAYER    (DEGREES         )
endvars

Aparentemente, o problema ocorre de forma aleatória e deverá ser tratado em uma issue separada.

cfbastarz commented 1 year ago

Há um problema com o pós-processamento, em que muitos arquivos CTL são partialmente escritos. Apesar disso, os arquivos GRIB estão corretos, pois utilizando o script grib2ctl.pl, os arquivos CTL são escritos corretamente. Será necessário invertigar se isso é devido à compilação do código dentro do container ou não, o que poderá ser verificado utilizando-se o executável compilado nativamente na Egeon.

cfbastarz commented 1 year ago

Realizando a compilação do código do pós-processamento com o GNU na Egeon, o problema com a geração dos arquivos CTL persiste.

cfbastarz commented 1 year ago

Compilando o código do pós-processamento com o compilador Intel na máquina Egeon, resolveu o problema com a criação dos arquivos CTL. Aparentemente, o problema está com o compilador GNU na máquina. Para compilar o código, foi utilizado o arquivo Makefile que o @JAAravequia criou para testar a suíte de assimilação de dados na máquina (https://projetos.cptec.inpe.br/projects/bam/repository/entry/tag/BAM_V2.2.1/pos/source/makefiles/Makefile.intel_egeon). Porém, foi necessário fazer os seguintes ajustes para a minha situação (específico):

cfbastarz commented 1 year ago

Fechando esta issue.