Script automatizado para instalação das dependências do MPAS (Model for Prediction Across Scales) e MONAN (Model for Ocean-laNd-Atmosphere PredictioN) em sistemas Linux.
O MPAS é um projeto colaborativo para desenvolvimento de componentes de simulação da atmosfera, oceano e outros sistemas terrestres para uso em estudos climáticos, climáticos regionais e meteorológicos. Desenvolvido pelo Los Alamos National Laboratory e National Center for Atmospheric Research.
O MONAN é um modelo comunitário do Sistema Terrestre Unificado gerenciado pelo INPE que tem sua estrutura de versão inicial (0.1.0) baseada no núcleo dinâmico do MPAS 8.0.1.
Este repositório fornece um script de instalação automatizada que compila e instala todas as dependências necessárias para as versões MPAS 8.x e MONAN 1.4x, incluindo suporte completo para processamento de dados GRIB2.
O script instala automaticamente as seguintes bibliotecas na ordem correta:
Versão específica do CMake necessária para compilação correta do PIO. Instalada via Python pip para garantir a versão exata.
Implementação MPI necessária para capacidades de computação paralela no MPAS/MONAN.
Biblioteca de compressão usada pelo HDF5 e NetCDF para armazenamento e transferência eficiente de dados.
Biblioteca PNG necessária para suporte a dados GRIB2. Instalada no diretório separado $LIBBASE/grib2.
Biblioteca JPEG-2000 necessária para processamento de dados GRIB2. Instalada no diretório separado $LIBBASE/grib2.
Biblioteca de gerenciamento de dados de alta performance com suporte a operações de I/O paralelo.
Biblioteca de I/O paralelo de alta performance para acessar arquivos NetCDF em formatos clássicos (CDF-1, CDF-2 e CDF-5).
Formato de dados autoexplicativo e portável amplamente usado em ciências atmosféricas e oceanográficas.
Interface Fortran para a biblioteca NetCDF, essencial para MPAS/MONAN que são escritos principalmente em Fortran.
Biblioteca de I/O Paralelo de alto nível para aplicações de grade estruturada que fornece uma API similar ao netCDF.
- Linux (testado no Ubuntu, CentOS, RHEL, Fedora)
- Arquitetura 64-bit recomendada
Ubuntu/Debian:
sudo apt-get install wget tar gcc gfortran g++ make cmake git python3 python3-pipCentOS/RHEL:
sudo yum install wget tar gcc gfortran gcc-c++ make cmake git python3 python3-pipFedora:
sudo dnf install wget tar gcc gfortran gcc-c++ make cmake git python3 python3-pip- Mínimo 4GB RAM (8GB+ recomendado)
- Pelo menos 6GB de espaço livre em disco
- Processador multi-core (compilação usará todos os núcleos disponíveis)
- Clone este repositório:
git clone https://github.com/otaviomf123/MONAN_MPAS_auto_install.git
cd MONAN_MPAS_auto_install- Execute o script de instalação:
chmod +x install_mpas_monan_dependencies.sh
./install_mpas_monan_dependencies.sh- Configure o ambiente (adicione ao ~/.bashrc as variáveis mostradas na seção seguinte):
source ~/.bashrc- Teste a instalação:
chmod +x test_dependencies.sh
./test_dependencies.shVocê pode personalizar os diretórios de instalação definindo variáveis de ambiente:
export LIBSRC="/caminho/para/diretorio/fontes" # Onde os arquivos fonte são baixados
export LIBBASE="/caminho/para/diretorio/instalacao" # Onde as bibliotecas são instaladas
export GRIB2DIR="/caminho/para/diretorio/grib2" # Onde libpng e jasper são instaladas
./install_mpas_monan_dependencies.shDiretórios padrão:
- Diretório de fontes:
$HOME/lib_repo - Diretório de instalação:
$HOME/libs - Diretório GRIB2:
$HOME/libs/grib2
Após a instalação bem-sucedida, adicione as seguintes linhas ao seu arquivo ~/.bashrc:
# Configuração MPAS/MONAN
export PATH=$HOME/libs/bin:$PATH
export PATH=$HOME/.local/bin:$PATH # Para CMake do pip
export LD_LIBRARY_PATH=$HOME/libs/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$HOME/libs/grib2/lib:$LD_LIBRARY_PATH
# Configurações dos compiladores
export SERIAL_FC=gfortran
export SERIAL_F77=gfortran
export SERIAL_CC=gcc
export SERIAL_CXX=g++
export MPI_FC=mpif90
export MPI_F77=mpif77
export MPI_CC=mpicc
export MPI_CXX=mpic++
# Caminhos das bibliotecas
export NETCDF=$HOME/libs
export PNETCDF=$HOME/libs
export PIO=$HOME/libs
# Bibliotecas GRIB2
export GRIB2DIR=$HOME/libs/grib2
export JASPERLIB=$HOME/libs/grib2/lib
export JASPERINC=$HOME/libs/grib2/include
# Variáveis para compilação do MPAS/MONAN
export MPAS_EXTERNAL_LIBS="-L$HOME/libs/lib -lhdf5_hl -lhdf5 -ldl -lz"
export MPAS_EXTERNAL_INCLUDES="-I$HOME/libs/include"Depois execute:
source ~/.bashrcExecute o script de teste incluso para verificar todas as dependências:
chmod +x test_dependencies.sh
./test_dependencies.shO script de teste agora verifica:
- Todas as ferramentas do sistema
- Compiladores MPI
- Bibliotecas principais (NetCDF, HDF5, PnetCDF, zlib)
- Bibliotecas GRIB2 (libpng, jasper)
- Versão correta do CMake (3.31.6)
- Variáveis de ambiente
- Compilação simples de código MPI
Para verificar se a instalação foi bem-sucedida, teste os seguintes comandos:
# Testar MPI
mpicc --version
mpif90 --version
# Testar NetCDF
nc-config --version
# Testar HDF5
h5dump --version
# Testar CMake
cmake --version # Deve mostrar 3.31.6
# Testar se todas as bibliotecas estão acessíveis
ls $HOME/libs/lib/
ls $HOME/libs/grib2/lib/Após instalação e configuração do ambiente:
git clone https://github.com/MPAS-Dev/MPAS-Model.git
cd MPAS-Model
make gfortran CORE=atmospheregit clone https://github.com/monanadmin/MONAN-Model.git
cd MONAN-Model
make gfortran CORE=atmosphereApós a instalação, a estrutura de diretórios será:
$HOME/
├── lib_repo/ # Código fonte baixado
│ ├── mpich-4.2.1/
│ ├── zlib-1.2.11/
│ ├── hdf5-1.10.5/
│ ├── pnetcdf-1.13.0/
│ ├── netcdf-c-4.9.2/
│ ├── netcdf-fortran-4.6.1/
│ ├── ParallelIO/
│ └── pio/
└── libs/ # Bibliotecas instaladas
├── bin/ # Executáveis (mpicc, nc-config, etc)
├── include/ # Headers
├── lib/ # Bibliotecas principais
└── grib2/ # Bibliotecas GRIB2 separadas
├── bin/
├── include/
└── lib/ # libpng.a, libjasper.a
-
Pacotes do sistema ausentes:
- O script identificará pacotes ausentes e fornecerá comandos de instalação
- Certifique-se de ter privilégios administrativos para instalar pacotes do sistema
-
Versão incorreta do CMake:
- O script instalará automaticamente CMake 3.31.6 via pip
- Se encontrar problemas, instale manualmente:
pip3 install --user cmake==3.31.6 - Certifique-se de que
$HOME/.local/binestá no seu PATH
-
Falhas de compilação:
- Verifique espaço disponível em disco (necessário pelo menos 6GB)
- Verifique se possui RAM suficiente (4GB mínimo)
- Certifique-se de que todos os pacotes necessários do sistema estão instalados
-
Ambiente não carregando:
- Certifique-se de executar
source ~/.bashrcapós adicionar as variáveis - Verifique se a instalação foi concluída com sucesso
- Verifique as permissões dos arquivos
- Certifique-se de executar
-
Configurações dos compiladores incorretas:
- Verifique se as variáveis FC, CC, F77, CXX estão definidas corretamente
- Certifique-se de que os compiladores MPI estão funcionando (mpicc, mpif90)
- Execute os testes para verificar a compilação
-
Bibliotecas GRIB2 não encontradas:
- Verifique se
GRIB2DIR,JASPERLIBeJASPERINCestão definidos - Confirme que
$GRIB2DIR/libcontém libpng.a e libjasper.a - Verifique se
LD_LIBRARY_PATHinclui$GRIB2DIR/lib
- Verifique se
O script instala estas versões específicas (testadas e compatíveis):
- CMake: 3.31.6 (via pip)
- MPICH: 4.2.1
- zlib: 1.2.11
- libpng: 1.2.50
- jasper: 1.900.1
- HDF5: 1.10.5
- Parallel-netCDF: 1.13.0
- NetCDF-C: 4.9.2
- NetCDF-Fortran: 4.6.1
- PIO: 2.6.2
Após a instalação, as seguintes variáveis de ambiente são configuradas:
| Variável | Descrição |
|---|---|
NETCDF |
Caminho para instalação do NetCDF |
PNETCDF |
Caminho para instalação do Parallel-netCDF |
PIO |
Caminho para instalação do PIO |
GRIB2DIR |
Caminho para bibliotecas GRIB2 (libpng, jasper) |
JASPERLIB |
Caminho para biblioteca jasper |
JASPERINC |
Caminho para headers jasper |
| Variável | Descrição |
|---|---|
SERIAL_FC |
Compilador Fortran serial (gfortran) |
SERIAL_F77 |
Compilador Fortran 77 serial (gfortran) |
SERIAL_CC |
Compilador C serial (gcc) |
SERIAL_CXX |
Compilador C++ serial (g++) |
MPI_FC |
Compilador Fortran MPI (mpif90) |
MPI_F77 |
Compilador Fortran 77 MPI (mpif77) |
MPI_CC |
Compilador C MPI (mpicc) |
MPI_CXX |
Compilador C++ MPI (mpic++) |
| Variável | Descrição |
|---|---|
MPAS_EXTERNAL_LIBS |
Flags de linkagem das bibliotecas para compilação do MPAS |
MPAS_EXTERNAL_INCLUDES |
Caminhos de include para compilação do MPAS |
O script baixa as bibliotecas dos seguintes locais:
- MPICH: https://www.mpich.org/static/downloads/4.2.1/mpich-4.2.1.tar.gz
- zlib: https://www2.mmm.ucar.edu/people/duda/files/mpas/sources/zlib-1.2.11.tar.gz
- libpng: https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/libpng-1.2.50.tar.gz
- jasper: https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/jasper-1.900.1.tar.gz
- HDF5: https://www2.mmm.ucar.edu/people/duda/files/mpas/sources/hdf5-1.10.5.tar.bz2
- Parallel-netCDF: https://parallel-netcdf.github.io/Release/pnetcdf-1.13.0.tar.gz
- NetCDF-C: https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.9.2.tar.gz
- NetCDF-Fortran: https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.6.1.tar.gz
- PIO: https://github.com/NCAR/ParallelIO (branch pio2_6_2)
- Adicionado libpng 1.2.50 para manipulação de imagens PNG
- Adicionado jasper 1.900.1 para compressão JPEG-2000
- Bibliotecas GRIB2 instaladas em diretório separado (
$GRIB2DIR)
- Instalação automática do CMake 3.31.6 via pip
- Verificação da versão antes da compilação do PIO
- Garantia de compatibilidade com PIO 2.6.2
- Verificação da versão correta do CMake
- Teste das bibliotecas GRIB2 (libpng e jasper)
- Validação de variáveis de ambiente adicionais
- Site Oficial do MPAS
- Repositório GitHub do MONAN
- Tutorial WRF/WPS
- Documentação NetCDF
- Documentação HDF5
- Documentação PIO
- Fontes MPAS NCAR
Este projeto está licenciado sob a Licença MIT.
- Otavio M. Feitosa
- Baseado nas diretrizes de compilação MPAS/MONAN do NCAR e INPE
- NCAR (National Center for Atmospheric Research) pelo desenvolvimento do MPAS
- INPE (Instituto Nacional de Pesquisas Espaciais) pelo desenvolvimento do MONAN
- Contribuidores das comunidades MPAS e MONAN
- Comunidade WRF pelo tutorial de compilação das bibliotecas GRIB2