Uso
Nesta página são apresentados alguns exemplos de uso do pacote GSIBerror. Nos exemplos, são consideradas duas matrizes de covariâncias, uma proveniente do Developmental Testbed Center (DTC) e outra calculada a partir dos pares de previsões do modelo de circulação geral da atmosfera do CPTEC1.
Informação
Uma versão desta página para o Jupyter Notebook pode ser encontrada em https://github.com/GAD-DIMNT-CPTEC/GSIBerror/blob/main/notebooks/read_gsi_berror_python-class-final-pt.ipynb.
Se preferir interagir com o notebook, clique no botão abaixo para utilizar o Google Colab.
A classe Berror
Para utilizar a classe Berror, carregue o pacote gsiberror com o comando a seguir:
1 | |
Os módulos a seguir são opcionais e podem ser carregados caso o usuário queira plotar os records da matriz. O módulo cartopy é carregado para plotar as linhas de costa dos records relacionados com a sst (temperatura da superfície do mar) apenas, visto que os demais records, são dependentes apenas das latitudes:
1 2 3 4 | |
Observação
No repositório, há o script plot_functions.py onde estão implementadas algumas funções de plotagem auxiliares para a utilização com a classe Berror. Veja um exemplo da sua utilização no notebook read_gsi_berror_python-class-final-BCPTEC_hyb_coord.ipynb.
Definição dos arquivos de covariâncias
A seguir, define-se o nome do arquivo a ser lido. No exemplo dado, são consideradas duas matrizes, fncep (matriz do NCEP) e fcptec (matriz do modelo BAM) e ambas as matrizes possuem dimensões distintas:
1 2 3 4 5 6 7 | |
Aviso
A variável path deverá ser ajustada pelo usuário para refletir o caminho onde se encontram os arquivos das matrizes gsir4.berror_stats.gcv.BAM.TQ0062L028 e global_berror.l64y386.f77-ncep-dtc.gcv.
Dica
No diretório data do repositório, verifique as matrizes bcptec_bam_352pairs_gsir4.berror_stats.fix.oz.cw.tsm.gcv, global_berror.l64y386.f77-ncep-dtc.gcv e new_gsir4.berror_stats-tese-cfbastarz2017.gcv, as quais podem ser utilizadas para testar o pacote GSIBerror.
Utilização da classe Berror
Para utilizar a classe, é necessário criar uma instância para cada uma das matrizes a serem lidas:
1 2 | |
O método read_records
O método read_records é utilizado para ler todos os records (coeficientes de regressão horizontais, comprimentos de escala e variâncias) das matrizes e os seus respectivos atributos (número de pontos de latitude, longitude, níveis verticais) . A documentação deste método pode ser acessada com o comando:
1 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | |
Leituras dos records e atributos das matrizes a partir das instâncias ncep_b e cptec_b criadas:
1 2 | |
Verificação dos atributos das matrizes
A matriz de covariâncias utilizada pelo GSI possui uma série de records que podem ser verificados por meio da classe Berror.
Dimensões das matrizes
Para verificar os atributos das matrizes, basta utilizar a instância da classe para a matriz desejada:
nlat: número de pontos de latitude;nlon: número de pontos de longitude;nlev: número de níveis verticais.
1 | |
1 | |
Da mesma forma, para cptec_b:
1 | |
1 | |
Coeficientes de regressão horizontais
Para verificar os records das matrizes, basta utilizar a instância da classe para a matriz desejada:
balprojs: coeficientes de regressão horizontais;amplitudes: variâncias das variáveis de controle;hscales: comprimentos de escala horizontais;vscales: comprimentos de escala verticais.
1 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | |
Observe que os records de balprojs estão armazenados em um dicionário com três elementos agvin, bgvin e wgvin. Estes são os coeficientes de regressão horizontais do GSI, utilizados para construir a parte balanceada da temperatura, velocidade potencial e pressão em superfície:
agvin: coeficientes de regressão para a função de corrente e temperatura;bgvin: coeficientes de regressão para a função de corrente e velocidade potencial;wgvin: coeficientes de regressão para a função de corrente e pressão em superfície.
Segundo o manual do GSI2:
Devido ao tamanho real da matriz de covariâncias (da ordem de \(10^6 \times 10^6\)), a representação da matriz no GSI é simplificada. Para isso, é utilizado um conjunto ideal de variáveis de controle de análise, que são selecionadas de forma que a correlação cruzada entre elas seja mínima (o que implica em menos termos fora da diagonal principal da matriz). Com isso, o balanço (e.g., massa e vento) entre as variáveis de análise é obtido a partir desses coeficientes de regressão horizontais pré-calculados. Além disso, em relação aos erros de previsão, eles são calculados como distribuições Gaussianas com variâncias e comprimentos de escala pré-calculados (offline) para cada uma das variáveis de controle de análise.
Estes records com os coeficientes de regressão podem ser inspecionados da seguinte forma:
1 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | |
Para bgvin:
1 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Para wgvin:
1 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Para obter os valores mínimos e máximos, eg., dos coeficientes de regressão da velocidade potencial (bgvin), pode-se utilizar os métodos min() ou max() do módulo xarray:
1 | |
1 2 | |
E para max():
1 | |
1 2 | |
De forma simplificada, pode-se fazer também:
1 | |
1 | |
Para plotar os coeficcientes de projeção da velocidade potencial bgvin, basta utilizar o método plot() do módulo xarray:
1 | |

Para cptec_b:
1 | |

Para comparar os coeficientes de projeção das matrizes instanciadas por ncep_b e cptec_b, pode-se seguir os exemplos a seguir.
Observe que os coeficientes de projeção da temperatura agvin, para as instâncias ncep_b e cptec_b, possuem uma dimensão extra denominada level_2. Esta dimensão extra precisa ser fixada para um dos níveis contidos nas instâncias. Utilize o comando ncep_b.levs e cptec_b.levs para obter os valores possíveis para isto (fazendo-se isel(level_2=0) escolhe-se o primeiro nível, próximo à superfície e isel(level_2=-1) escolhe-se o último nível, próximo ao topo do modelo).
1 2 3 4 5 6 7 8 9 10 | |

E para o último nível em ambas as matrizes:
1 2 3 4 5 6 7 8 9 10 | |

Para o record bgvin:
1 2 3 4 5 6 7 8 9 10 | |

Para o record wgvin:
1 2 3 4 5 6 7 8 9 10 | |

Amplitudes (desvios-padrão)
Para verificar e comparar as amplitudes das instâncias ncep_b e cptec_b, siga os exemplos a seguir.
Aviso
Os records de ozônio, conteúdo de água líquida em nuvens e temperatura da superfície do mar (amplitudes e comprimentos de escala horizontais/verticais) são intencionalmente os mesmos entre as duas matrizes mostradas neste notebook. De fato, a matriz B do CPTEC empresta esses records da matriz B do NCEP (fornecida pelo Developmental Testbed Center - DTC) para testes.
1 2 3 4 5 6 7 8 9 10 | |

No exemplo a seguir, são comparados os perfis verticais com as amplitudes de sf das instâncias ncep_b e cptec_b:
1 2 3 4 5 6 7 8 9 10 | |

Para a velocidade potencial (vp):
1 2 3 4 5 6 7 8 9 10 | |

Para o perfil da velocidade potencial (vp):
1 2 3 4 5 6 7 8 9 10 | |

Para a temperatura (t):
1 2 3 4 5 6 7 8 9 10 | |

Para o perfil da temperatura (t):
1 2 3 4 5 6 7 8 9 10 | |

Para a umidade relativa (q):
1 2 3 4 5 6 7 8 9 10 | |

Para o perfil da umidade relativa (q):
1 2 3 4 5 6 7 8 9 10 | |

Para o ozônio (oz):
1 2 3 4 5 6 7 8 9 10 | |

Para o perfil do ozônio (oz):
1 2 3 4 5 6 7 8 9 10 | |

Para o conteúdo de água líquida (cw):
1 2 3 4 5 6 7 8 9 10 | |

Para o perfil do conteúdo de água líquida (cw):
1 2 3 4 5 6 7 8 9 10 | |

Para pressão (ps):
1 2 3 4 5 6 7 8 9 10 | |

Nas figuras a seguir, são mostradas as aplitudes de sst das instâncias ncep_b e cptec_b.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |

Comprimentos de escala horizontais
Assim como as amplitudes, os comprimentos de escala horizontais das instâncias ncep_b e cptec_b também podem ser comparadas. Veja os exemplos a seguir:
1 2 3 4 5 6 7 8 9 10 | |

Para a velocidade potencial (vp):
1 2 3 4 5 6 7 8 9 10 | |

Para a temperatura (t):
1 2 3 4 5 6 7 8 9 10 | |

Para a umidade (q):
1 2 3 4 5 6 7 8 9 10 | |

Para o ozônio (oz):
1 2 3 4 5 6 7 8 9 10 | |

Para a pressão (ps):
1 2 3 4 5 6 7 8 9 10 | |

Para a temperatura da superfície do mar (sst):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |

Comprimentos de escala verticais
Assim como as amplitudes e os comprimentos de escala horizontais, os comprimentos de escala verticais das instâncias ncep_b e cptec_b também podem ser comparadas. Veja os exemplos a seguir:
1 2 3 4 5 6 7 8 9 10 | |

Para a velocidade potencial (vp):
1 2 3 4 5 6 7 8 9 10 | |

Para a temperatura (t):
1 2 3 4 5 6 7 8 9 10 | |

Para a umidade relativa (q):
1 2 3 4 5 6 7 8 9 10 | |

Para o ozônio (oz):
1 2 3 4 5 6 7 8 9 10 | |

Para o conteúdo de água líquida (cw):
1 2 3 4 5 6 7 8 9 10 | |

-
Matriz de Covariâncias dos Erros de Previsão Aplicada ao Sistema de Assimilação de Dados Global do CPTEC: Experimentos com Observação Única. Disponível em: https://www.scielo.br/j/rbmet/a/8LQNdCV9jJM9whJdpkDLfCh/abstract/?lang=pt&format=html. ↩
-
Disponível em https://dtcenter.org/community-code/gridpoint-statistical-interpolation-gsi/documentation. ↩