1 |
SUBROUTINE swtt(knu, ka, pu, ptr) |
2 |
USE dimens_m |
3 |
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 |
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 |
|
65 |
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 |
|
78 |
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 |
|
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 |