Skip to content
Merged
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
25 changes: 13 additions & 12 deletions drivers/wrf/module_sf_noahmpdrv.F
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN
REAL, INTENT(IN ) :: soiltstep ! soil timestep (s), default:0->same as main model timestep
INTEGER, INTENT(IN ) :: IZ0TLND ! option of Chen adjustment of Czil (not used)
INTEGER, INTENT(IN ) :: sf_urban_physics ! urban physics option
REAL, DIMENSION( ims:ime, 8, jms:jme ), INTENT(IN ) :: SOILCOMP ! soil sand and clay percentage
REAL, DIMENSION( ims:ime, nsoil*2, jms:jme ), INTENT(IN ) :: SOILCOMP ! soil sand and clay percentage
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SOILCL1 ! soil texture in layer 1
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SOILCL2 ! soil texture in layer 2
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SOILCL3 ! soil texture in layer 3
Expand Down Expand Up @@ -353,9 +353,9 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FORCZLSM
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FORCWLSM
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_SSOILXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_QINSURXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_QSEVAXY
REAL, DIMENSION( ims:ime, 1:NSOIL, jms:jme ), INTENT(INOUT) :: ACC_ETRANIXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_QINSURXY ! m/s * soil_dt/main_dt
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_QSEVAXY ! m/s * soil_dt/main_dt
REAL, DIMENSION( ims:ime, 1:NSOIL, jms:jme ), INTENT(INOUT) :: ACC_ETRANIXY ! m/s * soil_dt/main_dt
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: EFLXBXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: SOILENERGY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: SNOWENERGY
Expand Down Expand Up @@ -570,9 +570,9 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN
REAL :: RAININ !rain rate (mm/s)
REAL :: SNOWIN !liquid equivalent snow rate (mm/s)
REAL :: ACC_SSOIL
REAL :: ACC_QINSUR
REAL :: ACC_QSEVA
REAL, DIMENSION( 1:NSOIL) :: ACC_ETRANI !transpiration rate (mm/s) [+]
REAL :: ACC_QINSUR !m/s * soil_dt/main_dt
REAL :: ACC_QSEVA !m/s * soil_dt/main_dt
REAL, DIMENSION( 1:NSOIL) :: ACC_ETRANI !transpiration rate (m/s * soil_dt/main_dt) [+]
REAL :: EFLXB
REAL :: XMF
REAL, DIMENSION( -2:NSOIL ) :: HCPCT
Expand Down Expand Up @@ -972,12 +972,12 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN
! parameters%td_spac = TD_SPAC (I,J) ! tile spacing


CALL TRANSFER_MP_PARAMETERS(VEGTYP,SOILTYP,SLOPETYP,SOILCOLOR,CROPTYPE,parameters)
CALL TRANSFER_MP_PARAMETERS(NSOIL,VEGTYP,SOILTYP,SLOPETYP,SOILCOLOR,CROPTYPE,parameters)

if(iopt_soil == 3 .and. .not. parameters%urban_flag) then

sand = 0.01 * soilcomp(i,1:4,j)
clay = 0.01 * soilcomp(i,5:8,j)
sand = 0.01 * soilcomp(i,1:nsoil,j)
clay = 0.01 * soilcomp(i,(nsoil+1):(nsoil*2),j)
orgm = 0.0

if(opt_pedo == 1) call pedotransfer_sr2006(nsoil,sand,clay,orgm,parameters)
Expand Down Expand Up @@ -1432,15 +1432,16 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN
END SUBROUTINE noahmplsm
!------------------------------------------------------

SUBROUTINE TRANSFER_MP_PARAMETERS(VEGTYPE,SOILTYPE,SLOPETYPE,SOILCOLOR,CROPTYPE,parameters)
SUBROUTINE TRANSFER_MP_PARAMETERS(NSOIL,VEGTYPE,SOILTYPE,SLOPETYPE,SOILCOLOR,CROPTYPE,parameters)

USE NOAHMP_TABLES
USE MODULE_SF_NOAHMPLSM

implicit none

INTEGER, INTENT(IN) :: NSOIL
INTEGER, INTENT(IN) :: VEGTYPE
INTEGER, INTENT(IN) :: SOILTYPE(4)
INTEGER, INTENT(IN) :: SOILTYPE(NSOIL)
INTEGER, INTENT(IN) :: SLOPETYPE
INTEGER, INTENT(IN) :: SOILCOLOR
INTEGER, INTENT(IN) :: CROPTYPE
Expand Down
52 changes: 24 additions & 28 deletions src/module_sf_noahmplsm.F
Original file line number Diff line number Diff line change
Expand Up @@ -584,9 +584,9 @@ SUBROUTINE NOAHMP_SFLX (parameters, &
REAL, INTENT(INOUT) :: DEEPRECH !recharge to or from the water table when deep [m]
REAL, INTENT(INOUT) :: RECH !recharge to or from the water table when shallow [m] (diagnostic)
REAL , INTENT(INOUT) :: ACC_SSOIL !ground heat flux (w/m2) [+ to soil]
REAL , INTENT(INOUT) :: ACC_QINSUR !water input on soil surface [m/s]
REAL , INTENT(INOUT) :: ACC_QSEVA !soil surface evap rate [mm/s]
REAL, DIMENSION( 1:NSOIL), INTENT(INOUT) :: ACC_ETRANI !transpiration rate (mm/s) [+]
REAL , INTENT(INOUT) :: ACC_QINSUR !water input on soil surface [m/s * soil_dt/main_dt]
REAL , INTENT(INOUT) :: ACC_QSEVA !soil surface evap rate [m/s * soil_dt/main_dt]
REAL, DIMENSION( 1:NSOIL), INTENT(INOUT) :: ACC_ETRANI !transpiration rate (m/s * soil_dt/main_dt) [+]
REAL, DIMENSION(-NSNOW+1:NSOIL), INTENT( OUT) :: HCPCT !heat capacity [j/m3/k]
REAL , INTENT( OUT) :: EFLXB !energy influx from soil bottom (w/m2)
REAL , INTENT(INOUT) :: ACC_DWATER !accumulated water change for canopy, snow, soil mm/timestep(soil)
Expand Down Expand Up @@ -3370,13 +3370,15 @@ SUBROUTINE TWOSTREAM (parameters,IB ,IC ,VEGTYP ,COSZ ,VAI , & !

! output

REAL, DIMENSION(1:2), INTENT(OUT) :: FAB !flux abs by veg layer (per unit incoming flux)
REAL, DIMENSION(1:2), INTENT(OUT) :: FRE !flux refl above veg layer (per unit incoming flux)
REAL, DIMENSION(1:2), INTENT(OUT) :: FTD !down dir flux below veg layer (per unit in flux)
REAL, DIMENSION(1:2), INTENT(OUT) :: FTI !down dif flux below veg layer (per unit in flux)
REAL, INTENT(OUT) :: GDIR !projected leaf+stem area in solar direction
REAL, DIMENSION(1:2), INTENT(OUT) :: FREV !flux reflected by veg layer (per unit incoming flux)
REAL, DIMENSION(1:2), INTENT(OUT) :: FREG !flux reflected by ground (per unit incoming flux)
REAL, DIMENSION(1:2), INTENT(INOUT) :: FAB !flux abs by veg layer (per unit incoming flux)
REAL, DIMENSION(1:2), INTENT(INOUT) :: FRE !flux refl above veg layer (per unit incoming flux)
REAL, DIMENSION(1:2), INTENT(INOUT) :: FTD !down dir flux below veg layer (per unit in flux)
REAL, DIMENSION(1:2), INTENT(INOUT) :: FTI !down dif flux below veg layer (per unit in flux)
REAL, INTENT(INOUT) :: GDIR !projected leaf+stem area in solar direction
REAL, DIMENSION(1:2), INTENT(INOUT) :: FREV !flux reflected by veg layer (per unit incoming flux)
REAL, DIMENSION(1:2), INTENT(INOUT) :: FREG !flux reflected by ground (per unit incoming flux)
REAL, INTENT(INOUT) :: BGAP !between canopy gap fraction for beam (-)
REAL, INTENT(INOUT) :: WGAP !within canopy gap fraction for beam (-)

! local
REAL :: OMEGA !fraction of intercepted radiation that is scattered
Expand All @@ -3387,7 +3389,6 @@ SUBROUTINE TWOSTREAM (parameters,IB ,IC ,VEGTYP ,COSZ ,VAI , & !
REAL :: BETADL !betad for leaves
REAL :: EXT !optical depth of direct beam per unit leaf area
REAL :: AVMU !average diffuse optical depth

REAL :: COSZI !0.001 <= cosz <= 1.000
REAL :: ASU !single scattering albedo
REAL :: CHIL ! -0.4 <= xl <= 0.6
Expand All @@ -3406,17 +3407,12 @@ SUBROUTINE TWOSTREAM (parameters,IB ,IC ,VEGTYP ,COSZ ,VAI , & !

! variables for the modified two-stream scheme
! Niu and Yang (2004), JGR

REAL, PARAMETER :: PAI = 3.14159265
REAL :: HD !crown depth (m)
REAL :: BB !vertical crown radius (m)
REAL :: THETAP !angle conversion from SZA
REAL :: FA !foliage volume density (m-1)
REAL :: NEWVAI !effective LSAI (-)

REAL,INTENT(INOUT) :: BGAP !between canopy gap fraction for beam (-)
REAL,INTENT(INOUT) :: WGAP !within canopy gap fraction for beam (-)

REAL :: KOPEN !gap fraction for diffue light (-)
REAL :: GAP !total gap fraction for beam ( <=1-shafac )

Expand Down Expand Up @@ -6062,9 +6058,9 @@ SUBROUTINE WATER (parameters,VEGTYP ,NSNOW ,NSOIL ,IMELT ,DT ,UU , &
REAL, INTENT(OUT) :: QSUBC !sublimation rate (mm/s)
REAL, INTENT(OUT) :: QMELTC !melting rate of canopy snow (mm/s)
REAL, INTENT(OUT) :: QFRZC !refreezing rate of canopy liquid water (mm/s)
REAL, INTENT(INOUT) :: ACC_QINSUR !water input on soil surface [m/s]
REAL, INTENT(INOUT) :: ACC_QSEVA !soil surface evap rate [mm/s]
REAL, DIMENSION( 1:NSOIL) , INTENT(INOUT):: ACC_ETRANI !transpiration rate (mm/s) [+]
REAL, INTENT(INOUT) :: ACC_QINSUR !water input on soil surface [m/s * soil_dt/main_dt]
REAL, INTENT(INOUT) :: ACC_QSEVA !soil surface evap rate [m/s * soil_dt/main_dt]
REAL, DIMENSION( 1:NSOIL) , INTENT(INOUT):: ACC_ETRANI !transpiration rate (m/s * soil_dt/main_dt) [+]

! irrigation
REAL, INTENT(IN) :: IRRFRA ! irrigation fraction
Expand All @@ -6079,11 +6075,11 @@ SUBROUTINE WATER (parameters,VEGTYP ,NSNOW ,NSOIL ,IMELT ,DT ,UU , &
! local
INTEGER :: IZ
REAL :: QINSUR !water input on soil surface [m/s]
REAL :: QSEVA !soil surface evap rate [mm/s]
REAL :: QSEVA !soil surface evap rate [m/s]
REAL :: QSDEW !soil surface dew rate [mm/s]
REAL :: QSNFRO !snow surface frost rate[mm/s]
REAL :: QSNSUB !snow surface sublimation rate [mm/s]
REAL, DIMENSION( 1:NSOIL) :: ETRANI !transpiration rate (mm/s) [+]
REAL, DIMENSION( 1:NSOIL) :: ETRANI !transpiration rate (m/s) [+]
REAL, DIMENSION( 1:NSOIL) :: WCND !hydraulic conductivity (m/s)
REAL :: QDRAIN !soil-bottom free drainage [mm/s]
REAL :: SNOFLOW !glacier flow [mm/s]
Expand Down Expand Up @@ -6669,7 +6665,7 @@ SUBROUTINE COMBINE (parameters,NSNOW ,NSOIL ,ILOC ,JLOC , & !in
ELSE ! SNICE OVER-SUBLIMATED EARLIER
PONDING1 = SNLIQ(J) + SNICE(J)
IF(PONDING1 < 0.0) THEN ! IF SNICE AND SNLIQ SUBLIMATES REMOVE FROM SOIL
SICE(1) = MAX(0.0,SICE(1)+PONDING1/(DZSNSO(1)*1000.0))
SICE(1) = SICE(1)+PONDING1/(DZSNSO(1)*1000.0) ! negative SICE due to oversublimation is adjusted below
PONDING1 = 0.0
END IF
SNEQV = 0.0
Expand Down Expand Up @@ -7253,10 +7249,10 @@ SUBROUTINE SOILWATER (parameters,NSOIL ,NSNOW ,DT ,ZSOIL ,DZSNSO , & !in
INTEGER, INTENT(IN) :: NSOIL !no. of soil layers
INTEGER, INTENT(IN) :: NSNOW !maximum no. of snow layers
REAL, INTENT(IN) :: DT !time step (sec)
REAL, INTENT(IN) :: QINSUR !water input on soil surface [mm/s]
REAL, INTENT(IN) :: QSEVA !evap from soil surface [mm/s]
REAL, INTENT(IN) :: QINSUR !water input on soil surface [m/s]
REAL, INTENT(IN) :: QSEVA !evap from soil surface [m/s]
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ZSOIL !depth of soil layer-bottom [m]
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ETRANI !evapotranspiration from soil layers [mm/s]
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ETRANI !evapotranspiration from soil layers [m/s]
REAL, DIMENSION(-NSNOW+1:NSOIL), INTENT(IN) :: DZSNSO !snow/soil layer depth [m]
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SICE !soil ice content [m3/m3]
REAL, INTENT(IN) :: DX
Expand Down Expand Up @@ -7731,9 +7727,9 @@ SUBROUTINE SRT (parameters,NSOIL ,ZSOIL ,DT ,PDDUM ,ETRANI , & !in
INTEGER, INTENT(IN) :: NSOIL
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ZSOIL
REAL, INTENT(IN) :: DT
REAL, INTENT(IN) :: PDDUM
REAL, INTENT(IN) :: QSEVA
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ETRANI
REAL, INTENT(IN) :: PDDUM !m/s
REAL, INTENT(IN) :: QSEVA !m/s
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ETRANI !m/s
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SH2O
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SMC
REAL, INTENT(IN) :: ZWT ! water table depth [m]
Expand Down