diff --git a/phys/module_surface_driver.F b/phys/module_surface_driver.F index 1f3f74da07..5919478453 100644 --- a/phys/module_surface_driver.F +++ b/phys/module_surface_driver.F @@ -1185,7 +1185,8 @@ SUBROUTINE surface_driver( & CPM, & CHS2, & CQS2 - +! CTSM local variable + REAL, DIMENSION( ims:ime , jms:jme ) :: xland_ctsm ! SSIB local variables REAL ZDIFF REAL, DIMENSION( ims:ime , jms:jme ) :: XICE_save @@ -3895,6 +3896,19 @@ SUBROUTINE surface_driver( & !------------------------------------------------------------------ + !For WRF-CTSM simulations, we would like the land model (CTSM) + ! to handle inland lake points. + ! Here, we are making ctsm_xland to include lake points, so that + ! CTSM can handle it. + DO j=j_start(ij),j_end(ij) + DO i=i_start(ij),i_end(ij) + xland_ctsm (i,j) = xland (i,j) + IF (lakemask(i,j).EQ.1.) THEN + xland_ctsm (i,j) = 1 + ENDIF + ENDDO + ENDDO + IF ( FRACTIONAL_SEAICE == 1) THEN ! The fields passed to LSM need to represent the full ice values, not ! the fractional values. Convert ALBEDO and EMISS from the blended value @@ -3942,7 +3956,7 @@ SUBROUTINE surface_driver( & ! general information dt = dt, & - xland = xland, & + xland = xland_ctsm, & xice = xice, & xice_threshold = xice_threshold, & @@ -4045,6 +4059,17 @@ SUBROUTINE surface_driver( & ENDIF + DO j=j_start(ij),j_end(ij) + DO i=i_start(ij),i_end(ij) + CHKLOWQ(I,J)= 1.0 + SFCEVP(I,J)= SFCEVP(I,J) + QFX(I,J)*DTBL + !SFCEXC(I,J)= CHS(I,J) + IF(PRESENT(ACHFX))ACHFX(I,J)=ACHFX(I,J) + HFX(I,J)*DT + IF(PRESENT(ACLHF))ACLHF(I,J)=ACLHF(I,J) + LH(I,J)*DT + IF(PRESENT(ACGRDFLX))ACGRDFLX(I,J)=ACGRDFLX(I,J) + GRDFLX(I,J)*DT + ENDDO + ENDDO + #endif CASE (SSIBSCHEME) diff --git a/share/module_soil_pre.F b/share/module_soil_pre.F index ae1613b0d2..2f7921b40a 100644 --- a/share/module_soil_pre.F +++ b/share/module_soil_pre.F @@ -224,7 +224,12 @@ SUBROUTINE adjust_for_seaice_post ( xice , landmask , tsk_old , tsk , ivgtyp , v CASE ( SLABSCHEME ) +#ifdef WRF_USE_CTSM + CASE ( LSMSCHEME , NOAHMPSCHEME , CLMSCHEME, CTSMSCHEME, SSIBSCHEME ) !mchen add for ssib +#else CASE ( LSMSCHEME , NOAHMPSCHEME , CLMSCHEME, SSIBSCHEME ) !mchen add for ssib +#endif + DO j = jts , MIN(jde-1,jte) DO i = its , MIN(ide-1,ite) IF ( skip_middle_points_t ( ids , ide , jds , jde , i , j , em_width , hold_ups ) ) CYCLE