LMDZ
swtt.F90
Go to the documentation of this file.
1 SUBROUTINE swtt ( KIDIA, KFDIA, KLON, KNU, KA , PU, PTR)
2 
3 !**** *SWTT* - COMPUTES THE SHORTWAVE TRANSMISSION FUNCTIONS
4 
5 ! PURPOSE.
6 ! --------
7 ! THIS ROUTINE COMPUTES THE TRANSMISSION FUNCTIONS FOR ALL THE
8 ! ABSORBERS (H2O, UNIFORMLY MIXED GASES, AND O3) IN THE TWO SPECTRAL
9 ! INTERVALS.
10 
11 !** INTERFACE.
12 ! ----------
13 ! *SWTT* IS CALLED FROM *SW1S*, *SWNI*.
14 
15 
16 ! EXPLICIT ARGUMENTS :
17 ! --------------------
18 ! KNU : ; INDEX OF THE SPECTRAL INTERVAL
19 ! KA : ; INDEX OF THE ABSORBER
20 ! PU : (KLON) ; ABSORBER AMOUNT
21 ! ==== OUTPUTS ===
22 ! PTR : (KLON) ; TRANSMISSION FUNCTION
23 
24 ! IMPLICIT ARGUMENTS : NONE
25 ! --------------------
26 
27 ! METHOD.
28 ! -------
29 
30 ! TRANSMISSION FUNCTION ARE COMPUTED USING PADE APPROXIMANTS
31 ! AND HORNER'S ALGORITHM.
32 
33 ! EXTERNALS.
34 ! ----------
35 
36 ! NONE
37 
38 ! REFERENCE.
39 ! ----------
40 
41 ! SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
42 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
43 
44 ! AUTHOR.
45 ! -------
46 ! JEAN-JACQUES MORCRETTE *ECMWF*
47 
48 ! MODIFICATIONS.
49 ! --------------
50 ! ORIGINAL : 88-12-15
51 
52 !-----------------------------------------------------------------------
53 
54 #include "tsmbkind.h"
55 
56 USE yoesw , ONLY : apad ,bpad ,d
57 
58 
59 IMPLICIT NONE
60 
61 
62 ! DUMMY INTEGER SCALARS
63 integer_m :: ka
64 integer_m :: kfdia
65 integer_m :: kidia
66 integer_m :: klon
67 integer_m :: knu
68 
69 
70 
71 !-----------------------------------------------------------------------
72 
73 !* 0.1 ARGUMENTS
74 ! ---------
75 
76 real_b :: pu(klon), ptr(klon)
77 
78 !-----------------------------------------------------------------------
79 
80 !* 0.2 LOCAL ARRAYS
81 ! ------------
82 
83 real_b :: zr1(klon), zr2(klon)
84 
85 ! LOCAL INTEGER SCALARS
86 integer_m :: jl
87 
88 
89 !-----------------------------------------------------------------------
90 
91 !* 1. HORNER'S ALGORITHM TO COMPUTE TRANSMISSION FUNCTION
92 
93 
94 DO jl = kidia,kfdia
95  zr1(jl) = apad(knu,ka,1) + pu(jl) * (apad(knu,ka,2) + pu(jl)&
96  &* ( apad(knu,ka,3) + pu(jl) * (apad(knu,ka,4) + pu(jl)&
97  &* ( apad(knu,ka,5) + pu(jl) * (apad(knu,ka,6) + pu(jl)&
98  &* ( apad(knu,ka,7) ))))))
99 
100  zr2(jl) = bpad(knu,ka,1) + pu(jl) * (bpad(knu,ka,2) + pu(jl)&
101  &* ( bpad(knu,ka,3) + pu(jl) * (bpad(knu,ka,4) + pu(jl)&
102  &* ( bpad(knu,ka,5) + pu(jl) * (bpad(knu,ka,6) + pu(jl)&
103  &* ( bpad(knu,ka,7) ))))))
104 
105 
106 !* 2. ADD THE BACKGROUND TRANSMISSION
107 
108 
109 
110  ptr(jl) = (zr1(jl) / zr2(jl)) * (_one_ - d(knu,ka)) + d(knu,ka)
111 ENDDO
112 
113 RETURN
114 END SUBROUTINE swtt
Definition: yoesw.F90:1
real(kind=jprb), dimension(6, 3) d
Definition: yoesw.F90:28
integer, save kidia
Definition: dimphy.F90:6
integer, save klon
Definition: dimphy.F90:3
real(kind=jprb), dimension(6, 3, 7) bpad
Definition: yoesw.F90:14
real(kind=jprb), dimension(6, 3, 7) apad
Definition: yoesw.F90:13
integer, save kfdia
Definition: dimphy.F90:5
subroutine swtt(KIDIA, KFDIA, KLON, KNU, KA, PU, PTR)
Definition: swtt.F90:2