LMDZ
rrtm_init_140gp.F90
Go to the documentation of this file.
1 !***************************************************************************
2 SUBROUTINE rrtm_init_140gp
3 !***************************************************************************
4 ! Reformatted for F90 by JJMorcrette, ECMWF, 980714
5 
6 ! Parameters
7 #include "tsmbkind.h"
8 
9 USE parrrtm , ONLY : jpband ,jpg ,jpxsec ,jpgpt
10 USE yoerrtwn , ONLY : ng ,nspa ,nspb
11 USE yoerrtftr, ONLY : ngc ,ngs ,ngn ,ngb ,ngm , wt
12 ! Output
13 USE yoerrtbg2, ONLY : corr1 ,corr2
14 USE yoerrtrwt, ONLY : frefa ,frefb ,frefadf ,frefbdf ,rwgt
15 
16 ! Local
17 
18 IMPLICIT NONE
19 real_b :: wtsm(jpg)
20 
21 ! LOCAL INTEGER SCALARS
22 integer_m :: i, ibnd, ig, igc, igcsm, ind, ipr, iprsm, ipt
23 
24 ! LOCAL REAL SCALARS
25 real_b :: fp, rtfp, wtsum
26 
27 
28 ! Calculate lookup tables for functions needed in routine TAUMOL (TAUGB2)
29 corr1(0) = _one_
30 corr1(200) = _one_
31 corr2(0) = _one_
32 corr2(200) = _one_
33 DO i = 1,199
34  fp = 0.005_jprb*REAL(i)
35  rtfp = sqrt(fp)
36  corr1(i) = rtfp/fp
37  corr2(i) = (_one_-rtfp)/(_one_-fp)
38 ENDDO
39 
40 ! Perform g-point reduction from 16 per band (256 total points) to
41 ! a band dependant number (140 total points) for all absorption
42 ! coefficient input data and Planck fraction input data.
43 ! Compute relative weighting for new g-point combinations.
44 
45 igcsm = 0
46 DO ibnd = 1,jpband
47  iprsm = 0
48  IF (ngc(ibnd) < 16) THEN
49  DO igc = 1,ngc(ibnd)
50  igcsm = igcsm + 1
51  wtsum = _zero_
52  DO ipr = 1, ngn(igcsm)
53  iprsm = iprsm + 1
54  wtsum = wtsum + wt(iprsm)
55  ENDDO
56  wtsm(igc) = wtsum
57  ENDDO
58  DO ig = 1,ng(ibnd)
59  ind = (ibnd-1)*16 + ig
60  rwgt(ind) = wt(ig)/wtsm(ngm(ind))
61  ENDDO
62  ELSE
63  DO ig = 1,ng(ibnd)
64  igcsm = igcsm + 1
65  ind = (ibnd-1)*16 + ig
66  rwgt(ind) = _one_
67  ENDDO
68  ENDIF
69 ENDDO
70 
71 ! Initialize arrays for combined Planck fraction data.
72 
73 DO ipt = 1,13
74  DO ipr = 1, jpgpt
75  frefa(ipr,ipt) = _zero_
76  frefadf(ipr,ipt) = _zero_
77  ENDDO
78 ENDDO
79 DO ipt = 1,6
80  DO ipr = 1, jpgpt
81  frefb(ipr,ipt) = _zero_
82  frefbdf(ipr,ipt) = _zero_
83  ENDDO
84 ENDDO
85 
86 ! Reduce g-points for relevant data in each LW spectral band.
87 
88 CALL rrtm_cmbgb1
89 CALL rrtm_cmbgb2
90 CALL rrtm_cmbgb3
91 CALL rrtm_cmbgb4
92 CALL rrtm_cmbgb5
93 CALL rrtm_cmbgb6
94 CALL rrtm_cmbgb7
95 CALL rrtm_cmbgb8
96 CALL rrtm_cmbgb9
97 CALL rrtm_cmbgb10
98 CALL rrtm_cmbgb11
99 CALL rrtm_cmbgb12
100 CALL rrtm_cmbgb13
101 CALL rrtm_cmbgb14
102 CALL rrtm_cmbgb15
103 CALL rrtm_cmbgb16
104 
105 RETURN
106 END SUBROUTINE rrtm_init_140gp
subroutine rrtm_cmbgb11
Definition: rrtm_cmbgb11.F90:3
integer(kind=jpim), dimension(jpgpt) ngb
Definition: yoerrtftr.F90:18
real(kind=jprb), dimension(jpgpt, 13) frefa
Definition: yoerrtrwt.F90:15
subroutine rrtm_cmbgb12
Definition: rrtm_cmbgb12.F90:3
integer(kind=jpim), dimension(jpg *jpband) ngm
Definition: yoerrtftr.F90:20
subroutine rrtm_cmbgb14
Definition: rrtm_cmbgb14.F90:3
subroutine rrtm_cmbgb7
Definition: rrtm_cmbgb7.F90:3
real(kind=jprb), dimension(0:200) corr2
Definition: yoerrtbg2.F90:16
subroutine rrtm_init_140gp
subroutine rrtm_cmbgb8
Definition: rrtm_cmbgb8.F90:3
subroutine rrtm_cmbgb16
Definition: rrtm_cmbgb16.F90:3
subroutine rrtm_cmbgb1
Definition: rrtm_cmbgb1.F90:3
real(kind=jprb), dimension(jpg) wt
Definition: yoerrtftr.F90:21
integer(kind=jpim), parameter jpgpt
Definition: parrrtm.F90:21
subroutine rrtm_cmbgb5
Definition: rrtm_cmbgb5.F90:3
real(kind=jprb), dimension(jpg *jpband) rwgt
Definition: yoerrtrwt.F90:19
real(kind=jprb), dimension(jpgpt, 6) frefbdf
Definition: yoerrtrwt.F90:18
integer(kind=jpim), parameter jpband
Definition: parrrtm.F90:18
subroutine rrtm_cmbgb4
Definition: rrtm_cmbgb4.F90:3
real(kind=jprb), dimension(jpgpt, 6) frefb
Definition: yoerrtrwt.F90:16
subroutine rrtm_cmbgb10
Definition: rrtm_cmbgb10.F90:3
integer(kind=jpim), dimension(16) nspb
Definition: yoerrtwn.F90:13
integer(kind=jpim), dimension(16) ng
Definition: yoerrtwn.F90:11
subroutine rrtm_cmbgb15
Definition: rrtm_cmbgb15.F90:3
subroutine rrtm_cmbgb3
Definition: rrtm_cmbgb3.F90:3
subroutine rrtm_cmbgb6
Definition: rrtm_cmbgb6.F90:3
integer(kind=jpim), dimension(16) nspa
Definition: yoerrtwn.F90:12
integer(kind=jpim), dimension(jpgpt) ngn
Definition: yoerrtftr.F90:17
subroutine rrtm_cmbgb2
Definition: rrtm_cmbgb2.F90:3
real(kind=jprb), dimension(jpgpt, 13) frefadf
Definition: yoerrtrwt.F90:17
integer(kind=jpim), parameter jpg
Definition: parrrtm.F90:17
subroutine rrtm_cmbgb13
Definition: rrtm_cmbgb13.F90:3
integer(kind=jpim), dimension(jpband) ngc
Definition: yoerrtftr.F90:15
subroutine rrtm_cmbgb9
Definition: rrtm_cmbgb9.F90:3
integer(kind=jpim), dimension(jpband) ngs
Definition: yoerrtftr.F90:16
real(kind=jprb), dimension(0:200) corr1
Definition: yoerrtbg2.F90:15
integer(kind=jpim), parameter jpxsec
Definition: parrrtm.F90:19