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

Annotation of /trunk/phylmd/Radlwsw/swtt1.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 265 - (hide annotations)
Tue Mar 20 09:35:59 2018 UTC (6 years, 3 months ago) by guez
File size: 3956 byte(s)
Rename module dimens_m to dimensions.
1 guez 81 SUBROUTINE swtt1(knu, kabs, kind, 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 : 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 guez 178 DATA ((apad(1,i,j),i=1,3), j=1, 7)/0.912418292D+05, 0.000000000D-00, &
55     0.925887084D-04, 0.723613782D+05, 0.000000000D-00, 0.129353723D-01, &
56     0.596037057D+04, 0.000000000D-00, 0.800821928D+00, 0.000000000D-00, &
57     0.000000000D-00, 0.242715973D+02, 0.000000000D-00, 0.000000000D-00, &
58     0.878331486D+02, 0.000000000D-00, 0.000000000D-00, 0.191559725D+02, &
59     0.000000000D-00, 0.000000000D-00, 0.000000000D+00/
60     DATA ((apad(2,i,j),i=1,3), j=1, 7)/0.376655383D-08, 0.739646016D-08, &
61     0.410177786D+03, 0.978576773D-04, 0.131849595D-03, 0.672595424D+02, &
62     0.387714006D+00, 0.437772681D+00, 0.000000000D-00, 0.118461660D+03, &
63     0.151345118D+03, 0.000000000D-00, 0.119079797D+04, 0.233628890D+04, &
64     0.000000000D-00, 0.293353397D+03, 0.797219934D+03, 0.000000000D-00, &
65     0.000000000D+00, 0.000000000D+00, 0.000000000D+00/
66 guez 81
67 guez 178 DATA ((bpad(1,i,j),i=1,3), j=1, 7)/0.912418292D+05, 0.000000000D-00, &
68     0.925887084D-04, 0.724555318D+05, 0.000000000D-00, 0.131812683D-01, &
69     0.602593328D+04, 0.000000000D-00, 0.812706117D+00, 0.100000000D+01, &
70     0.000000000D-00, 0.249863591D+02, 0.000000000D-00, 0.000000000D-00, &
71     0.931071925D+02, 0.000000000D-00, 0.000000000D-00, 0.252233437D+02, &
72     0.000000000D-00, 0.000000000D-00, 0.100000000D+01/
73     DATA ((bpad(2,i,j),i=1,3), j=1, 7)/0.376655383D-08, 0.739646016D-08, &
74     0.410177786D+03, 0.979023421D-04, 0.131861712D-03, 0.731185438D+02, &
75     0.388611139D+00, 0.437949001D+00, 0.100000000D+01, 0.120291383D+03, &
76     0.151692730D+03, 0.000000000D+00, 0.130531005D+04, 0.237071130D+04, &
77     0.000000000D+00, 0.415049409D+03, 0.867914360D+03, 0.000000000D+00, &
78     0.100000000D+01, 0.100000000D+01, 0.000000000D+00/
79 guez 81
80 guez 178 DATA (d(1,i), i=1, 3)/0.00d0, 0.00d0, 0d0/
81     DATA (d(2,i), i=1, 3)/0.000000000d0, 0.000000000d0, 0.800000000d0/
82 guez 81 ! -----------------------------------------------------------------------
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