COMO Saulo,
QUEREMOS alterar o código do MPAS,
PARA incluir as variáveis com os níveis solicitados.
:clipboard: Critérios de aceite de conclusão da Issue
[x] Variáveis: qc no scalars, qg no scalars e qi no scalars implementadas; Testar saída do MONAN com ncview ou NCL. OU explicar as variáveis que não funcionam devido a necessidade de alteração de configuração atual do modelo.
[x] Atualizar planilha com variáveis que estão funcionando ou colocar observação nas que não funcionam
Incluída a leitura de variáveis do namelist em _mpas_isobaricdiagnostis.F na subrotina _isobaric_diagnosticssetup() adicionando a pool configs:
!-----------------------------------------------------------------------
! routine isobaric_diagnostics_setup
!
!> \brief Set up the isobaric diagnostics module
!> \author Michael Duda
!> \date 21 October 2016
!> \details
!> This routine sets up the isobaric diagnostics module, principally by
!> saving pointers to pools that are used in the computation of diagnostics.
!
!-----------------------------------------------------------------------
subroutine isobaric_diagnostics_setup(configs, all_pools, simulation_clock)
use mpas_derived_types, only : MPAS_pool_type, MPAS_clock_type
use mpas_pool_routines, only : mpas_pool_get_subpool
implicit none
type (MPAS_pool_type), pointer :: configs
type (MPAS_pool_type), pointer :: all_pools
type (MPAS_clock_type), pointer :: simulation_clock
character(len=StrKIND), pointer :: micropScheme, convectionScheme, pblScheme
clock => simulation_clock
call mpas_pool_get_subpool(all_pools, 'mesh', mesh)
call mpas_pool_get_subpool(all_pools, 'state', state)
call mpas_pool_get_subpool(all_pools, 'diag', diag)
call mpas_pool_get_subpool(all_pools, 'diag_physics', diag_physics)
#ifdef DO_PHYSICS
call mpas_pool_get_subpool(all_pools, 'tend_physics', tend_physics)
#endif
call mpas_pool_get_config(configs, 'config_microp_scheme', micropScheme)
call mpas_pool_get_config(configs, 'config_convection_scheme', convectionScheme)
call mpas_pool_get_config(configs, 'config_pbl_scheme', pblScheme)
if (.not. associated(micropScheme)) then
call mpas_log_write('config_microp_scheme is not a namelist option...')
return
end if
if (.not. associated(convectionScheme)) then
call mpas_log_write('config_convection_scheme is not a namelist option...')
return
end if
if (.not. associated(pblScheme)) then
call mpas_log_write('config_pbl_scheme is not a namelist option...')
return
end if
if (trim(micropScheme) == "mp_thompson") then
need_mp_thompson = .true.
else
need_mp_thompson = .false.
endif
if (trim(convectionScheme) == "cu_grell_freitas") then
need_cu_grell_freitas = .true.
else
need_cu_grell_freitas = .false.
endif
if (trim(pblScheme) == "bl_mynn") then
need_bl_mynn = .true.
else
need_bl_mynn = .false.
endif
print *, "mp_thompson=", need_mp_thompson
print *, "cu_grell_freitas=", need_cu_grell_freitas
print *, "bl_mynn=", need_bl_mynn
end subroutine isobaric_diagnostics_setup
Adicionada a pool configs na chamada de _isobaric_diagnosticssetup() na subrotina _mpas_atm_diagsetup() contida no módulo _mpas_atm_diagnosticsmanager.F
Incluídos os testes se _mpthompson e _blmynn foram incluídos no namelist os quais ativam o uso de ni e nr na subroutina _interpdiagnostics() (pode ser feito o mesmo para qi, qc e qg, porém, só checando para ni e nr as variáveis implementadas nessa issue passaram a funcionar):
if (need_mp_thompson .eqv. .true. .or. need_bl_mynn .eqv. .true.) then
if (NEED_NI) then
!... ni:
do iCell = 1, nCells
do k = 1, nVertLevels
kk = nVertLevels+1-k
field_in(iCell,kk) = scalars(index_ni,k,iCell)
enddo
enddo
call interp_tofixed_pressure(nCells,nVertLevels,nIntP,press_in,field_in,press_interp,field_interp)
ni_15hPa(1:nCells) = field_interp(1:nCells,1)
...
end if
end if
if (need_mp_thompson .eqv. .true.) then
if (NEED_NR) then
!... nr:
do iCell = 1, nCells
do k = 1, nVertLevels
kk = nVertLevels+1-k
field_in(iCell,kk) = scalars(index_nr,k,iCell)
enddo
enddo
call interp_tofixed_pressure(nCells,nVertLevels,nIntP,press_in,field_in,press_interp,field_interp)
nr_15hPa(1:nCells) = field_interp(1:nCells,1)
...
end if
end if
Bug relatado pelo Kubota foi corrigido o que não alterou os resultados das variáveis implementadas, seja com Thompson ligado ou não.
Visualização das variáveis com ncview:
Seguiu-se o procedimento do DTN06 para o fechamento da feature e atualização da brach develop.
:rotating_light: Problemas encontrados
Manter todas as variáveis do scalars ativas sem teste de namelist causam falhas na compatibilidade de índices se _mpthompson não estiver ativado.
Foi reportado pelo Paulo Kubota e corrigido nessa issue um erro no módulo _module_blysu onde as variáveis _fqc e _fqi não estão sendo passadas via argumento na posição correta conforme chamada a seguir:
:people_holding_hands: User Story
COMO Saulo, QUEREMOS alterar o código do MPAS, PARA incluir as variáveis com os níveis solicitados.
:clipboard: Critérios de aceite de conclusão da Issue
:pencil: Detalhamento adicional da atividade
:comet: Impactos
N/A
:link: Dependências
:hammer_and_wrench: Solução
Criada a branch monan-461-QI.
Variáveis implementadas conforme procedimento da issue #459.
Criadas as variáveis globais em _mpas_isobaricdiagnostics.F:
Incluída a leitura de variáveis do namelist em _mpas_isobaricdiagnostis.F na subrotina _isobaric_diagnosticssetup() adicionando a pool configs:
Adicionada a pool configs na chamada de _isobaric_diagnosticssetup() na subrotina _mpas_atm_diagsetup() contida no módulo _mpas_atm_diagnosticsmanager.F
Incluídos os testes se _mpthompson e _blmynn foram incluídos no namelist os quais ativam o uso de ni e nr na subroutina _interpdiagnostics() (pode ser feito o mesmo para qi, qc e qg, porém, só checando para ni e nr as variáveis implementadas nessa issue passaram a funcionar):
Bug relatado pelo Kubota foi corrigido o que não alterou os resultados das variáveis implementadas, seja com Thompson ligado ou não.
Visualização das variáveis com ncview:
:rotating_light: Problemas encontrados
Manter todas as variáveis do scalars ativas sem teste de namelist causam falhas na compatibilidade de índices se _mpthompson não estiver ativado.
Foi reportado pelo Paulo Kubota e corrigido nessa issue um erro no módulo _module_blysu onde as variáveis _fqc e _fqi não estão sendo passadas via argumento na posição correta conforme chamada a seguir:
Em _module_blysu.F
Em _blysu.F
:white_check_mark: Conclusão
:spiral_calendar: Trabalhos Futuros
N/A