Resumo: Este guia explica, de ponta a ponta, como obter, configurar, compilar e executar o ciclo pré-operacional do SMNA (BAM + GSI) no Egeon.
# 0) Obter a tag estável
ssh usuario@egeon.cptec.inpe.br
cd /home/${USER}
svn export https://svn.cptec.inpe.br/smna/tag/SMNA_v3.0.1
cd SMNA_v3.0.1/SMG
# 1) Ajustar paths
nano etc/mach/egeon_paths.conf
# nome_smg SMNA_v3.0.1/SMG
# 2) Configurar (estrutura + fixos iniciais)
./config_smg.ksh configure -v -y
# 3) Compilar (sem ANGUPDATE)
./config_smg.ksh compile -v --all --no-ang
# 4) Verificar executáveis
./config_smg.ksh verify_executables -v --all --no-ang
# 5) Bootstrap do ciclo (First Guess + entradas NCEP)
./config_smg.ksh bootstrap_bg -A 2025093018 -Q batch -v
# --- Alternativamente, fazer manualmente ---
# 5a) Copiar dados atuais
./config_smg.ksh copy_ncep_input 2025093018
# 5b) Pré-processamento (uma vez por resolução)
cd cptec/bam/run
./runPre -v -t 299 -l 64 -I 2025093018 -n 0 -p SMT -s -O -T -G
# 5c) First Guess (9 h)
./runModel -das -v -np 64 -N 4 -d 8 -t 299 -l 64 -I 2025093018 -F 2025100106 -W 2025100106 -ts 3 -r -tr 6 -i 2 -p SMT -s sstwkl
cd ../../..
# --- Fim do caminho alternativo ---
# 6) Ciclo completo (exemplo)
cd run
./run_cycle.sh -t 299 -l 64 -gt 254 -p CPT -I 2025100100 -F 2025100218
# --- Alternativa: Rodar com Bias Correction (Spin-Up de 10 ciclos) ---
# Executa 10 rodadas consecutivas de GSI na mesma data inicial (2025100100),
# estabilizando os coeficientes de bias de satélite (satbias_in/out e etc.).
# Após o spin-up, o run_cycle continua normalmente até a data final.
./run_cycle.sh -t 299 -l 64 -gt 254 -p CPT -I 2025100100 -F 2025100218 -bc 10
- 1. Visão geral
- 2. Escopo e estratégia
- 3. Obtenção do sistema (SVN)
- 4. Instalação e configuração
- 5. Compilação (Intel no Egeon)
- 6. Execução: testcase e ciclo
- 7. Resultados e saídas geradas
- 8. Dicas e solução de problemas
O SMNA integra:
- BAM (Brazilian Atmospheric Model): previsão numérica
- GSI (Gridpoint Statistical Interpolation): assimilação de dados
Para o ciclo, são necessários:
- Fluxo de dados
- First guess (estimativa a priori)
- Estatísticas de erro
Plano atual: dados NCEP (fase 1), BAM com janela de 9 h, e GSI pré-operacional.
Alvo: Egeon. Scripts (config_smg.ksh, smg_setup.sh) ajustados para este ambiente.
Código-fonte do SMNA/SMG no SVN do CPTEC:
tag→ versões estáveis (usuários)trunk→ desenvolvimento principal (contribuidores)branch→ linhas de trabalho específicas
- SSH no Egeon
ssh usuario@egeon.cptec.inpe.br-
Diretório HOME
cd /home/${USER}
-
Export de uma tag (ex.:
SMNA_v3.0.1)svn export https://svn.cptec.inpe.br/smna/tag/SMNA_v3.0.1(Sem vínculo de versionamento; indicado para uso final.)
-
Listar tags
svn list https://svn.cptec.inpe.br/smna/tag/
-
Checkout do trunk (desenvolvimento)
svn co https://svn.cptec.inpe.br/smna/trunk/SMNA
-
Checkout de um branch (ex.:
SMNA_v3.0.x)svn co https://svn.cptec.inpe.br/smna/branch/SMNA_v3.0.x
- Tag (export):
/home/${USER}/SMNA_v3.0.1/SMG - Trunk (checkout):
/home/${USER}/SMNA/SMG - Branch (checkout):
/home/${USER}/SMNA_v3.0.x/SMG
| Método | Comando exemplo | Indicação de uso |
|---|---|---|
| Export (tag) | svn export https://svn.cptec.inpe.br/smna/tag/SMNA_v3.0.1 |
Usuários finais: usar versão estável, sem versionamento local. |
| Checkout (trunk) | svn co https://svn.cptec.inpe.br/smna/trunk/SMNA |
Contribuidores no desenvolvimento principal. |
| Checkout (branch) | svn co https://svn.cptec.inpe.br/smna/branch/SMNA_v3.0.x |
Trabalhar/acompanhar linha de correções. |
Nota importante
- Usuários: prefira tags (export).
- Devs: use checkout (trunk/branch).
- Este guia usa a tag
SMNA_v3.0.1como referência principal.
Entre na pasta do SMG e edite egeon_paths.conf:
cd /home/${USER}/<NOME_SMNA>/SMG
nano etc/mach/egeon_paths.confAjuste nome_smg conforme o diretório baixado:
# Exemplo 1:
nome_smg SMNA_v3.0.1/SMG
# Exemplo 2:
nome_smg SMNA_TESTE/SMGCria a estrutura de diretórios e faz cópias/links simbólicos:
./config_smg.ksh configureNota
- Todas as funções aceitam
-v(verbose) e-q(quiet).- Use
-ypara responder “yes” automaticamente às perguntas (execução não interativa).
Comando básico:
./config_smg.ksh compileVerbosidade: -v, -q
Seleção: --all | --none | --gsi | --no-gsi | --bam | --no-bam | --inctime | --no-inctime | --ang | --no-ang
Outros: -y (auto-yes), --dry-run, --restore, -f/--fix, -c/--cmake X ou --cmake=X
Exemplos
# Compilar tudo em modo verboso:
./config_smg.ksh compile -v --all
# Apenas GSI e BAM:
./config_smg.ksh compile --gsi --bam --no-ang --no-inctime
# Dry-run (sem compilar de fato):
./config_smg.ksh compile --all --dry-runNota (ANGUPDATE) A correção de viés é feita dentro do GSI nesta versão; ANGUPDATE não é necessário. Recomenda-se:
./config_smg.ksh compile --all --no-ang./config_smg.ksh copy_fixed_files./config_smg.ksh verify_executablesAceita as mesmas flags de verbosidade/seleção usadas em compile.
./config_smg.ksh testcase -vmodule purge
module load intel/2022.0.2
module load mpi/2021.5.1
export NETCDF_DIR='/mnt/beegfs/lib_intel/netcdf'
export NETCDF='/mnt/beegfs/lib_intel/netcdf'
export HDF_DIR='/mnt/beegfs/lib_intel/hdf5-1.12.1'
export PNETCDF='/mnt/beegfs/lib_intel/pnetcdf-1.12.3/PnetCDF'
export PIO='/mnt/beegfs/lib_intel/pio-2.5.4'
export PATH=${PATH}:/mnt/beegfs/lib_intel/netcdf/bin
export AEC_LIBRARY='/mnt/beegfs/lib_intel/libaec-v0.3.2/src'
export AEC_INCLUDE_DIR='/mnt/beegfs/lib_intel/libaec-v0.3.2/include'cd /home/${USER}/SMNA_v3.0.1/SMG
# Se ainda não fez:
./config_smg.ksh configure -v -y
# Compilar e salvar log:
./config_smg.ksh compile -v 2>&1 | tee compile_smg.log
# Acompanhar:
tail -f compile_smg.logExecutáveis são disponibilizados no HOME (pastas build/) e no SUBMIT_HOME (execuções reais). Caminhos típicos:
# GSI
/home/${USER}/SMNA_v3.0.1/SMG/cptec/gsi/build/src/gsi/gsi.x
/mnt/beegfs/${USER}/SMNA_v3.0.1/SMG/cptec/bin/gsi.x
# (ANGUPDATE desnecessário nesta versão)
# IncTime
/mnt/beegfs/${USER}/SMNA_v3.0.1/SMG/cptec/bin/inctime
# Pré-processamento (BAM)
/home/${USER}/SMNA_v3.0.1/SMG/cptec/bam/pre/build/ParPre_MPI
/mnt/beegfs/${USER}/SMNA_v3.0.1/SMG/bam/pre/exec/ParPre_MPI
# BAM (modelo)
/home/${USER}/SMNA_v3.0.1/SMG/cptec/bam/model/build/ParModel_MPI
/mnt/beegfs/${USER}/SMNA_v3.0.1/SMG/bam/model/exec/ParModel_MPI
# Pós-processamento (BAM)
/mnt/beegfs/${USER}/SMNA_v3.0.1/SMG/bam/pos/exec/bam/pos/PostGribNotas
build/(HOME) é útil para depuração.- Use os executáveis do SUBMIT_HOME nas execuções reais.
- Se algo faltou, verifique
compile_smg.loge repita.
Após configurar/compilar, prepare as entradas:
- Testcase (dados prontos, ex.: 2019)
- Ciclo real (copia GDAS/SST de uma data específica)
./config_smg.ksh copy_fixed_filesDurante o
configureocorre a primeira cópia dos fixos.copy_fixed_filesusa rsync (rápido, só copia o que mudou).
./config_smg.ksh testcase -vSolicita o ano (ex.: 2019) e copia para ${SUBMIT_HOME}/datainout/.
Não executa o ciclo — use runPre, runModel ou run_cycle.sh.
Nota: o testcase de 2019 usa o ciclo 2019111500 (exemplos abaixo seguem essa data).
cd /home/${USER}/SMNA_v3.0.0.t11889/SMG/cptec/bam/run
./runPre -v -t 299 -l 64 -I 2019111500 -n 0 -p SMT -s -O -T -G -Gt GridFunção: prepara campos fixos/grade (orografia, máscaras etc.). Em geral, uma vez por resolução.
Importante: dados atuais do NCEP já vêm em NetCDF com prefixo gdas. Esses são os padrões do
runPre; não precisa informar-Gp gdas -Gt Gridsalvo exceções.
-t <TRUNC>,-l <LEVELS>— resolução-I <YYYYMMDDHH>— data base para organização-n <PART>— partição (use 0 se não aplicável)-p <SUITE>— física (ex.:SMT,CPT)-s-O-T-G— ativa etapas (solo, orog., tsfc, grades)-Gp <GRIDP>(padrão:gdas)-Gt <GRIDT>(padrão:netcdf)-v/-h
Gera FG e restarts do BAM:
cd /home/${USER}/SMNA_v3.0.0/SMG/cptec/bam/run
./runModel -das -v -np 64 -N 4 -d 8 -t 299 -l 64 -I 2019111500 -W 2019111509 -F 2019111509 -ts 3 -r -tr 6 -i 2 -p SMT -s sstwkl-das— modo acoplado à assimilação-np <MPI>— n° processos MPI-t/-l— resolução-I/-W/-F— datas (início / fim warm-up / fim)-ts <H>— frequência das saídas-r— grava restarts;-tr <H>— espaçamento dos restarts-i <ITER>— iterações internas-p <SUITE>— física;-s <TAG>— forçantes/superfície-v/-h
cd /home/${USER}/SMNA_v3.0.1/SMG/run
# ajuda
./run_cycle.sh -h
# execução típica
./run_cycle.sh -t 299 -l 64 -gt 254 -p CPT -I 2019111500 -F 2019112018
# execução reconectável
nohup ./run_cycle.sh -t 299 -l 64 -gt 254 -p CPT -I 2019111500 -F 2019112018 \
| sed $'s/\e\[[0-9;:]*[a-zA-Z]//g' > run_cycle.out &
tail -f run_cycle.outNotas • Pós-processamento GRIB do BAM vem desativado; habilite no
run_cycle.sh(troque"No"por"Yes"na chamada final aorun_model.sh). • Para produtos 6 h (em vez de 3 h), alterekpds=10 → kpds=11noPOSTIN-GRIB(pastarun). • Garanta entradas GDAS/SST (usecopy_ncep_inputantes).
./config_smg.ksh copy_ncep_input -v 2025091400--dry-run— só valida/lista, sem copiar-v/--verbose— logs detalhados--src-root DIR— sobrescreve origem padrão (/oper/dados/ioper/tempo/NCEP/input)--layout LAYOUT—ncep-gfs(padrão) oupre-year(árvore antiga por ano)
# Ciclo padrão (layout ncep-gfs)
./config_smg.ksh copy_ncep_input 2013010100
# Validar sem copiar
./config_smg.ksh copy_ncep_input --dry-run 2024021000
# Usar fonte alternativa
./config_smg.ksh copy_ncep_input --src-root /mnt/beegfs/backup/NCEP/input 2024010100
# Layout antigo (pré-2019)
./config_smg.ksh copy_ncep_input --layout pre-year \
--src-root "${public_bam}/PRE/datain" 2019010100Destino das cópias:
${SMG}/datainout/bam/pre/datain- Dir:
/mnt/beegfs/${USER}/SMNA_v3.0.1/SMG/datainout/gsi/dataout/<DATA> - Arquivo:
GANLCPT<AAAAMMDD><HH>S.unf.TQ0299L064
- Dir:
/mnt/beegfs/${USER}/SMNA_v3.0.1/SMG/datainout/bam/pos/dataout/<RESOLUCAO>/<DATA> - Arquivos típicos:
GFCTCPT...convclP<rank>,...outattP<rank>,...outmdtP<rank>,...sibprgP<rank>
- Dir: idem Restarts
- Arquivos:
GANLCPT<ana><prev>F.dir.<res_mcga>,GANLCPT<ana><prev>F.fct.<res_mcga>
- Dir: idem Restarts
- Arquivos:
GPOSCPT<ana><ana>P.icn.<res_mcga>.grb,...inz...,GPOSCPT<ana><prev>P.fct.<res_mcga>.grb
Prévia em grade (full):
GANLNMC<ana>S.unf.<res_mcga>.GrADSem${SUBMIT_HOME}/SMG/datainout/bam/pre/dataout.
| Tipo | Diretório base | Padrão de arquivos |
|---|---|---|
| Análises | ${SUBMIT_HOME}/SMG/datainout/gsi/dataout/<DATA> |
GANLCPT<AAAAMMDD><HH>S.unf.TQ0299L064 |
| Restarts | ${SUBMIT_HOME}/SMG/datainout/bam/pos/dataout/<RES>/<DATA> |
GFCTCPT...F.unf.<res>.(convclP|outattP|outmdtP|sibprgP)<rank> |
| First Guess | ${SUBMIT_HOME}/SMG/datainout/bam/pos/dataout/<RES>/<DATA> |
GANLCPT<ana><prev>F.dir.<res_mcga>, ...fct.<res_mcga> |
| Previsões (GRIB) | ${SUBMIT_HOME}/SMG/datainout/bam/pos/dataout/<RES>/<DATA> |
GPOSCPT...icn/inz/fct.<res_mcga>.grb |
| Prévia (GrADS) | ${SUBMIT_HOME}/SMG/datainout/bam/pre/dataout/ |
GANLNMC<ana>S.unf.<res_mcga>.GrADS |
| Tipo | Diretório base | Exemplos |
|---|---|---|
| Análises | ${SUBMIT_HOME}/SMG/datainout/gsi/dataout/2019111500 |
GANLCPT2019111500S.unf.TQ0299L064 |
| Restarts | ${SUBMIT_HOME}/SMG/datainout/bam/pos/dataout/TQ0299L064/2019111500 |
GFCTCPT2019111500F.unf.TQ0299L064.convclP01, ...outattP01, ...outmdtP01, ...sibprgP01 |
| First Guess | ${SUBMIT_HOME}/SMG/datainout/bam/pos/dataout/TQ0299L064/2019111500 |
GANLCPT2019111500F.dir.TQ0299L064, GANLCPT2019111500F.fct.TQ0299L064 |
| Previsões (GRIB) | ${SUBMIT_HOME}/SMG/datainout/bam/pos/dataout/TQ0299L064/2019111500 |
GPOSCPT2019111500P.icn.TQ0299L064.grb, ...inz..., GPOSCPT2019111509P.fct.TQ0299L064.grb |
| Prévia (GrADS) | ${SUBMIT_HOME}/SMG/datainout/bam/pre/dataout/ |
GANLNMC2019111500S.unf.TQ0299L064.GrADS |
-
SVN “tag não encontrada” →
svn list https://svn.cptec.inpe.br/smna/tag/e escolha a mais recente. -
Executável ausente → ver
compile_smg.log(palavras-chave:error,fatal,not found), conferir módulos/variáveis NETCDF/HDF5/PIO/PNETCDF. -
Pós-processamento (GRIB) ausente → habilitar no
run_cycle.sh(trocar"No"→"Yes"). -
Previsões 6h vs 3h →
kpds=11(6 h) oukpds=10(3 h) noPOSTIN-GRIB. -
Rodar em background:
nohup ./run_cycle.sh ... > run_cycle.out & tail -f run_cycle.out