LMDZ
swtt1.F90
Go to the documentation of this file.
1 SUBROUTINE swtt1 ( KIDIA,KFDIA,KLON,KNU,KABS,KIND, PU, PTR )
2 
3 !**** *SWTT1* - 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 ! *SWTT1* IS CALLED FROM *SW1S*.
14 
15 ! EXPLICIT ARGUMENTS :
16 ! --------------------
17 ! KNU : ; INDEX OF THE SPECTRAL INTERVAL
18 ! KABS : ; NUMBER OF ABSORBERS
19 ! KIND : (KABS) ; INDICES OF THE ABSORBERS
20 ! PU : (KLON,KABS) ; ABSORBER AMOUNT
21 ! ==== OUTPUTS ===
22 ! PTR : (KLON,KABS) ; 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 : 95-01-20
51 ! 03-10-10 Deborah Salmond and Marta Janiskova Optimisation
52 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
53 
54 !-----------------------------------------------------------------------
55 
56 USE parkind1 ,ONLY : jpim ,jprb
57 USE yomhook ,ONLY : lhook, dr_hook
58 
59 USE yoesw , ONLY : apad ,bpad ,d
60 
61 IMPLICIT NONE
62 
63 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
64 INTEGER(KIND=JPIM),INTENT(IN) :: KABS
65 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
66 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
67 INTEGER(KIND=JPIM),INTENT(IN) :: KNU
68 INTEGER(KIND=JPIM),INTENT(IN) :: KIND(kabs)
69 REAL(KIND=JPRB) ,INTENT(IN) :: PU(klon,kabs)
70 REAL(KIND=JPRB) ,INTENT(OUT) :: PTR(klon,kabs)
71 !-----------------------------------------------------------------------
72 
73 !* 0.1 ARGUMENTS
74 ! ---------
75 
76 !-----------------------------------------------------------------------
77 
78 ! ------------
79 
80 REAL(KIND=JPRB) :: ZR1(klon), ZR2(klon), ZU(klon)
81 REAL(KIND=JPRB) :: ZRR
82 
83 INTEGER(KIND=JPIM) :: IA, JA, JL
84 REAL(KIND=JPRB) :: ZHOOK_HANDLE
85 
86 !-----------------------------------------------------------------------
87 
88 !* 1. HORNER'S ALGORITHM TO COMPUTE TRANSMISSION FUNCTION
89 
90 IF (lhook) CALL dr_hook('SWTT1',0,zhook_handle)
91 DO ja = 1,kabs
92  ia=kind(ja)
93 ! print *,'SWTT1: KNU', KNU
94  DO jl = kidia,kfdia
95  zu(jl) = pu(jl,ja)
96  zr1(jl) = apad(knu,ia,1) + zu(jl) * (apad(knu,ia,2) + zu(jl)&
97  & * ( apad(knu,ia,3) + zu(jl) * (apad(knu,ia,4) + zu(jl)&
98  & * ( apad(knu,ia,5) + zu(jl) * (apad(knu,ia,6) + zu(jl)&
99  & * ( apad(knu,ia,7) ))))))
100 ! print *,'SWTT1 ZU APAD',IA,ZU(JL),APAD(KNU,IA,1),APAD(KNU,IA,2),&
101 ! &APAD(KNU,IA,3),APAD(KNU,IA,4),APAD(KNU,IA,5),APAD(KNU,IA,6),APAD(KNU,IA,7)
102 
103  zr2(jl) = bpad(knu,ia,1) + zu(jl) * (bpad(knu,ia,2) + zu(jl)&
104  & * ( bpad(knu,ia,3) + zu(jl) * (bpad(knu,ia,4) + zu(jl)&
105  & * ( bpad(knu,ia,5) + zu(jl) * (bpad(knu,ia,6) + zu(jl)&
106  & * ( bpad(knu,ia,7) ))))))
107  zrr=1.0_jprb/zr2(jl)
108 
109 !* 2. ADD THE BACKGROUND TRANSMISSION
110 
111  ptr(jl,ja) = (zr1(jl)*zrr) * (1.0_jprb-d(knu,ia)) + d(knu,ia)
112  ENDDO
113 ENDDO
114 !WRITE(*,'("---> Dans SWTT1, PTR : "10E12.5)') (PTR(1,JA),JA=1,KABS)
115 
116 IF (lhook) CALL dr_hook('SWTT1',1,zhook_handle)
117 END SUBROUTINE swtt1
Definition: yoesw.F90:1
real(kind=jprb), dimension(6, 3) d
Definition: yoesw.F90:28
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, parameter jprb
Definition: parkind1.F90:31
logical lhook
Definition: yomhook.F90:12
subroutine swtt1(KIDIA, KFDIA, KLON, KNU, KABS, KIND, PU, PTR)
Definition: swtt1.F90:2
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
integer, parameter jpim
Definition: parkind1.F90:13