Modelo Global - 1 Modelo Global Fortran90 Operacional Atual (Janeiro de 2004) 1 - Uso da tabela desirtable e descrição da availtable: Parâmetros para dimensão das matrizes de diagnósticos solicitados via desirtable (subdiretório model/datain) definidos no runmodg.sx6 (exige re-compilação do modelo): • • • • • mgaus - número de campos gaussianos com kmax camadas ngaus - número de campos gaussianos de superfície ou com 1 nível mspec - número de campos espectrais com kmax camadas nspec - número de campos espectrais de superfície ou com 1 nível kmax - número de camadas do modelo Trecho do runmodg.sx6 a ser modificado: (deve-se modificar tanto no spcgau.new quanto no spcgau.inc90) cat <<EOT > spcgau.new PARAMETER (mgaus=1,ngaus=21,mspec=4,nspec=0) EOT cat <<EOT > spcgau.inc90 INTEGER, PARAMETER :: mgaus=1 INTEGER, PARAMETER :: ngaus=21 INTEGER, PARAMETER :: mspec=4 INTEGER, PARAMETER :: nspec=0 EOT Obtenção dos parâmetros: Na tabela availtable (subdiretório model/datain): Coluna 1: nome da variável (40 caracteres) Coluna 2: 1 - campos de um nível 2 - campos com kmax camadas Coluna 3: número da unidade de cálculo pelo modelo Coluna 4: 1 - campos gaussianos 2 - campos espectrais Coluna 5: posição no código onde o diagnóstico é calculado 1 - sub-rotinas gloop/gfidi 2 - sub-rotina gwater 3 - sub-rotinas gloop/gfidi e gwater 0 - nenhuma delas Uso de Disco - 1 Modelo Global - 2 Comparando a tabela desirtable com a tabela availtable e contando • o número de campos gaussianos com kmax camadas, • o número de campos gaussianos de superfície / um nível, • o número de campos espectrais com kmax camadas, • o número de campos espectrais de superfície / um nível, pode-se obter mgaus, ngaus, mspec e nspec. Na tabela desirtable: Coluna 1: nome da variável (40 caracteres) Coluna 2: 1 - campos de um nível 2 - campos com kmax camadas Coluna 3: número da unidade requerida para a saída (coluna 4 = 0) ou número da unidade de cálculo pelo modelo (coluna 4 /= 0, ver availtable) Coluna 4: código de cálculo do diagnóstico requerido 0 - cálculo direto # - > 0 : adiciona ao campo requerido número # # - < 0 : subtrai ao campo requerido número # Exemplo de tabela desirtable: TIME MEAN SURFACE PRESSURE TIME MEAN DIVERGENCE TIME MEAN VORTICITY TIME MEAN SPECIFIC HUMIDITY TIME MEAN VIRTUAL TEMPERATURE TOTAL PRECIPITATION CONVECTIVE PRECIPITATION LARGE SCALE PRECIPITATION SENSIBLE HEAT FLUX FROM SURFACE LATENT HEAT FLUX FROM SURFACE CLOUD COVER OUTGOING LONG WAVE AT TOP GROUND/SURFACE COVER TEMPERATURE TOTAL DIABATIC HEATING LONG WAVE RADIATIVE HEATING SHORT WAVE RADIATIVE HEATING CONVECTIVE LATENT HEATING LARGE SCALE LATENT HEATING SHALLOW CONVECTIVE HEATING VERTICAL DIFFUSION HEATING 1 2 2 2 2 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 132 50 50 0 40 121 121 121 170 170 0 170 40 71 70 70 70 70 70 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +14 +14 +14 +14 +14 +14 Uso de Disco - 2 Modelo Global - 3 Explicação: O valor +14 na quarta coluna significa que estes campos (LONG WAVE RADIATIVE HEATING, SHORT WAVE RADIATIVE HEATING, CONVECTIVE LATENT HEATING, LARGE SCALE LATENT HEATING, SHALLOW CONVECTIVE HEATING, VERTICAL DIFFUSION HEATING), que são calculados em unidade 70 (ver tabela availtable) serão somados e terá como nome de saída no arquivo *.dir.* do modelo global o nome TOTAL DIABATIC HEATING na unidade 71, em apenas um campo somado. Estes campos com +14 na quarta coluna não entram na obtenção de mgaus, ngaus, mspec e nspec. As unidades estão definidas no arquivo aunits (subdiretório model/datain). O número da unidade da tabela availtable e da tabela desirtable corresponde ao número da linha no arquivo aunits acrescido de 2. Exemplo: Unidade 70 significa K/sec e 71 K/day, obtidos das linhas 72 e 73, respectivamente, do arquivo aunits. 2 - Cálculo do uso de disco das saídas do modelo e do pós-processamento: Dados: • mend - truncamento triangular do modelo • nmax = (mend+1)*(mend+2) - número de coeficientes espectrais • imax - número de pontos oeste-leste (longitudes) • jmax - número de pontos sul-norte (latitudes) • mmax = imax*jmax - número total de pontos gaussianos em uma camada (veja item 3) • nprev - número de previsões requeridas As saídas do modelo e do pós-processamento são convertidas para IEEE-32 bits, big_endian, e são arquivos seqüenciais (2 palavras de controle por registro). 2.1 - Saídas fixas do modelo (cabeçário, topografia, máscara terra-água e prognósticos : cada saída): Cabeçário: ifday, tod, idate(4), idatec(4) ifday - (inteiro) número do dia, começando por 0 tod - (real) tempo do dia (segundos) = 0.0 todo início de dia do modelo (independentemente do horário da condição inicial) idate - (inteiro) data da condição inicial idatec - (inteiro) data do momento da saída 1 - horário (horas inteiras truncadas) 2 - mês 3 - dia 4 - ano (4 dígitos) Uso de Disco - 3 Modelo Global - 4 Topografia: (real - espectral - 1 nível : m) Máscara terra-água (real - gaussiano - 1 nível : -1 terra, 1 mar) Logaritmo natural da pressão a superfície (real - espectral - 1 nível : ln(Cb)) Divergência (real - espectral - kmax camadas : 1/s) Vorticidade (real - espectral - kmax camadas : 1/s) Umidade específica (real - espectral - kmax camadas : kg/kg) Temperatura virtual (real - espectral - kmax camadas : K) Rugosidade da superfície (real - gaussiano - 1 nível : m) Temperatura da superfície (real - gaussiano - 1 nível : K): temperatura da primeira camada de solo sobre terra e temperatura da superfície do mar (tsm) sobre mar Temperatura do solo profundo (real - gaussiano - 1 nível : K) Armazenamento no dossel (real - gaussiano - 1 nível : m) Armazenamento na cobertura de solo (real - gaussiano - 1 nível : m) Umidade da zona de superfície do solo (real - gaussiano - 1 nível : %) Umidade da zona de raízes no solo (real - gaussiano - 1 nível : %) Umidade da zona de drenagem do solo (real - gaussiano - 1 nível : %) Tamanho das saídas fixas (condição inicial e inicializada): • • • • • • • • • • • • Registro 1: (2+2*4+2)*4 Registro 2: (nmax+2)*4 Registro 3: (mmax+2)*4 Registro 4: (nmax+2)*4 Registro 5: (nmax+2)*kmax*4 Registro 6: (nmax+2)*kmax*4 Registro 7: (nmax+2)*kmax*4 Registro 8: (nmax+2)*kmax*4 Registro 10: (mmax+2)*4 Registro 11: (mmax+2)*4 Registro 9: (mmax+2)*4 Registro 12: (mmax+2)*4 Uso de Disco - 4 Modelo Global - 5 • • • • Registro 13: (mmax+2)*4 Registro 14: (mmax+2)*4 Registro 15: (mmax+2)*4 Registro 16: (mmax+2)*4 Total dos Prognósticos: (2+2*4+2)*4 + 2*(nmax+2)*4 + 4*(nmax+2)*kmax*4 + 9*(mmax+2)*4 = tpmdl 2.2 - Diagnósticos do modelo (cada saída): Total Diagnósticos: nspec*(nmax+2)*4 + mspec*(nmax+2)*kmax*4 + ngaus*(mmax+2)*4 + mgauss*(mmax+2)*kmax*4 = tdmdl Total de cada arquivo de previsão de saída do modelo: tpmdl + tdmdl = (2+2*4+2)*4 + (nspec+2)*(nmax+2)*4 + (mspec+4)*(nmax+2)*kmax*4 + (ngaus+9)*(mmax+2)*4 + mgaus*(mmax+2)*kmax*4 Total do uso de disco das saídas do modelo – cold start: tsmcprev = 2 * tpmdl + nprev*(tpmdl+tdmdl) (condição inicial + condição inicializada + previsões) Total do uso de disco das saídas do modelo – warm start: tsmwprev = nprev*(tpmdl+tdmdl) (previsões apenas) 2.3 - Pós-processamento (cada saída): Dados • • • • • • • mposp - número de campos gaussianos prognósticos requeridos com nmand níveis de pressão nposp - número de campos gaussianos prognósticos requeridos de superfície ou com 1 nível mposd - número de campos gaussianos diagnósticos requeridos com nmand níveis de pressão nposd - número de campos gaussianos diagnósticos requeridos de superfície ou com 1 nível mpos = mposp + mposd - número total de campos gaussianos requeridos com nmand níveis de pressão npos = nposp + nposd - número total de campos gaussianos requeridos de superfície ou com 1 nível de pressão nmand - número de níveis de pressão requeridos no pós-processamento Total do pós-processamento para a condição inicial ou inicializada: tspcin = mposp*(mmax+2)*nmand*4 + nposp*(mmax+2)*4 Uso de Disco - 5 Modelo Global - 6 Total do pós-processamento para previsões: tspprv = mpos*(mmax+2)*nmand*4 + npos*(mmax+2)*4 Total do uso de disco das saídas do pós-processamento cold start: tspcprv = 2 * tspcin + nprev*tspprv (condição inicial + condição inicializada + previsões) Total do uso de disco das saídas do pós-processamento warm start: tspwprv = nprev*tspprv (previsões apenas) 3 – Número de total de pontos gaussianos mmax no truncamento triangular 3.1 - Grade gaussiana quadrática: imax ≥ 3 * mend +1 ≤ 2K * 3L * 5M , K ≥ 1, L ≥ 0 e M ≥ 0 (FFT) jmax ≥ (3 * mend + 1) / 2 ≥ 2*N, N = Int[(3*mend+1)/2] + 2*Mod[(3*mend+1)/2,2] mmax = imax * jmax 3.2 - Grade gaussiana quadrática reduzida: mendj - truncamento triangular do modelo para cada latitude imaxj - número de longitudes em cada latitude, decrescendo para os pólos imaxj ≥ 3 * mendj +1 ≤ 2K * 3L * 5M , K ≥ 1, L ≥ 0 e M ≥ 0 (FFT) jmax ≥ (3 * mend + 1) / 2 ≥ 2*N, N = Int[(3*mend+1)/2] + 2*Mod[(3*mend+1)/2,2] mmax = ∑j=1,jmax imaxj 3.3 - Grade gaussiana linear reduzida: mendj - truncamento triangular do modelo para cada latitude imaxj – número de longitudes em cada latitude, decrescendo para os pólos imaxj ≥ 2 * mendj +1 ≤ 2K * 3L * 5M , K ≥ 1, L ≥ 0 e M ≥ 0 (FFT) jmax ≥ (2 * mend + 1) / 2 ≥ 2*N, N = 2*(mend+1) mmax = ∑j=1,jmax imaxj Uso de Disco - 6 Modelo Global - 7 4 – Grade Reduzida A grade reduzida segue a abordagem de Courtier e Naughton (1994), em que é definida em função da capacidade de representação da projeção em harmônicos esféricos, dentro de uma dada precisão. Este critério pode ser obtido a partir da avaliação da condição de ortogonalidade das funções associadas de Legendre da forma descrita a seguir. Definida uma tolerância ε (=10-12 no modelo do ECMWF, Hortal, 1998), um número de onda zonal m passa a ser considerado um valor de corte em uma dada latitude ϕ (com µ = sinϕ e µ C ≤ µ < 1 ) se: µ ∫P m n ( µ ) Pnm′ ( µ )dµ ≤ ε µC para todo n e n ′ até o truncamento mend. A primeira latitude em que se pode desprezar as contribuições do número de onda m é dada por ϕ m = arcsinµ m . A grade é simetricamente definida no outro hemisfério. Assim, a cada latitude ϕ j fica associado um número de onda mendj até o qual deve-se garantir uma boa resolução na malha utilizando este procedimento de sua determinação. A partir dos valores de mendj são definidas as grades reduzida e linear, conforme item 3. Na grade gaussiana quadrática, o fator multiplicativo é 3 para evitar os efeitos de aliasing dos termos não lineares; enquanto que para a grade linear o fator é 2, pois esta é somente utilizada quando se usa o esquema semi-lagrangeano 3D para todas equações onde os termos não lineares mais importantes (advecções) não são calculados explicitamente dentro do método espectral, não necessitando, portanto, de pontos extras para evitar aliasing. Referências: Courtier, P., Naughton, M., 1994: A pole problem in the reduced Gaussian grid. Quart. J. Roy. Meteor. Soc., 120: 1389-1407. Hortal, M., 1998: Aspects of the numerics of the ECMWF model. In: Proceedings of a Seminar on Recent Developments in Numerical Methods for Atmospheric Modeling. ECWMF, Reading, UK, 7-11 September 1998, 127-143. Uso de Disco - 7