/[lmdze]/trunk/Sources/phylmd/Radlwsw/swtt1.f
ViewVC logotype

Contents of /trunk/Sources/phylmd/Radlwsw/swtt1.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 134 - (show annotations)
Wed Apr 29 15:47:56 2015 UTC (9 years, 1 month ago) by guez
File size: 3945 byte(s)
Sources inside, compilation outside.
1 SUBROUTINE swtt1(knu, kabs, kind, 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 : 95-01-20
33 ! -----------------------------------------------------------------------
34 ! * ARGUMENTS:
35
36 INTEGER knu ! INDEX OF THE SPECTRAL INTERVAL
37 INTEGER kabs ! NUMBER OF ABSORBERS
38 INTEGER kind(kabs) ! INDICES OF THE ABSORBERS
39 DOUBLE PRECISION pu(kdlon, kabs) ! ABSORBER AMOUNT
40
41 DOUBLE PRECISION ptr(kdlon, kabs) ! TRANSMISSION FUNCTION
42
43 ! * LOCAL VARIABLES:
44
45 DOUBLE PRECISION zr1(kdlon)
46 DOUBLE PRECISION zr2(kdlon)
47 DOUBLE PRECISION zu(kdlon)
48 INTEGER jl, ja, i, j, ia
49
50 ! * Prescribed Data:
51
52 DOUBLE PRECISION apad(2, 3, 7), bpad(2, 3, 7), d(2, 3)
53 SAVE apad, bpad, d
54 DATA ((apad(1,i,j),i=1,3), j=1, 7)/0.912418292E+05, 0.000000000E-00, &
55 0.925887084E-04, 0.723613782E+05, 0.000000000E-00, 0.129353723E-01, &
56 0.596037057E+04, 0.000000000E-00, 0.800821928E+00, 0.000000000E-00, &
57 0.000000000E-00, 0.242715973E+02, 0.000000000E-00, 0.000000000E-00, &
58 0.878331486E+02, 0.000000000E-00, 0.000000000E-00, 0.191559725E+02, &
59 0.000000000E-00, 0.000000000E-00, 0.000000000E+00/
60 DATA ((apad(2,i,j),i=1,3), j=1, 7)/0.376655383E-08, 0.739646016E-08, &
61 0.410177786E+03, 0.978576773E-04, 0.131849595E-03, 0.672595424E+02, &
62 0.387714006E+00, 0.437772681E+00, 0.000000000E-00, 0.118461660E+03, &
63 0.151345118E+03, 0.000000000E-00, 0.119079797E+04, 0.233628890E+04, &
64 0.000000000E-00, 0.293353397E+03, 0.797219934E+03, 0.000000000E-00, &
65 0.000000000E+00, 0.000000000E+00, 0.000000000E+00/
66
67 DATA ((bpad(1,i,j),i=1,3), j=1, 7)/0.912418292E+05, 0.000000000E-00, &
68 0.925887084E-04, 0.724555318E+05, 0.000000000E-00, 0.131812683E-01, &
69 0.602593328E+04, 0.000000000E-00, 0.812706117E+00, 0.100000000E+01, &
70 0.000000000E-00, 0.249863591E+02, 0.000000000E-00, 0.000000000E-00, &
71 0.931071925E+02, 0.000000000E-00, 0.000000000E-00, 0.252233437E+02, &
72 0.000000000E-00, 0.000000000E-00, 0.100000000E+01/
73 DATA ((bpad(2,i,j),i=1,3), j=1, 7)/0.376655383E-08, 0.739646016E-08, &
74 0.410177786E+03, 0.979023421E-04, 0.131861712E-03, 0.731185438E+02, &
75 0.388611139E+00, 0.437949001E+00, 0.100000000E+01, 0.120291383E+03, &
76 0.151692730E+03, 0.000000000E+00, 0.130531005E+04, 0.237071130E+04, &
77 0.000000000E+00, 0.415049409E+03, 0.867914360E+03, 0.000000000E+00, &
78 0.100000000E+01, 0.100000000E+01, 0.000000000E+00/
79
80 DATA (d(1,i), i=1, 3)/0.00, 0.00, 0.00/
81 DATA (d(2,i), i=1, 3)/0.000000000, 0.000000000, 0.800000000/
82 ! -----------------------------------------------------------------------
83
84 ! * 1. HORNER'S ALGORITHM TO COMPUTE TRANSMISSION FUNCTION
85
86
87 DO ja = 1, kabs
88 ia = kind(ja)
89 DO jl = 1, kdlon
90 zu(jl) = pu(jl, ja)
91 zr1(jl) = apad(knu, ia, 1) + zu(jl)*(apad(knu,ia,2)+zu(jl)*(apad(knu, &
92 ia,3)+zu(jl)*(apad(knu,ia,4)+zu(jl)*(apad(knu,ia,5)+zu(jl)*(apad(knu, &
93 ia,6)+zu(jl)*(apad(knu,ia,7)))))))
94
95 zr2(jl) = bpad(knu, ia, 1) + zu(jl)*(bpad(knu,ia,2)+zu(jl)*(bpad(knu, &
96 ia,3)+zu(jl)*(bpad(knu,ia,4)+zu(jl)*(bpad(knu,ia,5)+zu(jl)*(bpad(knu, &
97 ia,6)+zu(jl)*(bpad(knu,ia,7)))))))
98
99
100 ! * 2. ADD THE BACKGROUND TRANSMISSION
101
102
103 ptr(jl, ja) = (zr1(jl)/zr2(jl))*(1.-d(knu,ia)) + d(knu, ia)
104 END DO
105 END DO
106
107 RETURN
108 END SUBROUTINE swtt1

  ViewVC Help
Powered by ViewVC 1.1.21