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
53 changes: 52 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 @@ -468,6 +505,11 @@ subroutine init_soil_layers_properties(mesh, fg, dminfo, dims, configs)
! 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)

end select
end subroutine init_soil_layers_properties

Expand Down Expand Up @@ -536,7 +578,16 @@ 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
!... block to determine max depth (based on 2-m for Noah and 5-m for NoahMP)
! can get away without an else block because this subroutine is only
! called if nSoilLevels is either 4 or 10
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,7 @@
! 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 = 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 +353,7 @@
! 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 = 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
Loading