source: LMDZ6/trunk/libf/phylmd/ecrad/ifsrrtm/modify_wv_continuum.F90 @ 5450

Last change on this file since 5450 was 4773, checked in by idelkadi, 13 months ago
  • Update of Ecrad in LMDZ The same organization of the Ecrad offline version is retained in order to facilitate the updating of Ecrad in LMDZ and the comparison between online and offline results. version 1.6.1 of Ecrad (https://github.com/lguez/ecrad.git)
  • Implementation of the double call of Ecrad in LMDZ


File size: 6.5 KB
Line 
1SUBROUTINE MODIFY_WV_CONTINUUM(NWVCONTINUUM)
2
3! MODIFY_WV_CONTINUUM - Adjust the shortwave continuum coefficients
4!
5! PURPOSE
6! -------
7!   The default water vapour continuum model in SRTM is MT_CKD 2.5,
8!   but some measurement programmes, notably from the CAVIAR project
9!   (Shine et al., J. Mol. Spectrosc., 2016) suggest a much stronger
10!   absorption in the near infrared. This routine provides the option
11!   to implement an approximate scaling of the shortwave continuum
12!   coefficients to match the CAVIAR continuum. Further details on the
13!   impact were provided by Hogan et al. (2017, ECMWF Tech. Memo. 816).
14!
15! INTERFACE
16! ---------
17!   This routine is called from SUECRAD. If its argument is 0, it does
18!   nothing so that the default SRTM continuum is used. If its
19!   argument is 1 then it implements the CAVIAR continuum by scaling
20!   coefficients within the relevant SRTM modules.
21!
22! AUTHOR
23! ------
24!   Robin Hogan, ECMWF
25!   Original: 2018-02-21
26!
27! MODIFICATIONS
28! -------------
29!
30! -----------------------------------------------------------------------
31
32USE PARKIND1  , ONLY : JPIM, JPRB
33USE YOMHOOK   , ONLY : LHOOK, DR_HOOK, JPHOOK
34! Load the coefficients for each relevant shortwave band
35USE YOESRTA16, ONLY : SELFREF16 => SELFREF, FORREF16 => FORREF
36USE YOESRTA17, ONLY : SELFREF17 => SELFREF, FORREF17 => FORREF
37USE YOESRTA18, ONLY : SELFREF18 => SELFREF, FORREF18 => FORREF
38USE YOESRTA19, ONLY : SELFREF19 => SELFREF, FORREF19 => FORREF
39USE YOESRTA20, ONLY : SELFREF20 => SELFREF, FORREF20 => FORREF
40USE YOESRTA21, ONLY : SELFREF21 => SELFREF, FORREF21 => FORREF
41USE YOESRTA22, ONLY : SELFREF22 => SELFREF, FORREF22 => FORREF
42USE YOESRTA23, ONLY : SELFREF23 => SELFREF, FORREF23 => FORREF
43USE YOESRTA29, ONLY : SELFREF29 => SELFREF, FORREF29 => FORREF
44
45IMPLICIT NONE
46
47! CAVIAR continuum enhancements
48REAL(KIND=JPRB), PARAMETER :: SELF_ENH16(16) = (/ 2.42,  2.42,  2.91,  2.91,  2.52, &
49     &  2.52,  2.53,  2.53,  2.51,  2.51,  2.51,  2.51,  2.58,  2.58,  2.58,  2.58 /)
50REAL(KIND=JPRB), PARAMETER :: FORE_ENH16(16) = (/ 3.38,  3.38,  3.19,  3.19,  1.21,  &
51     &  1.21,  1.09,  1.09,  1.07,  1.07,  1.07,  1.07,  1.12,  1.12,  1.12,  1.12 /)
52REAL(KIND=JPRB), PARAMETER :: SELF_ENH17(16) = (/ 2.18,  1.40,  1.09,  1.19,  1.02,  1.00, &
53     &  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00 /)
54REAL(KIND=JPRB), PARAMETER :: FORE_ENH17(16) = (/ 3.17,  3.40,  1.66,  1.00,  1.00,  1.00, &
55     &  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00 /)
56REAL(KIND=JPRB), PARAMETER :: SELF_ENH18(16) = (/ 9.67, 12.36,  9.22,  3.71,  1.12,  1.12, &
57     &  0.53,  0.53,  0.49,  0.49,  0.49,  0.49,  0.35,  0.35,  0.35,  0.35 /)
58REAL(KIND=JPRB), PARAMETER :: FORE_ENH18(16) = (/ 38.90, 15.37, 16.55, 14.81,  4.91,  4.91, &
59     &  2.59,  2.59,  2.21,  2.21,  2.21,  2.21,  1.77,  1.77,  1.77,  1.77 /)
60REAL(KIND=JPRB), PARAMETER :: SELF_ENH19(16) = (/ 28.53, 26.12, 19.14, 10.12,  3.69, &
61     &  3.69,  1.63,  1.63,  2.52,  2.52,  2.52,  2.52,  2.40,  2.40,  2.40,  2.40 /)
62REAL(KIND=JPRB), PARAMETER :: FORE_ENH19(16) = (/ 11.66,  9.78,  9.57,  9.55,  4.96, &
63     &  4.96,  2.68,  2.68,  2.61,  2.61,  2.61,  2.61,  2.37,  2.37,  2.37,  2.37 /)
64REAL(KIND=JPRB), PARAMETER :: SELF_ENH20(16) = (/ 4.93,  2.76,  1.23,  0.66,  1.41, &
65     &  1.11,  1.07,  1.03,  1.03,  1.03,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00 /)
66REAL(KIND=JPRB), PARAMETER :: FORE_ENH20(16) = (/ 24.16,  9.04,  2.73,  2.17,  1.05, &
67     &  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00 /)
68REAL(KIND=JPRB), PARAMETER :: SELF_ENH21(16) = (/ 9.70,  4.56,  0.99,  1.21,  1.37, &
69     &  1.25,  0.94,  0.99,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00 /)
70REAL(KIND=JPRB), PARAMETER :: FORE_ENH21(16) = (/ 50.84, 19.27,  1.49,  1.16,  0.97, &
71     &  1.64,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00 /)
72REAL(KIND=JPRB), PARAMETER :: SELF_ENH22(16) = (/ 3.37,  3.37,  3.37,  3.37,  3.37, &
73     &  3.37,  3.37,  3.37,  1.42,  1.42,  1.42,  1.42,  1.42,  1.42,  1.42,  1.42 /)
74REAL(KIND=JPRB), PARAMETER :: FORE_ENH22(16) = (/ 12.31, 12.31, 12.31, 12.31, 12.31, &
75     &  12.31, 12.31, 12.31,  3.20,  3.20,  3.20,  3.20,  3.20,  3.20,  3.20,  3.20 /)
76REAL(KIND=JPRB), PARAMETER :: SELF_ENH23(16) = (/ 1.00,  1.00,  1.19,  1.19,  1.65, &
77     &  1.46,  1.32,  1.07,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00 /)
78REAL(KIND=JPRB), PARAMETER :: FORE_ENH23(16) = (/ 1.04,  1.04,  1.08,  1.08,  1.12, &
79     &  1.10,  1.18,  1.06,  1.01,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00 /)
80REAL(KIND=JPRB), PARAMETER :: SELF_ENH29(16) = (/ 1.70,  1.00,  1.00,  1.03,  1.19,  &
81     &  1.19, 1.43,  1.43,  1.30,  1.30,  1.33,  1.33,  1.28,  1.28,  1.08,  1.23 /)
82REAL(KIND=JPRB), PARAMETER :: FORE_ENH29(16) = (/ 107.42,  5.87,  3.26,  2.42,  1.39, &
83     &  1.39,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00 /)
84
85INTEGER(KIND=JPIM), INTENT(IN) :: NWVCONTINUUM
86
87INTEGER(KIND=JPIM) :: JG
88
89REAL(KIND=JPHOOK) :: ZHOOK_HANDLE
90
91IF (LHOOK) CALL DR_HOOK('MODIFY_WV_CONTINUUM',0,ZHOOK_HANDLE)
92! -----------------------------------------------------------------------
93
94IF (NWVCONTINUUM == 1) THEN
95  ! Apply CAVIAR continuum enhancements
96  DO JG = 1,16
97    FORREF16(:,JG)  = FORREF16(:,JG)  * FORE_ENH16(JG)
98    SELFREF16(:,JG) = SELFREF16(:,JG) * SELF_ENH16(JG)
99  ENDDO
100  DO JG = 1,16
101    FORREF17(:,JG)  = FORREF17(:,JG)  * FORE_ENH17(JG)
102    SELFREF17(:,JG) = SELFREF17(:,JG) * SELF_ENH17(JG)
103  ENDDO
104  DO JG = 1,16
105    FORREF18(:,JG)  = FORREF18(:,JG)  * FORE_ENH18(JG)
106    SELFREF18(:,JG) = SELFREF18(:,JG) * SELF_ENH18(JG)
107  ENDDO
108  DO JG = 1,16
109    FORREF19(:,JG)  = FORREF19(:,JG)  * FORE_ENH19(JG)
110    SELFREF19(:,JG) = SELFREF19(:,JG) * SELF_ENH19(JG)
111  ENDDO
112  DO JG = 1,16
113    FORREF20(:,JG)  = FORREF20(:,JG)  * FORE_ENH20(JG)
114    SELFREF20(:,JG) = SELFREF20(:,JG) * SELF_ENH20(JG)
115  ENDDO
116  DO JG = 1,16
117    FORREF21(:,JG)  = FORREF21(:,JG)  * FORE_ENH21(JG)
118    SELFREF21(:,JG) = SELFREF21(:,JG) * SELF_ENH21(JG)
119  ENDDO
120  DO JG = 1,16
121    FORREF22(:,JG)  = FORREF22(:,JG)  * FORE_ENH22(JG)
122    SELFREF22(:,JG) = SELFREF22(:,JG) * SELF_ENH22(JG)
123  ENDDO
124  DO JG = 1,16
125    FORREF23(:,JG)  = FORREF23(:,JG)  * FORE_ENH23(JG)
126    SELFREF23(:,JG) = SELFREF23(:,JG) * SELF_ENH23(JG)
127  ENDDO
128  DO JG = 1,16
129    FORREF29(:,JG)  = FORREF29(:,JG)  * FORE_ENH29(JG)
130    SELFREF29(:,JG) = SELFREF29(:,JG) * SELF_ENH29(JG)
131  ENDDO
132ENDIF
133 
134! -----------------------------------------------------------------------
135
136IF (LHOOK) CALL DR_HOOK('MODIFY_WV_CONTINUUM',1,ZHOOK_HANDLE)
137
138END SUBROUTINE MODIFY_WV_CONTINUUM
Note: See TracBrowser for help on using the repository browser.