diff --git a/src/core_atmosphere/physics/Registry_noahmp.xml b/src/core_atmosphere/physics/Registry_noahmp.xml
index 89d980f724..ec4c7b030a 100644
--- a/src/core_atmosphere/physics/Registry_noahmp.xml
+++ b/src/core_atmosphere/physics/Registry_noahmp.xml
@@ -16,7 +16,7 @@
-
diff --git a/src/core_atmosphere/physics/mpas_atmphys_control.F b/src/core_atmosphere/physics/mpas_atmphys_control.F
index 6c0b81327a..6329e3e884 100644
--- a/src/core_atmosphere/physics/mpas_atmphys_control.F
+++ b/src/core_atmosphere/physics/mpas_atmphys_control.F
@@ -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
@@ -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
diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_lsm_noahmp.F b/src/core_atmosphere/physics/mpas_atmphys_driver_lsm_noahmp.F
index 3b02af2f60..fc6024e318 100644
--- a/src/core_atmosphere/physics/mpas_atmphys_driver_lsm_noahmp.F
+++ b/src/core_atmosphere/physics/mpas_atmphys_driver_lsm_noahmp.F
@@ -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
diff --git a/src/core_atmosphere/physics/mpas_atmphys_initialize_real.F b/src/core_atmosphere/physics/mpas_atmphys_initialize_real.F
index 8a2969b837..a081f9450a 100644
--- a/src/core_atmosphere/physics/mpas_atmphys_initialize_real.F
+++ b/src/core_atmosphere/physics/mpas_atmphys_initialize_real.F
@@ -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)
@@ -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
@@ -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
@@ -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
@@ -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)
diff --git a/src/core_atmosphere/physics/physics_noahmp/parameters/NoahmpTable.TBL b/src/core_atmosphere/physics/physics_noahmp/parameters/NoahmpTable.TBL
index c9d37c5b40..0c4bdf86bc 100644
--- a/src/core_atmosphere/physics/physics_noahmp/parameters/NoahmpTable.TBL
+++ b/src/core_atmosphere/physics/physics_noahmp/parameters/NoahmpTable.TBL
@@ -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)
@@ -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)