GCC Code Coverage Report


Directory: ./
File: rad/rrtm_taumol12.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 26 26 100.0%
Branches: 12 14 85.7%

Line Branch Exec Source
1 !----------------------------------------------------------------------------
2 119280 SUBROUTINE RRTM_TAUMOL12 (KLEV,P_TAU,&
3 & P_TAUAERL,P_FAC00,P_FAC01,P_FAC10,P_FAC11,K_JP,K_JT,K_JT1,P_ONEMINUS,&
4 & P_COLH2O,P_COLCO2,K_LAYTROP,P_SELFFAC,P_SELFFRAC,K_INDSELF,PFRAC)
5
6 ! BAND 12: 1800-2080 cm-1 (low - H2O,CO2; high - nothing)
7
8 ! Modifications
9 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
10
11 ! D Salmond 2000-05-15 speed-up
12 ! JJMorcrette 2000-05-17 speed-up
13
14 USE PARKIND1 ,ONLY : JPIM ,JPRB
15 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
16
17 USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,NG12 ,NGS11
18 USE YOERRTWN , ONLY : NSPA
19 USE YOERRTA12, ONLY : ABSA ,FRACREFA,SELFREF,STRRAT
20
21 ! Input
22 !#include "yoeratm.h"
23
24 ! REAL TAUAER(JPLAY)
25
26 IMPLICIT NONE
27
28 ! Output
29 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
30 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAU(JPGPT,JPLAY)
31 REAL(KIND=JPRB) ,INTENT(IN) :: P_TAUAERL(JPLAY,JPBAND)
32 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
33 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
34 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
35 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
36 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
37 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
38 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
39 REAL(KIND=JPRB) ,INTENT(IN) :: P_ONEMINUS
40 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
41 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLCO2(JPLAY)
42 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
43 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(JPLAY)
44 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(JPLAY)
45 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(JPLAY)
46 REAL(KIND=JPRB) ,INTENT(OUT) :: PFRAC(JPGPT,JPLAY)
47 !- from AER
48 !- from INTFAC
49 !- from INTIND
50 !- from PRECISE
51 !- from PROFDATA
52 !- from SELF
53 !- from SP
54 INTEGER(KIND=JPIM) :: IJS(JPLAY)
55 REAL(KIND=JPRB) :: ZFS(JPLAY),Z_SPECCOMB(JPLAY)
56 INTEGER(KIND=JPIM) :: IND0(JPLAY),IND1(JPLAY),INDS(JPLAY)
57
58 INTEGER(KIND=JPIM) :: IG, JS, I_LAY
59
60 REAL(KIND=JPRB) :: Z_FAC000, Z_FAC001, Z_FAC010, Z_FAC011, Z_FAC100, Z_FAC101,&
61 & Z_FAC110, Z_FAC111, Z_FS, Z_SPECMULT, Z_SPECPARM
62 REAL(KIND=JPRB) :: ZHOOK_HANDLE
63
64 ! EQUIVALENCE (TAUAERL(1,12),TAUAER)
65
66 ! Compute the optical depth by interpolating in ln(pressure),
67 ! temperature, and appropriate species. Below LAYTROP, the water
68 ! vapor self-continuum is interpolated (in temperature) separately.
69
1/2
✓ Branch 0 taken 119280 times.
✗ Branch 1 not taken.
119280 IF (LHOOK) CALL DR_HOOK('RRTM_TAUMOL12',0,ZHOOK_HANDLE)
70
2/2
✓ Branch 0 taken 2504880 times.
✓ Branch 1 taken 119280 times.
2624160 DO I_LAY = 1, K_LAYTROP
71 2504880 Z_SPECCOMB(I_LAY) = P_COLH2O(I_LAY) + STRRAT*P_COLCO2(I_LAY)
72 2504880 Z_SPECPARM = P_COLH2O(I_LAY)/Z_SPECCOMB(I_LAY)
73 2504880 Z_SPECPARM=MIN(P_ONEMINUS,Z_SPECPARM)
74 2504880 Z_SPECMULT = 8._JPRB*(Z_SPECPARM)
75 2504880 JS = 1 + INT(Z_SPECMULT)
76 2504880 Z_FS = MOD(Z_SPECMULT,1.0_JPRB)
77 2504880 IND0(I_LAY) = ((K_JP(I_LAY)-1)*5+(K_JT(I_LAY)-1))*NSPA(12) + JS
78 2504880 IND1(I_LAY) = (K_JP(I_LAY)*5+(K_JT1(I_LAY)-1))*NSPA(12) + JS
79 2504880 INDS(I_LAY) = K_INDSELF(I_LAY)
80
81 2504880 ZFS(I_LAY)=Z_FS
82 2624160 IJS(I_LAY)=JS
83
84 ENDDO
85
86 !-- DS_000515
87
2/2
✓ Branch 0 taken 954240 times.
✓ Branch 1 taken 119280 times.
1073520 DO IG = 1, NG12
88
2/2
✓ Branch 0 taken 20039040 times.
✓ Branch 1 taken 954240 times.
21112560 DO I_LAY = 1, K_LAYTROP
89 !-- DS_000515
90
91 20039040 Z_FS=ZFS(I_LAY)
92 20039040 JS=IJS(I_LAY)
93
94 !----jjm
95 ! FAC000 = (_ONE_ - FS) * FAC00(LAY)
96 ! FAC010 = (_ONE_ - FS) * FAC10(LAY)
97 ! FAC100 = FS * FAC00(LAY)
98 ! FAC110 = FS * FAC10(LAY)
99 ! FAC001 = (_ONE_ - FS) * FAC01(LAY)
100 ! FAC011 = (_ONE_ - FS) * FAC11(LAY)
101 ! FAC101 = FS * FAC01(LAY)
102 ! FAC111 = FS * FAC11(LAY)
103 !----
104 P_TAU (NGS11+IG,I_LAY) = Z_SPECCOMB(I_LAY) *&
105 !-- DS_000515
106 ! &(Z_FAC000 * ABSA(IND0(I_LAY) ,IG) +&
107 ! & Z_FAC100 * ABSA(IND0(I_LAY)+ 1,IG) +&
108 ! & Z_FAC010 * ABSA(IND0(I_LAY)+ 9,IG) +&
109 ! & Z_FAC110 * ABSA(IND0(I_LAY)+10,IG) +&
110 ! & Z_FAC001 * ABSA(IND1(I_LAY) ,IG) +&
111 ! & Z_FAC101 * ABSA(IND1(I_LAY) +1,IG) +&
112 ! & Z_FAC011 * ABSA(IND1(I_LAY) +9,IG) +&
113 ! & Z_FAC111 * ABSA(IND1(I_LAY)+10,IG))+&
114 & ( (1. - Z_FS) *( P_FAC00(I_LAY) * ABSA(IND0(I_LAY) ,IG) + &
115 & P_FAC10(I_LAY) * ABSA(IND0(I_LAY)+9 ,IG) + &
116 & P_FAC01(I_LAY) * ABSA(IND1(I_LAY) ,IG) + &
117 & P_FAC11(I_LAY) * ABSA(IND1(I_LAY)+9 ,IG))+ &
118 & Z_FS *( P_FAC00(I_LAY) * ABSA(IND0(I_LAY)+ 1,IG) + &
119 & P_FAC10(I_LAY) * ABSA(IND0(I_LAY)+10,IG) + &
120 & P_FAC01(I_LAY) * ABSA(IND1(I_LAY)+ 1,IG) + &
121 & P_FAC11(I_LAY) * ABSA(IND1(I_LAY)+10,IG))) + &
122 !-- DS_000515
123 & P_COLH2O(I_LAY) * &
124 & P_SELFFAC(I_LAY) * (SELFREF(INDS(I_LAY),IG) + &
125 & P_SELFFRAC(I_LAY) *&
126 & (SELFREF(INDS(I_LAY)+1,IG) - SELFREF(INDS(I_LAY),IG)))&
127 20039040 & + P_TAUAERL(I_LAY,12)
128 PFRAC(NGS11+IG,I_LAY) = FRACREFA(IG,JS) + Z_FS *&
129 20993280 & (FRACREFA(IG,JS+1) - FRACREFA(IG,JS))
130 ENDDO
131 ENDDO
132
133 !-- JJM_000517
134
2/2
✓ Branch 0 taken 954240 times.
✓ Branch 1 taken 119280 times.
1073520 DO IG = 1, NG12
135
2/2
✓ Branch 0 taken 17176320 times.
✓ Branch 1 taken 954240 times.
18249840 DO I_LAY = K_LAYTROP+1, KLEV
136 !-- JJM_000517
137 17176320 P_TAU (NGS11+IG,I_LAY) = P_TAUAERL(I_LAY,12)
138 18130560 PFRAC(NGS11+IG,I_LAY) = 0.0_JPRB
139 ENDDO
140 ENDDO
141
142
1/2
✓ Branch 0 taken 119280 times.
✗ Branch 1 not taken.
119280 IF (LHOOK) CALL DR_HOOK('RRTM_TAUMOL12',1,ZHOOK_HANDLE)
143 119280 END SUBROUTINE RRTM_TAUMOL12
144