Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/core_atmosphere/physics/Registry_noahmp.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<dim name="nSnowLevels" definition="3"
description="The number of snow layers used by the NOAHMP land-surface scheme"/>

<dim name="nzSnowLevels" definition="7"
<dim name="nzSnowLevels" definition="nSoilLevels+nSnowLevels"
description="The number of snow layer depths used by the NOAHMP land-surface scheme"/>

</dims>
Expand Down
17 changes: 16 additions & 1 deletion src/core_atmosphere/physics/mpas_atmphys_control.F
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@ subroutine physics_registry_init(mesh,configs,sfc_input)

lsm_select: select case(trim(config_lsm_scheme))

case("sf_noah","sf_noahmp")
case("sf_noah")
!initialize the thickness of the soil layers for the Noah scheme:
do iCell = 1, nCells
dzs(1,iCell) = 0.10_RKIND
Expand All @@ -428,6 +428,21 @@ subroutine physics_registry_init(mesh,configs,sfc_input)
dzs(4,iCell) = 1.00_RKIND
enddo

case("sf_noahmp")
!initialize the thickness of the soil layers for the NoahMP scheme:
do iCell = 1, nCells
dzs(1,iCell) = 0.05_RKIND
dzs(2,iCell) = 0.10_RKIND
dzs(3,iCell) = 0.10_RKIND
dzs(4,iCell) = 0.10_RKIND
dzs(5,iCell) = 0.30_RKIND
dzs(6,iCell) = 0.35_RKIND
dzs(7,iCell) = 0.50_RKIND
dzs(8,iCell) = 1.00_RKIND
dzs(9,iCell) = 1.00_RKIND
dzs(10,iCell) = 1.50_RKIND
enddo

case("sf_ruc")
do iCell = 1,nCells
dzs(1,iCell) = 0.005_RKIND
Expand Down
10 changes: 5 additions & 5 deletions src/core_atmosphere/physics/mpas_atmphys_driver_lsm_noahmp.F
Original file line number Diff line number Diff line change
Expand Up @@ -854,14 +854,14 @@ subroutine lsm_noahmp_toMPAS(diag_physics,diag_physics_noahmp,output_noahmp,sfc_
snicexy(ns,i) = mpas_noahmp%snicexy(i,n)
snliqxy(ns,i) = mpas_noahmp%snliqxy(i,n)
enddo
do ns = 1,nsnow
do ns = 1,nzsnow
n = ns - nsnow
zsnsoxy(ns,i) = mpas_noahmp%zsnsoxy(i,n)
enddo
do ns = nsnow+1,nzsnow
n = ns - nsoil + 1
zsnsoxy(ns,i) = mpas_noahmp%zsnsoxy(i,n)
enddo
! do ns = nsnow+1,nzsnow
! n = ns - nsoil + 1
! zsnsoxy(ns,i) = mpas_noahmp%zsnsoxy(i,n)
! enddo
enddo


Expand Down
55 changes: 54 additions & 1 deletion src/core_atmosphere/physics/mpas_atmphys_initialize_real.F
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,9 @@ subroutine init_soil_layers_depth(mesh, fg, dims, configs)
!case('ruc')
! if(config_nsoillevels .ne. 9) &
! call physics_error_fatal('RUC lsm uses only 9 soil layers currently. Correct config_nsoillevels.')
!case('noahmp')
! if(config_nsoillevels .ne. 10) &
! call physics_error_fatal('This version of Noah-MP lsm uses 10 soil layers. Correct config_nsoillevels.')
!end select

selectcase (config_nsoillevels)
Expand Down Expand Up @@ -376,6 +379,38 @@ subroutine init_soil_layers_depth(mesh, fg, dims, configs)
dzs(nSoilLevels,iCell) = zs2(nSoilLevels) - zs2(nSoilLevels-1)
enddo
deallocate(zs2)

case( 10 )
do iCell = 1, nCellsSolve
iSoil = 1
zs_fg(iSoil,iCell) = 0.5_RKIND * dzs_fg(iSoil,iCell)
do iSoil = 2, nFGSoilLevels
zs_fg(iSoil,iCell) = zs_fg(iSoil-1,iCell) &
+ 0.5_RKIND * dzs_fg(iSoil-1,iCell) &
+ 0.5_RKIND * dzs_fg(iSoil,iCell)
enddo
enddo

do iCell = 1, nCellsSolve
dzs(1,iCell) = 0.05_RKIND
dzs(2,iCell) = 0.10_RKIND
dzs(3,iCell) = 0.10_RKIND
dzs(4,iCell) = 0.10_RKIND
dzs(5,iCell) = 0.30_RKIND
dzs(6,iCell) = 0.35_RKIND
dzs(7,iCell) = 0.50_RKIND
dzs(8,iCell) = 1.00_RKIND
dzs(9,iCell) = 1.00_RKIND
dzs(10,iCell) = 1.50_RKIND

iSoil = 1
zs(iSoil,iCell) = 0.5_RKIND * dzs(iSoil,iCell)
do iSoil = 2, nSoilLevels
zs(iSoil,iCell) = zs(iSoil-1,iCell) &
+ 0.5_RKIND * dzs(iSoil-1,iCell) &
+ 0.5_RKIND * dzs(iSoil,iCell)
enddo
enddo
end select

end subroutine init_soil_layers_depth
Expand Down Expand Up @@ -447,6 +482,8 @@ subroutine init_soil_layers_properties(mesh, fg, dminfo, dims, configs)
num_st = 0
do iCell = 1, nCellsSolve
do ifgSoil = 1, nFGSoilLevels
if(st_fg(ifgSoil,iCell) .le. 0._RKIND) st_fg(ifgSoil,iCell) = tmn(iCell)
if(sm_fg(ifgSoil,iCell) .le. 0._RKIND) sm_fg(ifgSoil,iCell) = 0.20
if(st_fg(ifgSoil,iCell) .le. 0._RKIND) num_st = num_st + 1
if(sm_fg(ifgSoil,iCell) .lt. 0._RKIND) num_sm = num_sm + 1
enddo
Expand All @@ -467,6 +504,16 @@ subroutine init_soil_layers_properties(mesh, fg, dminfo, dims, configs)
!if(config_nsoillevels .ne. 9) &
! call physics_error_fatal('RUC lsm uses 9 soil layers. Correct config_nsoillevels.')
call init_soil_properties_ruc(mesh, fg, dminfo, dims, configs)
case ( 10 )
! if(config_nsoillevels .ne. 10) &
! call physics_error_fatal('This version of Noah-MP lsm uses 10 soil layers. Correct config_nsoillevels.')
call init_soil_properties_noah(mesh, fg, dminfo, dims, configs)


case ( 10 )
! if(config_nsoillevels .ne. 10) &
! call physics_error_fatal('This version of Noah-MP lsm uses 10 soil layers. Correct config_nsoillevels.')
call init_soil_properties_noah(mesh, fg, dminfo, dims, configs)

end select
end subroutine init_soil_layers_properties
Expand Down Expand Up @@ -536,7 +583,13 @@ subroutine init_soil_properties_noah(mesh, fg, dminfo, dims, configs)
sm_input(ifgSoil+1,iCell) = sm_fg(ifgSoil,iCell)
enddo

zhave(nFGSoilLevels+2,iCell) = 300._RKIND/100._RKIND
if(nSoilLevels .eq. 4) then
zhave(nFGSoilLevels+2,iCell) = 300._RKIND/100._RKIND
elseif(nSoilLevels .eq. 10) then
zhave(nFGSoilLevels+2,iCell) = 600._RKIND/100._RKIND
else

endif
st_input(nFGSoilLevels+2,iCell) = tmn(iCell)
sm_input(nFGSoilLevels+2,iCell) = sm_input(nFGSoilLevels,iCell)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,8 @@
! MRP: microbial respiration parameter (umol CO2/kgC/s)
MRP = 0.00, 0.23, 0.23, 0.23, 0.23, 0.23, 0.17, 0.19, 0.19, 0.40, 0.40, 0.37, 0.23, 0.37, 0.30, 0.00, 0.17, 0.40, 0.00, 0.17, 0.23, 0.20, 0.00, 0.00, 0.20, 0.00, 0.00,
! NROOT: number of soil layers with root present
NROOT = 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 0, 2, 2, 1, 3, 3, 3, 2, 1, 1, 0, 0,
! NROOT = 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 0, 2, 2, 1, 3, 3, 3, 2, 1, 1, 0, 0,
NROOT = 2, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, 8, 0, 4, 4, 2, 6, 6, 6, 4, 2, 2, 0, 0,
! RGL: Parameter used in radiation stress function
RGL = 999.0, 100.0, 100.0, 100.0, 100.0, 65.0, 100.0, 100.0, 100.0, 65.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 100.0, 30.0, 999.0, 100.0, 100.0, 100.0, 100.0, 999.0, 100.0, 999.0, 999.0,
! RS: Minimum stomatal resistance (s/m)
Expand Down Expand Up @@ -353,7 +354,8 @@
! MRP: microbial respiration parameter (umol CO2/kgC/s)
MRP = 0.37, 0.23, 0.37, 0.40, 0.30, 0.19, 0.19, 0.19, 0.40, 0.17, 0.285, 0.23, 0.00, 0.23, 0.00, 0.00, 0.00, 0.23, 0.20, 0.00,
! NROOT: number of soil layers with root present
NROOT = 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 3, 1, 3, 1, 1, 0, 3, 3, 2,
! NROOT = 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 3, 1, 3, 1, 1, 0, 3, 3, 2,
NROOT = 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 4, 6, 2, 6, 2, 2, 0, 6, 6, 4,
! RGL: Parameter used in radiation stress function
RGL = 30.0, 30.0, 30.0, 30.0, 30.0, 100.0, 100.0, 100.0, 65.0, 100.0, 65.0, 100.0, 999.0, 100.0, 999.0, 999.0, 30.0, 100.0, 100.0, 100.0,
! RS: Minimum stomatal resistance (s/m)
Expand Down