Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


Dr. Carlos Frederico Bastarz


Programa de Pós-Graduação em Meteorologia (PGMET) do INPE

14 de Novembro de 2025

Frameworks de Assimilação de Dados


Sumário


  1. Informações sobre containers
    1.1 Docker
    1.2 Singularity
  2. GSI
    2.1 Exercícios em sala
  3. JEDI
    3.1 Paradigmas de desenvolvimento do JEDI
    3.2 Instruções para exercícios em casa
  4. Atividades realizadas no CPTEC com o GSI e JEDI
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


1. Informações sobre containers


  • Um container é um artefato que contém toda a estrutura de software necessária para a execução de outros software em outros computadores

    • É um tipo de virtualização multiplataforma (no Mac OS a virtualização pode ser feita em duas camadas)
    • Foco em portabilidade e reprodutibilidade (mesmo em outras plataformas com processadores diferentes)
    • Elimina a necessidade de configuração do ambiente para a execução do software (mas é necessário instalar o genrenciador do container)
    • Permite o acesso aos dados do host com permissões de acesso que variam de acordo com o tipo de container
  • Duas insfraestruturas de containeres mais comnuns são o Docker e o Singularity

    • Apptainer/Singularity foi pensado para ambientes de HPC🔸
    • Docker tem um propósito mais geral
    • Ambos podem ser utilizados para a maioria das tarefas (e.g., executar um software pela linha de comando ou com interface gráfica; executar um modelo)
🔸HPC: High Performance Computing

Frameworks de Assimilação de Dados


1. Informações sobre containers


1.1 Docker


  • Foco é a execução de programas pequenos, aplicações em nuvem em ambienytes corporativos, servidores e redes
  • Containeres do Docker são executados como processos do usuário root e requer permissões elevadas e não permitido em ambientes multiusuário (não é permitido o compartilhamento do container por questões de segurança)
  • A imagem do container é isolada, i.e., não há ações diretas entre os arquivos de dentro do container e da máquina host
  • Requer configurações adicionais para funcionar com MPI🔸 e CUDA🔹
Docker logo
🔸MPI: Message Passing Interface
🔹CUDA: Compute Unified Device Architecture

Frameworks de Assimilação de Dados


1. Informações sobre containers


1.2 Apptainer/Singularity🔸

  • Foco está na área científica e ambientes de HPC atendendo a requisitos de execução de programas grandes (e.g., um modelo numérico)
  • Containeres do Apptainer/Singularity, por serem compatíveis com ambientes HPC
    • Não requerem permissões de root
    • São compatíveis com MPI para simulações paralelizadas
    • Possui suporte a CUDA
  • A imagem do container é isolada da máquina host, mas pode ser compartilhada e movida livremente
  • Permite o uso de imagens do Docker
Apptainer logo
🔸O Singularity era gerenciado por uma empresa privada (Sylabs), a qual passou a sua tutela para a Linux Foundation - a partir disso, o software foi renomeado para Apptainer

Frameworks de Assimilação de Dados


2. GSI🔸

  • O GSI é um framework de assimilação de dados desenvolvido pelo NCEP
    • Fornece a implementação de software para todas as componentes relacionadas à assimilação de dados
      • Métodos variacional (3D/4DVar, híbrido-variacional e 3D/4DEnVar)
      • Métodos baseados em conjuntos (EnKF, EnSRF, LETKF)
      • Métodos de minimização da função custo variacional
      • Operador (Modelo de Transferência Radiativa)
      • Suporte para modelos globais (espectrais) e regionais (em ponto de grade)
  • Foco em sistemas operacionais
  • Mantido pelo DTC🔹/NCAR
    • Centraliza as contribuições, faz o gerenciamento do código, distribui releases e realiza tutoriais para a comunidade de usuários
  • Recebe contribuições da NASA, NCEP e universidades
🔸GSI: Gridpoint Statistical Interpolation
🔹DTC: Developmental Testbed Center

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


  • Utilização do container Docker do GSI (fornecido pelo DTC) para a realização dos sistemas 3DVar, 4DVar e híbrido-variacional 3DVar
  • Teste com a assimilação de uma única variável
  • Verificação da minimização da função custo por meio da verificação dos outer e inner loops
  • Verificação da assimilação de dados por meio da redução do erro da análise durante a minimização da função custo
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


Instalação do Docker

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  • Em seguida
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker logo

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


Instalação do Docker

  • Verificação da instalação
sudo systemctl status docker
  • Se o serviço do Docker não estiver em execução
sudo systemctl start docker
  • Em seguida
sudo docker run hello-world
Docker logo

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


Pós-instalação

  • Permitir a execução como usuário normal
sudo groupadd docker
sudo usermod -aG docker $USER
  • Em seguida
newgrp docker
  • Finalmente
docker run hello-world
Docker logo

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


✨ EXTRA - Instalação do Apptainer/Singularity


  • Forma simples para o Ubuntu Linux e derivados
wget -c https://github.com/apptainer/apptainer/releases/download/v1.4.2/apptainer_1.4.2_amd64.deb
wget -c https://github.com/apptainer/apptainer/releases/download/v1.4.2/apptainer-suid_1.4.2_amd64.deb
sudo dpkg -i apptainer_1.4.2_amd64.deb
sudo dpkg -i apptainer-suid_1.4.2_amd64.deb
sudo apt install -f
  • Há pacotes pré-compilados disponíveis para outras distribuições Linux
Docker logo
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


Exercícios com o GSI (Docker)

  • Arquivos disponíveis no 🔗 link
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


Instruções

  1. Instalação do Docker ✅
  2. Escolher um diretório na máquina local (com pelo menos 10GB ) e executar
mkdir GSI-Docker
cd GSI-Docker
  1. Download do GSI
docker pull comgsi/docker

👉 Alternativamente

wget -c https://dataserver.cptec.inpe.br/dataserver_dimnt/das/carlos.bastarz/GSITutorialDTC/comgsi_docker.tar.gz
  1. Desempacotar
gunzip comgsi_docker.tar.gz
  1. Carregar o container
docker load -i comgsi_docker.tar
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


Instruções

  1. Inicializar o container
echo 'docker run -h GSI_Docker -v "$(pwd)":/tutorial -ti --rm comgsi/docker' > rungsidocker; chmod +x rungsidocker

👉 Execute ./rungsidocker para inicializar o container

Docker GSI

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


Instruções

  • Para abrir um novo shell do GSI Docker, execute
docker ps
  • Anote o número referente à instância do docker em execução (e.g., ed09947d9d92) e execute
docker exec -it ed09947d9d92 bash
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


2.1 Exercícios em sala

Compilação do GSI

  1. Dentro do diretório /tutorial, faça o download do arquivo comGSIv3.7_EnKFv1.3.tar.gz
wget -c https://dataserver.cptec.inpe.br/dataserver_dimnt/das/carlos.bastarz/GSITutorialDTC/comGSIv3.7_EnKFv1.3.tar.gz
  1. Desempacotar o arquivo baixado
tar -zxvf comGSIv3.7_EnKFv1.3.tar.gz
  1. Execute os comandos
cd build
cmake ../comGSIv3.7_EnKFv1.3
make

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


Compilação do GSI

  1. Entrar no diretório /tutorial/run e executar os comandos
cd /tutorial/run
ln -s ../build/bin/gsi.x .
ln -sf ../build/bin/enkf_wrf.x .
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


Download do testcase

  1. Entrar no diretório /tutorial/case_data e executar os comandos
wget -c https://dataserver.cptec.inpe.br/dataserver_dimnt/das/carlos.bastarz/GSITutorialDTC/data/2018081212.tar.gz
wget -c https://dataserver.cptec.inpe.br/dataserver_dimnt/das/carlos.bastarz/GSITutorialDTC/data/2018081218.tar.gz
wget -c https://dataserver.cptec.inpe.br/dataserver_dimnt/das/carlos.bastarz/GSITutorialDTC/data/CRTM_v2.3.0.tar.gz
wget -c https://dataserver.cptec.inpe.br/dataserver_dimnt/das/carlos.bastarz/GSITutorialDTC/data/T62.gfs.tar.gz
wget -c https://dataserver.cptec.inpe.br/dataserver_dimnt/das/carlos.bastarz/GSITutorialDTC/data/chemdata.tar.gz
  1. Desempacotar os arquivos
tar -zxvf 2018081212.tar.gz
tar -zxvf 2018081218.tar.gz
tar -zxvf CRTM_v2.3.0.tar.gz
tar -zxvf T62.gfs.tar.gz
tar -zxvf chemdata.tar.gz

Frameworks de Assimilação de Dados


2.1 Exercícios em sala


Preparação do script de execução

  • Usar como referência as instruções em 🔗 link
  • Realize as modificações e execute o script run_gsi_regional.ksh_basic
./run_gsi_regional.ksh_basic
  • Neste primeiro teste, verifique o conteúdo do diretório /tutorial/run/basic

Realização dos casos

  • 11 casos, descritos 🔗 link
    • Para cada caso, será necessário fazer ajustes no script de submissão
    • Crie os diretórios necessários para a realização dos experimentos e execute o script a partir deles

Frameworks de Assimilação de Dados


3. JEDI🔸

  • É um esforço conjunto liderado pelo JCSDA🔹 para o desenvolvimento de um novo sistema de assimilação de dados unificado 🔗 link
  • Novo framework de assimilação de dados
    • Mais moderno: escrito do zero, com abordagem de separação de conceitos
    • Implementa os métodos de assimilação de dados mais utilizados (variacionais e por conjuntos)
    • Implementa interfaces para diversos modelos (globais, regionais, atmosféricos e oceânicos)
  • Foco é a operação e a colaboração de desenvolvimento com a comunidade de usuários
    • Anualmente são oferecidas as JEDI Academies
🔸JEDI: Joint Effort for Data Assimilation Integration
🔹JCSDA: Joint Center for Satellite Data Assimilation

Frameworks de Assimilação de Dados

3. JEDI


JEDI Academy



  • 7a Jedi Academy
    • 4 a 8 de outurbo de 2021
    • Formato virtual
    • Página da JEDI Academy: 🔗 link
    • Conteúdo do curso: 🔗 link
Docker logo
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


3. JEDI


Paradigmas de desenvolvimento do JEDI - Principais Componentes

  • OOPS (Object-Oriented Prediction System)

    • É o núcleo do JEDI (implementa os métodos e algorítmos de assimilação)
  • SABER (System-Agnostic Background Error Representation)

    • Parte responsável pela modelagem de covariâncias dos erros de previsão (matriz )
  • UFO (Unified Forward Operator)

    • Parte responsável pelos operadores de observação (operador e matriz )
  • IODA (Interface for Observation Data Access)

    • Responsável pela manipulação das observações para tratamento interno (padroniza as observações para uso com o UFO e OOPS)
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados

3. JEDI

Paradigmas de desenvolvimento do JEDI - Separação de Conceitos

Docker logo

Frameworks de Assimilação de Dados

3. JEDI

Paradigmas de desenvolvimento do JEDI - Separação de Conceitos


  • Cada parte do sistema pode ser desenvolvida independente da outra

  • Foco em engenharia de software

    • Modularidade
    • Reprodutibilidade
    • Escalabilidade
    • Interoperabilidade
  • Implementação de interfaces abstratas

    • Não implementa os modelos de forma direta (código reutilizável)
    • Permite que os códigos implementados sejam utilizados para qualquer modelo que esteja sendo utilizado
  • Utiliza orientação a objetos (C++)

    • Mais moderno que o Fortran tradicional
  • Testes unitários

    • Todas as componentes implementadas podem ser testadas
    • Permite checar se e como modificações em uma parte do sistema afeta as demais
  • Configurações por meio de arquivos YAML

    • Evita configurações no meio do código (o GSI e o BAM tem coisas assim!)
    • Evita recompilar o código
  • Entre outros

Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


5. Atividades realizadas no CPTEC com o GSI e JEDI


  • 2012-2016: G3DVar (Global 3DVar)
    • GSI (3.2) + MCGA, TQ0299L064, coordenada vertical sigma, modelo de superfície SSiB
    • Marcou o início dos trabalhos com o framework do GSI no CPTEC
    • Executado na máquina Tupã
    • Treinamento Carlos Bastarz e Bruna Silveira no NCAR
      • Bruna passou mais 1 semana na NASA para configurar o GSI junto com o Ricardo Todling
    • Operacional entre 2013 e 2015
    • Último commit no código do G3DVar que está no SVN data de 2016, quando Carlos finalizou a tese de doutorado
      • Mesmo não sendo mais operacional, foi implementado e testado o sistema híbrido 3DVar utilizando o EnKF e EnSRF
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


5. Atividades realizadas no CPTEC com o GSI e JEDI


  • 2016-2021: SMG (Sistema de Modelagem Global)
    • GSI (3.4) + BAM, TQ0299OL064, coordenada vertical sigma, modelo de superfície SSiB
    • Executado na máquina XC50
    • Marcou um novo início para o G3DVar, sendo rebatizado como SMG
      • Atualização do modelo atmosférico para o BAM
      • Revisão completa e reescrita da interface entre o BAM e o GSI
      • Nova matriz de covariâncias
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


5. Atividades realizadas no CPTEC com o GSI e JEDI


  • 2021-2025: SMNA (Sistema de Modelagem Numérica e Assimilação de dados)
    • GSI (3.7) + BAM, TQ0299L064, coordenada vertical híbrida, modelo de superfície IBIS
    • Executado na máquina XC50 (operacional) e portado para a máquina Egeon (P&D)
    • Marcou um novo início para o SMG, sendo rebatizado como SMNA
      • Recebeu contribuições do grupo de desenvolvimento do modelo BAM (nova coordenada vertical, modelo de superfície IBIS)
      • Revisão completa do sistema e atualização para a última versão disponível do GSI
      • Nova matriz de covariâncias
Introdução à Assimilação de Dados (MET 563-3)

Frameworks de Assimilação de Dados


5. Atividades realizadas no CPTEC com o GSI e JEDI


Introdução à Assimilação de Dados (MET 563-3)

🤔 Dúvidas








🔗 https://cfbastarz.github.io/met563-3/
🐙 https://github.com/cfbastarz/MET563-3
📧 carlos.bastarz@inpe.br






👉 This work is licensed under CC BY-NC-SA 4.0

Introdução à Assimilação de Dados (MET 563-3)

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style

Scoped style