!
!NCEP_MESO:MODEL_LAYER: RADIATION
!
!***********************************************************************
SUBROUTINE RADIATION(NTSD,DT,JULDAY,JULYR,IHRST,NPHS,GLAT,GLON & 1,7
& ,NRADS,NRADL &
& ,DETA1,DETA2,AETA1,AETA2,ETA1,ETA2,PDTOP,PT &
& ,PD,RES,PINT,T,Q,CWM,THS,ALBEDO,EPSR &
! & ,SM,HBM2,LMH,ZERO_3D,N_MOIST,LTOP,RESTRT &
& ,SM,HBM2,LMH,ZERO_3D,WATER,N_MOIST,LTOP3,RESTRT &
& ,RLWTT,RSWTT,RLWIN,RSWIN,RSWOUT &
& ,TOTSWDN,TOTLWDN,RLWTOA,RSWTOA,CZMEAN &
& ,CFRACL,CFRACM,CFRACH,SIGT4 &
& ,ACFRST,NCFRST,ACFRCV,NCFRCV &
& ,CUPPT,VEGFRC,SNOW,HTOP,HBOT &
& ,CONFIG_FLAGS &
& ,IDS,IDE,JDS,JDE,KDS,KDE &
& ,IMS,IME,JMS,JME,KMS,KME &
& ,ITS,ITE,JTS,JTE,KTS,KTE)
!***********************************************************************
!$$$ SUBPROGRAM DOCUMENTATION BLOCK
! . . .
! SUBPROGRAM: RADIATION RADIATION OUTER DRIVER
! PRGRMMR: BLACK ORG: W/NP22 DATE: 2002-06-04
!
! ABSTRACT:
! RADIATION SERVES AS THE INTERFACE BETWEEN THE NCEP NONHYDROSTATIC
! MESOSCALE MODEL AND THE WRF RADIATION DRIVER.
!
! PROGRAM HISTORY LOG:
! 02-06-04 BLACK - ORIGINATOR
! 02-09-09 WOLFE - CONVERTING TO GLOBAL INDEXING
!
! USAGE: CALL RADIATION FROM SOLVE_RUNSTREAM
!
! ATTRIBUTES:
! LANGUAGE: FORTRAN 90
! MACHINE : IBM SP
!$$$
!-----------------------------------------------------------------------
USE MODULE_CONFIGURE
USE MODULE_STATE_DESCRIPTION
,ONLY : P_QV,P_QC
USE module_model_constants
USE MODULE_MPP
USE MODULE_RA_GFDLETA
USE module_radiation_driver
!-----------------------------------------------------------------------
!
IMPLICIT NONE
!
!-----------------------------------------------------------------------
!
INTEGER,INTENT(IN) :: IDS,IDE,JDS,JDE,KDS,KDE &
& ,IMS,IME,JMS,JME,KMS,KME &
& ,ITS,ITE,JTS,JTE,KTS,KTE &
& ,IHRST,JULDAY,JULYR &
& ,N_MOIST,NPHS,NRADL,NRADS,NTSD
!
! INTEGER,DIMENSION(3),INTENT(IN) :: LTOP
INTEGER,DIMENSION(3),INTENT(IN) :: LTOP3
!
INTEGER,DIMENSION(IMS:IME,JMS:JME),INTENT(INOUT) :: NCFRCV,NCFRST
!
REAL,INTENT(IN) :: DT,PDTOP,PT
!
INTEGER,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: LMH
!
REAL,DIMENSION(KMS:KME-1),INTENT(IN) :: AETA1,AETA2,DETA1,DETA2
!
REAL,DIMENSION(KMS:KME),INTENT(IN) :: ETA1,ETA2
!
REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(INOUT) :: CUPPT
REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: ALBEDO &
& ,EPSR,GLAT,GLON &
& ,HBM2,PD,RES,SM &
& ,SNOW,THS,VEGFRC
!
REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(INOUT) :: CWM,Q,T
!
REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(INOUT) :: ACFRCV,ACFRST &
& ,HBOT,HTOP &
& ,RLWIN,RLWTOA &
& ,RSWIN,RSWOUT &
& ,RSWTOA
!
REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(OUT) :: CFRACH,CFRACL &
& ,CFRACM,CZMEAN &
& ,SIGT4 &
& ,TOTLWDN,TOTSWDN
!
REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(INOUT) :: RLWTT &
& ,RSWTT
!
REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(INOUT) :: PINT &
& ,ZERO_3D
REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME,N_MOIST), INTENT(INOUT) :: WATER
!
LOGICAL,INTENT(IN) :: RESTRT
!
TYPE(GRID_CONFIG_REC_TYPE),INTENT(IN) :: CONFIG_FLAGS
!
!-----------------------------------------------------------------------
!***
!*** LOCAL VARIABLES
!***
!-----------------------------------------------------------------------
INTEGER :: I,ICLOUD,J,K,KMNTH,LMHIJ,NRAD
!
INTEGER,DIMENSION(12) :: MONTH=(/31,28,31,30,31,30,31,31 &
& ,30,31,30,31/)
!
REAL :: CAPA,DPL,GMT,PDSL,PLYR,PSFC,RADT
!
REAL,DIMENSION(KMS:KME-1) :: QL,TL
!
REAL,DIMENSION(IMS:IME,JMS:JME) :: GLW,REXNSFC,SWNETDN,TSFC &
& ,XLAND,XLAT,XLON
!
REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME) :: DZ,P8W,P_PHY,PI_PHY &
& ,RR,THRATEN &
& ,THRATENLW,THRATENSW &
& ,TH_PHY,T_PHY
!
!
LOGICAL :: WARM_RAIN
!
!-----------------------------------------------------------------------
!-----------------------------------------------------------------------
!*****
!***** NOTE: THIS IS HARDWIRED FOR CALLS TO LONGWAVE AND SHORTWAVE
!***** AT EQUAL INTERVALS
!*****
NRAD=NRADS
!-----------------------------------------------------------------------
!-----------------------------------------------------------------------
MYIS1=MAX(IDS+1,ITS)
MYIE1=MIN(IDE-1,ITE)
MYJS2=MAX(JDS+2,JTS)
MYJE2=MIN(JDE-2,JTE)
!-----------------------------------------------------------------------
CAPA=R_D/CP
!-----------------------------------------------------------------------
!
DO J=MYJS2,MYJE2
DO I=MYIS1,MYIE1
!
PDSL=PD(I,J)*RES(I,J)
P8W(I,KTE+1,J)=PT
XLAT(I,J)=GLAT(I,J)/DEGRAD
XLON(I,J)=GLON(I,J)/DEGRAD
XLAND(I,J)=SM(I,J)+1.
PSFC=PD(I,J)+PDTOP+PT
REXNSFC(I,J)=(PSFC*1.E-5)**CAPA
TSFC(I,J)=THS(I,J)*REXNSFC(I,J)
P8W(I,KTS,J)=ETA1(KTS)*PDTOP+ETA2(KTS)*PDSL+PT
!
!*** FILL THE SINGLE-COLUMN INPUT
!
DO K=KTS,KTE
DPL=DETA1(K)*PDTOP+DETA2(K)*PDSL
QL(K)=AMAX1(Q(I,K,J),EPSQ)
PLYR=AETA1(K)*PDTOP+AETA2(K)*PDSL+PT
TL(K)=T(I,K,J)
!
RR(I,K,J)=PLYR/(R_D*TL(K)*(1.+P608*QL(K)))
T_PHY(I,K,J)=TL(K)
WATER(I,K,J,P_QV)=QL(K)/(1.-QL(K))
WATER(I,K,J,P_QC)=CWM(I,K,J)
TH_PHY(I,K,J)=TL(K)*(1.E5/PLYR)**CAPA
P8W(I,K+1,J)=ETA1(K+1)*PDTOP+ETA2(K+1)*PDSL+PT
P_PHY(I,K,J)=PLYR
PI_PHY(I,K,J)=(PLYR*1.E-5)**CAPA
DZ(I,K,J)=TL(K)*(P608*QL(K)+1.)*R_D &
& *(P8W(I,K,J)-P8W(I,K+1,J)) &
& /(P_PHY(I,K,J)*G)
!!! & *ALOG(P8W(I,KFLIP,J)/P8W(I,KFLIP+1,J))/G &
!!! & *ALOG(PINT(I,K+1,J)/PINT(I,K,J))/G &
!
THRATEN(I,K,J)=0.
THRATENLW(I,K,J)=0.
THRATENSW(I,K,J)=0.
ENDDO
!
ENDDO
ENDDO
!
RADT=999.
ICLOUD=999
!
GMT=REAL(IHRST)
!
!-----------------------------------------------------------------------
!
!*** CALL THE INNER DRIVER.
!
!-----------------------------------------------------------------------
!
CFRACH = 0.
CFRACL = 0.
CFRACM = 0.
CZMEAN = 0.
SIGT4 = 0.
TOTLWDN =0.
TOTSWDN =0.
SWNETDN =0.
CALL RADIATION_DRIVER
(NTSD,DT &
& ,THRATENLW,THRATENSW,THRATEN &
& ,GLW,SWNETDN &
& ,XLAT,XLON,ALBEDO,ZERO_3D,EPSR &
& ,RR,WATER,N_MOIST &
& ,P8W,P_PHY,ZERO_3D,PI_PHY,DZ,T_PHY,ZERO_3D &
& ,GMT,JULDAY,CONFIG_FLAGS,RADT &
& ,NRAD & !Modified
& ,ICLOUD,ZERO_3D,ZERO_3D,WARM_RAIN &
& ,XLAND,TSFC,HTOP,HBOT,CUPPT,VEGFRC,SNOW &
& ,JULYR &
! & ,LTOP=LTOP, NPHS=NPHS &
& ,NPHS &
& ,TOTSWDN ,TOTLWDN &
& ,RSWTOA ,RLWTOA &
& ,CZMEAN ,CFRACL &
& ,CFRACM ,CFRACH &
& ,ACFRST ,NCFRST &
& ,ACFRCV ,NCFRCV &
& ,IDS,IDE,JDS,JDE,KDS,KDE &
& ,IMS,IME,JMS,JME,KMS,KME &
& ,MYIS1,MYIE1,MYJS2,MYJE2,KTS,KTE )
!
!-----------------------------------------------------------------------
!
!*** UPDATE FLUXES AND TEMPERATURE TENDENCIES.
!
!-----------------------------------------------------------------------
!*** SHORTWAVE
!-----------------------------------------------------------------------
!
IF(MOD(NTSD,NRADS).EQ.0)THEN
!
DO J=MYJS2,MYJE2
DO I=MYIS1,MYIE1
!
IF(HBM2(I,J).GT.0.5)THEN
!
RSWIN(I,J)=TOTSWDN(I,J)
RSWOUT(I,J)=TOTSWDN(I,J)-SWNETDN(I,J)
!
DO K=KTS,KTE
RSWTT(I,K,J)=THRATENSW(I,K,J)*PI_PHY(I,K,J)
ENDDO
!
ENDIF
!
ENDDO
ENDDO
!
ENDIF
!
!-----------------------------------------------------------------------
!*** LONGWAVE
!-----------------------------------------------------------------------
!
IF(MOD(NTSD,NRADL).EQ.0)THEN
!
DO J=MYJS2,MYJE2
DO I=MYIS1,MYIE1
!
IF(HBM2(I,J).GT.0.5)THEN
LMHIJ=KTE+1-LMH(I,J)
SIGT4(I,J)=STBOLT*T(I,LMHIJ,J)**4
DO K=KTS,KTE
RLWTT(I,K,J)=THRATENLW(I,K,J)*PI_PHY(I,K,J)
ENDDO
RLWIN(I,J)=TOTLWDN(I,J)
ENDIF
!
ENDDO
ENDDO
!
ENDIF
!-----------------------------------------------------------------------
!
END SUBROUTINE RADIATION
!
!-----------------------------------------------------------------------