diff --git a/namelist/convert_mpas.nml b/namelist/convert_mpas.nml index 4b2252e..614b4e9 100755 --- a/namelist/convert_mpas.nml +++ b/namelist/convert_mpas.nml @@ -4,5 +4,6 @@ nOznLevels = 59 nMonths = 12 nSoilLevels = 4 + nSnowLevels = 3 nIsobaricLev= 27 / diff --git a/src/convert_mpas.F90 b/src/convert_mpas.F90 index cc91a78..621a377 100644 --- a/src/convert_mpas.F90 +++ b/src/convert_mpas.F90 @@ -37,9 +37,10 @@ program convert_mpas integer :: nOznLevels = 59 integer :: nMonths = 12 integer :: nSoilLevels = 4 + integer :: nSnowLevels = 3 integer :: nIsobaricLev = 27 character(len=20) :: verticalCoord = '' - namelist /config_convert_mpas/ verticalCoord, nVertLevels, nOznLevels, nMonths, nSoilLevels, nIsobaricLev + namelist /config_convert_mpas/ verticalCoord, nVertLevels, nOznLevels, nMonths, nSoilLevels, nSnowLevels, nIsobaricLev call timer_start(total_timer) @@ -258,9 +259,9 @@ program convert_mpas if (can_remap_field(field) .and. & should_remap_field(field, include_field_list, exclude_field_list)) then if (trim(verticalCoord) == 'Pressure') then - stat = remap_field_dryrun(nIsobaricLev, nOznLevels, nSoilLevels, remap_info, field, target_field) + stat = remap_field_dryrun(nIsobaricLev, nOznLevels, nSoilLevels, nSnowLevels, remap_info, field, target_field) else if (trim(verticalCoord) == 'MPAS_Model') then - stat = remap_field_dryrun(nVertLevels, nOznLevels, nSoilLevels, remap_info, field, target_field) + stat = remap_field_dryrun(nVertLevels, nOznLevels, nSoilLevels, nSnowLevels, remap_info, field, target_field) else write (0, *) 'error at verticalCoord=', trim(verticalCoord) stop 44 diff --git a/src/remapper.F90 b/src/remapper.F90 index cd784c9..23df96e 100644 --- a/src/remapper.F90 +++ b/src/remapper.F90 @@ -339,11 +339,11 @@ logical function can_remap_field(field) end function can_remap_field - integer function remap_field_dryrun(nVertLevels, nOznLevels, nSoilLevels, & + integer function remap_field_dryrun(nVertLevels, nOznLevels, nSoilLevels, nSnowLevels, & remap_info, src_field, dst_field) result(stat) implicit none - integer, intent(in) :: nVertLevels, nOznLevels, nSoilLevels + integer, intent(in) :: nVertLevels, nOznLevels, nSoilLevels, nSnowLevels type(remap_info_type), intent(in) :: remap_info type(input_field_type), intent(in) :: src_field type(target_field_type), intent(out) :: dst_field @@ -399,6 +399,9 @@ integer function remap_field_dryrun(nVertLevels, nOznLevels, nSoilLevels, & else if (src_field%dimnames(idim) == 'nSoilLevels') then dst_field%dimlens(2 + idim) = nSoilLevels dst_field%dimnames(2 + idim) = 'level' + else if (src_field%dimnames(idim) == 'nSnowLevels') then + dst_field%dimlens(2 + idim) = nSnowLevels + dst_field%dimnames(2 + idim) = 'level' else dst_field%dimlens(2 + idim) = src_field%dimlens(idim) dst_field%dimnames(2 + idim) = src_field%dimnames(idim) @@ -427,6 +430,9 @@ integer function remap_field_dryrun(nVertLevels, nOznLevels, nSoilLevels, & else if (src_field%dimnames(idim) == 'nSoilLevels') then dst_field%dimlens(idim + 1) = nSoilLevels dst_field%dimnames(idim + 1) = 'level' + else if (src_field%dimnames(idim) == 'nSnowLevels') then + dst_field%dimlens(idim + 1) = nSnowLevels + dst_field%dimnames(idim + 1) = 'level' else dst_field%dimlens(idim + 1) = src_field%dimlens(idim) dst_field%dimnames(idim + 1) = src_field%dimnames(idim) diff --git a/test/functional/convert_mpas.nml b/test/functional/convert_mpas.nml index 4b2252e..614b4e9 100755 --- a/test/functional/convert_mpas.nml +++ b/test/functional/convert_mpas.nml @@ -4,5 +4,6 @@ nOznLevels = 59 nMonths = 12 nSoilLevels = 4 + nSnowLevels = 3 nIsobaricLev= 27 /