1 |
guez |
81 |
SUBROUTINE swtt(knu, ka, pu, ptr) |
2 |
guez |
265 |
USE dimensions |
3 |
guez |
81 |
USE dimphy |
4 |
|
|
USE raddim |
5 |
|
|
IMPLICIT NONE |
6 |
|
|
|
7 |
|
|
! ----------------------------------------------------------------------- |
8 |
|
|
! PURPOSE. |
9 |
|
|
! -------- |
10 |
|
|
! THIS ROUTINE COMPUTES THE TRANSMISSION FUNCTIONS FOR ALL THE |
11 |
|
|
! ABSORBERS (H2O, UNIFORMLY MIXED GASES, AND O3) IN THE TWO SPECTRAL |
12 |
|
|
! INTERVALS. |
13 |
|
|
|
14 |
|
|
! METHOD. |
15 |
|
|
! ------- |
16 |
|
|
|
17 |
|
|
! TRANSMISSION FUNCTION ARE COMPUTED USING PADE APPROXIMANTS |
18 |
|
|
! AND HORNER'S ALGORITHM. |
19 |
|
|
|
20 |
|
|
! REFERENCE. |
21 |
|
|
! ---------- |
22 |
|
|
|
23 |
|
|
! SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND |
24 |
|
|
! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS |
25 |
|
|
|
26 |
|
|
! AUTHOR. |
27 |
|
|
! ------- |
28 |
|
|
! JEAN-JACQUES MORCRETTE *ECMWF* |
29 |
|
|
|
30 |
|
|
! MODIFICATIONS. |
31 |
|
|
! -------------- |
32 |
|
|
! ORIGINAL : 88-12-15 |
33 |
|
|
! ----------------------------------------------------------------------- |
34 |
|
|
|
35 |
|
|
! * ARGUMENTS |
36 |
|
|
|
37 |
|
|
INTEGER knu ! INDEX OF THE SPECTRAL INTERVAL |
38 |
|
|
INTEGER ka ! INDEX OF THE ABSORBER |
39 |
|
|
DOUBLE PRECISION pu(kdlon) ! ABSORBER AMOUNT |
40 |
|
|
|
41 |
|
|
DOUBLE PRECISION ptr(kdlon) ! TRANSMISSION FUNCTION |
42 |
|
|
|
43 |
|
|
! * LOCAL VARIABLES: |
44 |
|
|
|
45 |
|
|
DOUBLE PRECISION zr1(kdlon), zr2(kdlon) |
46 |
|
|
INTEGER jl, i, j |
47 |
|
|
|
48 |
|
|
! * Prescribed Data: |
49 |
|
|
|
50 |
|
|
DOUBLE PRECISION apad(2, 3, 7), bpad(2, 3, 7), d(2, 3) |
51 |
|
|
SAVE apad, bpad, d |
52 |
guez |
178 |
DATA ((apad(1,i,j),i=1,3), j=1, 7)/0.912418292D+05, 0.000000000D-00, & |
53 |
|
|
0.925887084D-04, 0.723613782D+05, 0.000000000D-00, 0.129353723D-01, & |
54 |
|
|
0.596037057D+04, 0.000000000D-00, 0.800821928D+00, 0.000000000D-00, & |
55 |
|
|
0.000000000D-00, 0.242715973D+02, 0.000000000D-00, 0.000000000D-00, & |
56 |
|
|
0.878331486D+02, 0.000000000D-00, 0.000000000D-00, 0.191559725D+02, & |
57 |
|
|
0.000000000D-00, 0.000000000D-00, 0.000000000D+00/ |
58 |
|
|
DATA ((apad(2,i,j),i=1,3), j=1, 7)/0.376655383D-08, 0.739646016D-08, & |
59 |
|
|
0.410177786D+03, 0.978576773D-04, 0.131849595D-03, 0.672595424D+02, & |
60 |
|
|
0.387714006D+00, 0.437772681D+00, 0.000000000D-00, 0.118461660D+03, & |
61 |
|
|
0.151345118D+03, 0.000000000D-00, 0.119079797D+04, 0.233628890D+04, & |
62 |
|
|
0.000000000D-00, 0.293353397D+03, 0.797219934D+03, 0.000000000D-00, & |
63 |
|
|
0.000000000D+00, 0.000000000D+00, 0.000000000D+00/ |
64 |
guez |
81 |
|
65 |
guez |
178 |
DATA ((bpad(1,i,j),i=1,3), j=1, 7)/0.912418292D+05, 0.000000000D-00, & |
66 |
|
|
0.925887084D-04, 0.724555318D+05, 0.000000000D-00, 0.131812683D-01, & |
67 |
|
|
0.602593328D+04, 0.000000000D-00, 0.812706117D+00, 0.100000000D+01, & |
68 |
|
|
0.000000000D-00, 0.249863591D+02, 0.000000000D-00, 0.000000000D-00, & |
69 |
|
|
0.931071925D+02, 0.000000000D-00, 0.000000000D-00, 0.252233437D+02, & |
70 |
|
|
0.000000000D-00, 0.000000000D-00, 0.100000000D+01/ |
71 |
|
|
DATA ((bpad(2,i,j),i=1,3), j=1, 7)/0.376655383D-08, 0.739646016D-08, & |
72 |
|
|
0.410177786D+03, 0.979023421D-04, 0.131861712D-03, 0.731185438D+02, & |
73 |
|
|
0.388611139D+00, 0.437949001D+00, 0.100000000D+01, 0.120291383D+03, & |
74 |
|
|
0.151692730D+03, 0.000000000D+00, 0.130531005D+04, 0.237071130D+04, & |
75 |
|
|
0.000000000D+00, 0.415049409D+03, 0.867914360D+03, 0.000000000D+00, & |
76 |
|
|
0.100000000D+01, 0.100000000D+01, 0.000000000D+00/ |
77 |
guez |
81 |
|
78 |
guez |
178 |
DATA (d(1,i), i=1, 3)/0.00d0, 0.00d0, 0.00d0/ |
79 |
|
|
DATA (d(2,i), i=1, 3)/0.000000000d0, 0.000000000d0, 0.800000000d0/ |
80 |
guez |
81 |
|
81 |
|
|
! ----------------------------------------------------------------------- |
82 |
|
|
|
83 |
|
|
! * 1. HORNER'S ALGORITHM TO COMPUTE TRANSMISSION FUNCTION |
84 |
|
|
|
85 |
|
|
|
86 |
|
|
DO jl = 1, kdlon |
87 |
|
|
zr1(jl) = apad(knu, ka, 1) + pu(jl)*(apad(knu,ka,2)+pu(jl)*(apad(knu,ka, & |
88 |
|
|
3)+pu(jl)*(apad(knu,ka,4)+pu(jl)*(apad(knu,ka,5)+pu(jl)*(apad(knu,ka,6) & |
89 |
|
|
+pu(jl)*(apad(knu,ka,7))))))) |
90 |
|
|
|
91 |
|
|
zr2(jl) = bpad(knu, ka, 1) + pu(jl)*(bpad(knu,ka,2)+pu(jl)*(bpad(knu,ka, & |
92 |
|
|
3)+pu(jl)*(bpad(knu,ka,4)+pu(jl)*(bpad(knu,ka,5)+pu(jl)*(bpad(knu,ka,6) & |
93 |
|
|
+pu(jl)*(bpad(knu,ka,7))))))) |
94 |
|
|
|
95 |
|
|
|
96 |
|
|
! * 2. ADD THE BACKGROUND TRANSMISSION |
97 |
|
|
|
98 |
|
|
|
99 |
|
|
|
100 |
|
|
ptr(jl) = (zr1(jl)/zr2(jl))*(1.-d(knu,ka)) + d(knu, ka) |
101 |
|
|
END DO |
102 |
|
|
|
103 |
|
|
RETURN |
104 |
|
|
END SUBROUTINE swtt |