GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: phylmd/rrtm/lwbv.F90 Lines: 0 25 0.0 %
Date: 2023-06-30 12:56:34 Branches: 0 14 0.0 %

Line Branch Exec Source
1
SUBROUTINE LWBV &
2
 & ( KIDIA, KFDIA, KLON , KLEV  , KMODE,&
3
 & PDT0 , PEMIS, PEMIW,&
4
 & PTL  , PTAVE,&
5
 & PEMIT, PFLUC,&
6
 & PABCU, PBINT, PBSUI, PCNTRB &
7
 & )
8
9
!**** *LWBV*   - COMPUTE PLANCK FUNC., PERF. VERT. INTEGRATION
10
11
!     PURPOSE.
12
!     --------
13
!           TO COMPUTE THE PLANCK FUNCTION AND PERFORM THE
14
!           VERTICAL INTEGRATION. SPLIT OUT FROM LW FOR MEMORY
15
!           SAVING
16
17
!**   INTERFACE.
18
!     ----------
19
20
!        *LWVB* IS CALLED FROM *LW*
21
22
!        EXPLICIT ARGUMENTS :
23
!        --------------------
24
! PDT0   : (KLON)            ; SURFACE TEMPERATURE DISCONTINUITY
25
! PEMIS  : (KLON)            ; SURFACE LW EMISSIVITY
26
! PEMIW  : (KLON)            ; SURFACE LW WINDOW EMISSIVITY
27
! PTAVE  : (KLON,KLEV)       ; TEMPERATURE
28
! PTL    : (KLON,KLEV+1)     ; HALF LEVEL TEMPERATURE
29
!     ==== OUTPUTS ===
30
! PABCU  :
31
! PBINT  :
32
! PBSUI  :
33
! PCNTRB :
34
! PCOLC  :
35
! PEMIT  :
36
! PFLUC  :
37
38
!        IMPLICIT ARGUMENTS :   NONE
39
!        --------------------
40
41
!     METHOD.
42
!     -------
43
44
!          1. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE
45
!     GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS.
46
!          2. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON-
47
!     TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE
48
!     BOUNDARIES.
49
!          3. COMPUTES THE CLEAR-SKY COOLING RATES.
50
51
!     EXTERNALS.
52
!     ----------
53
54
!          *LWB*, *LWV*
55
56
!     REFERENCE.
57
!     ----------
58
59
!        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
60
!        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
61
62
!     AUTHOR.
63
!     -------
64
!        JEAN-JACQUES MORCRETTE  *ECMWF*
65
66
!     MODIFICATIONS.
67
!     --------------
68
!        ORIGINAL : 89-07-14
69
!        MODIFICATION : 93-10-15 M.HAMRUD (SPLIT OUT FROM LW TO SAVE
70
!                                          MEMORY)
71
!        M.Hamrud      01-Oct-2003 CY28 Cleaning
72
!-----------------------------------------------------------------------
73
74
USE PARKIND1  ,ONLY : JPIM     ,JPRB
75
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
76
77
USE YOELW    , ONLY : NSIL     ,NIPD     ,NUA
78
USE YOERDU   , ONLY : NUAER    ,NTRAER
79
80
IMPLICIT NONE
81
82
INTEGER(KIND=JPIM),INTENT(IN)    :: KLON
83
INTEGER(KIND=JPIM),INTENT(IN)    :: KLEV
84
INTEGER(KIND=JPIM),INTENT(IN)    :: KIDIA
85
INTEGER(KIND=JPIM),INTENT(IN)    :: KFDIA
86
INTEGER(KIND=JPIM),INTENT(IN)    :: KMODE
87
REAL(KIND=JPRB)   ,INTENT(IN)    :: PDT0(KLON)
88
REAL(KIND=JPRB)   ,INTENT(IN)    :: PEMIS(KLON)
89
REAL(KIND=JPRB)   ,INTENT(IN)    :: PEMIW(KLON)
90
REAL(KIND=JPRB)   ,INTENT(IN)    :: PTL(KLON,KLEV+1)
91
REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAVE(KLON,KLEV)
92
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PEMIT(KLON)
93
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PFLUC(KLON,2,KLEV+1)
94
REAL(KIND=JPRB)   ,INTENT(IN)    :: PABCU(KLON,NUA,3*KLEV+1)
95
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PBINT(KLON,KLEV+1)
96
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PBSUI(KLON)
97
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PCNTRB(KLON,KLEV+1,KLEV+1)
98
!-----------------------------------------------------------------------
99
100
!*       0.1   ARGUMENTS
101
!              ---------
102
103
!-------------------------------------------------------------------------
104
105
!              ------------
106
REAL(KIND=JPRB) ::&
107
 & ZB(KLON,NSIL,KLEV+1), ZBSUR(KLON,NSIL)   , ZBTOP(KLON,NSIL)&
108
 & ,  ZDBSL(KLON,NSIL,KLEV*2)&
109
 & ,  ZGA(KLON,NIPD,2,KLEV)  , ZGB(KLON,NIPD,2,KLEV)&
110
 & ,  ZGASUR(KLON,NIPD,2)    , ZGBSUR(KLON,NIPD,2)&
111
 & ,  ZGATOP(KLON,NIPD,2)    , ZGBTOP(KLON,NIPD,2)
112
113
INTEGER(KIND=JPIM) :: JL, JLW
114
REAL(KIND=JPRB) :: ZHOOK_HANDLE
115
116
#include "lwb.intfb.h"
117
#include "lwv.intfb.h"
118
119
!     ------------------------------------------------------------------
120
121
!*         2.    COMPUTES PLANCK FUNCTIONS
122
!                -------------------------
123
124
IF (LHOOK) CALL DR_HOOK('LWBV',0,ZHOOK_HANDLE)
125
print *,'LWBV: avant LWB'
126
CALL LWB &
127
 & ( KIDIA, KFDIA, KLON  , KLEV  , KMODE,&
128
 & PDT0 , PTAVE, PTL,&
129
 & ZB   , PBINT, ZBSUR , ZBTOP , ZDBSL,&
130
 & ZGA  , ZGB  , ZGASUR, ZGBSUR, ZGATOP, ZGBTOP    &
131
 & )
132
133
!     ------------------------------------------------------------------
134
135
!*         3.    PERFORMS THE VERTICAL INTEGRATION
136
!                ---------------------------------
137
138
CALL LWV &
139
 & ( KIDIA , KFDIA, KLON  , KLEV,&
140
 & NUAER , NTRAER,&
141
 & PABCU , ZB   , PBINT , ZBSUR , ZBTOP , ZDBSL,&
142
 & PEMIS , PEMIW,&
143
 & ZGA   , ZGB  , ZGASUR, ZGBSUR, ZGATOP, ZGBTOP,&
144
 & PCNTRB, PFLUC &
145
 & )
146
147
DO JL=KIDIA,KFDIA
148
  PEMIT(JL)=0.0_JPRB
149
  PBSUI(JL)=0.0_JPRB
150
ENDDO
151
DO JLW=1,NSIL
152
  DO JL=KIDIA,KFDIA
153
    PBSUI(JL)=PBSUI(JL)+ZBSUR(JL,JLW)
154
    IF (JLW >= 3.AND. JLW <= 4) THEN
155
      PEMIT(JL)=PEMIT(JL)+ZBSUR(JL,JLW)*PEMIW(JL)
156
    ELSE
157
      PEMIT(JL)=PEMIT(JL)+ZBSUR(JL,JLW)*PEMIS(JL)
158
    ENDIF
159
  ENDDO
160
ENDDO
161
DO JL=KIDIA,KFDIA
162
  PEMIT(JL)=PEMIT(JL)/PBSUI(JL)
163
ENDDO
164
165
!     ------------------------------------------------------------------
166
167
IF (LHOOK) CALL DR_HOOK('LWBV',1,ZHOOK_HANDLE)
168
END SUBROUTINE LWBV