/[lmdze]/trunk/libf/phylmd/Radlwsw/lw.f
ViewVC logotype

Contents of /trunk/libf/phylmd/Radlwsw/lw.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 70 - (show annotations)
Mon Jun 24 15:39:52 2013 UTC (10 years, 10 months ago) by guez
File size: 6653 byte(s)
In procedure, "addfi" access directly the module variable "dtphys"
instead of going through an argument.

In "conflx", do not create a local variable for temperature with
reversed order of vertical levels. Instead, give an actual argument
with reversed order in "physiq".

Changed names of variables "rmd" and "rmv" from module "suphec_m" to
"md" and "mv".

In "hgardfou", print only the first temperature out of range found.

1 cIM ctes ds clesphys.h SUBROUTINE LW(RCO2,RCH4,RN2O,RCFC11,RCFC12,
2 SUBROUTINE LW(
3 . PPMB, PDP,
4 . PPSOL,PDT0,PEMIS,
5 . PTL, PTAVE, PWV, POZON, PAER,
6 . PCLDLD,PCLDLU,
7 . PVIEW,
8 . PCOLR, PCOLR0,
9 . PTOPLW,PSOLLW,PTOPLW0,PSOLLW0,
10 . psollwdown,
11 . plwup, plwdn, plwup0, plwdn0)
12 use dimens_m
13 use dimphy
14 use clesphys
15 use SUPHEC_M
16 use raddim
17 use raddimlw
18 IMPLICIT none
19 C
20 C-----------------------------------------------------------------------
21 C METHOD.
22 C -------
23 C
24 C 1. COMPUTES THE PRESSURE AND TEMPERATURE WEIGHTED AMOUNTS OF
25 C ABSORBERS.
26 C 2. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE
27 C GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS.
28 C 3. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON-
29 C TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE
30 C BOUNDARIES.
31 C 4. COMPUTES THE CLEAR-SKY DOWNWARD AND UPWARD EMISSIVITIES.
32 C 5. INTRODUCES THE EFFECTS OF THE CLOUDS ON THE FLUXES.
33 C
34 C
35 C REFERENCE.
36 C ----------
37 C
38 C SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
39 C ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
40 C
41 C AUTHOR.
42 C -------
43 C JEAN-JACQUES MORCRETTE *ECMWF*
44 C
45 C MODIFICATIONS.
46 C --------------
47 C ORIGINAL : 89-07-14
48 C-----------------------------------------------------------------------
49 cIM ctes ds clesphys.h
50 c REAL*8 RCO2 ! CO2 CONCENTRATION (IPCC:353.E-06* 44.011/28.97)
51 c REAL*8 RCH4 ! CH4 CONCENTRATION (IPCC: 1.72E-06* 16.043/28.97)
52 c REAL*8 RN2O ! N2O CONCENTRATION (IPCC: 310.E-09* 44.013/28.97)
53 c REAL*8 RCFC11 ! CFC11 CONCENTRATION (IPCC: 280.E-12* 137.3686/28.97)
54 c REAL*8 RCFC12 ! CFC12 CONCENTRATION (IPCC: 484.E-12* 120.9140/28.97)
55 REAL*8 PCLDLD(KDLON,KFLEV) ! DOWNWARD EFFECTIVE CLOUD COVER
56 REAL*8 PCLDLU(KDLON,KFLEV) ! UPWARD EFFECTIVE CLOUD COVER
57 REAL*8 PDP(KDLON,KFLEV) ! LAYER PRESSURE THICKNESS (Pa)
58 REAL*8 PDT0(KDLON) ! SURFACE TEMPERATURE DISCONTINUITY (K)
59 REAL*8 PEMIS(KDLON) ! SURFACE EMISSIVITY
60 REAL*8 PPMB(KDLON,KFLEV+1) ! HALF LEVEL PRESSURE (mb)
61 REAL*8 PPSOL(KDLON) ! SURFACE PRESSURE (Pa)
62 REAL*8 POZON(KDLON,KFLEV) ! O3 CONCENTRATION (kg/kg)
63 REAL*8 PTL(KDLON,KFLEV+1) ! HALF LEVEL TEMPERATURE (K)
64 REAL*8 PAER(KDLON,KFLEV,5) ! OPTICAL THICKNESS OF THE AEROSOLS
65 REAL*8 PTAVE(KDLON,KFLEV) ! LAYER TEMPERATURE (K)
66 REAL*8 PVIEW(KDLON) ! COSECANT OF VIEWING ANGLE
67 REAL*8 PWV(KDLON,KFLEV) ! SPECIFIC HUMIDITY (kg/kg)
68 C
69 REAL*8 PCOLR(KDLON,KFLEV) ! LONG-WAVE TENDENCY (K/day)
70 REAL*8 PCOLR0(KDLON,KFLEV) ! LONG-WAVE TENDENCY (K/day) clear-sky
71 REAL*8 PTOPLW(KDLON) ! LONGWAVE FLUX AT T.O.A.
72 REAL*8 PSOLLW(KDLON) ! LONGWAVE FLUX AT SURFACE
73 REAL*8 PTOPLW0(KDLON) ! LONGWAVE FLUX AT T.O.A. (CLEAR-SKY)
74 REAL*8 PSOLLW0(KDLON) ! LONGWAVE FLUX AT SURFACE (CLEAR-SKY)
75 c Rajout LF
76 real*8 psollwdown(kdlon) ! LONGWAVE downwards flux at surface
77 cIM
78 REAL*8 plwup(KDLON,KFLEV+1) ! LW up total sky
79 REAL*8 plwup0(KDLON,KFLEV+1) ! LW up clear sky
80 REAL*8 plwdn(KDLON,KFLEV+1) ! LW down total sky
81 REAL*8 plwdn0(KDLON,KFLEV+1) ! LW down clear sky
82 C-------------------------------------------------------------------------
83 REAL*8 ZABCU(KDLON,NUA,3*KFLEV+1)
84 REAL*8 ZOZ(KDLON,KFLEV)
85 c
86 REAL*8 ZFLUX(KDLON,2,KFLEV+1) ! RADIATIVE FLUXES (1:up; 2:down)
87 REAL*8 ZFLUC(KDLON,2,KFLEV+1) ! CLEAR-SKY RADIATIVE FLUXES
88 REAL*8 ZBINT(KDLON,KFLEV+1) ! Intermediate variable
89 REAL*8 ZBSUI(KDLON) ! Intermediate variable
90 REAL*8 ZCTS(KDLON,KFLEV) ! Intermediate variable
91 REAL*8 ZCNTRB(KDLON,KFLEV+1,KFLEV+1) ! Intermediate variable
92 SAVE ZFLUX, ZFLUC, ZBINT, ZBSUI, ZCTS, ZCNTRB
93 c
94 INTEGER ilim, i, k, kpl1
95 C
96 INTEGER lw0pas ! Every lw0pas steps, clear-sky is done
97 PARAMETER (lw0pas=1)
98 INTEGER lwpas ! Every lwpas steps, cloudy-sky is done
99 PARAMETER (lwpas=1)
100 c
101 INTEGER itaplw0, itaplw
102 LOGICAL appel1er
103 SAVE appel1er, itaplw0, itaplw
104 DATA appel1er /.TRUE./
105 DATA itaplw0,itaplw /0,0/
106 C ------------------------------------------------------------------
107 IF (appel1er) THEN
108 PRINT*, "LW clear-sky calling frequency: ", lw0pas
109 PRINT*, "LW cloudy-sky calling frequency: ", lwpas
110 PRINT*, " In general, they should be 1"
111 appel1er=.FALSE.
112 ENDIF
113 C
114 IF (MOD(itaplw0,lw0pas).EQ.0) THEN
115 DO k = 1, KFLEV ! convertir ozone de kg/kg en pa/pa
116 DO i = 1, KDLON
117 c convertir ozone de kg/kg en pa (modif MPL 100505)
118 ZOZ(i,k) = POZON(i,k)*PDP(i,k) * MD/RMO3
119 c print *,'LW: ZOZ*10**6=',ZOZ(i,k)*1000000.
120 ENDDO
121 ENDDO
122 cIM ctes ds clesphys.h CALL LWU(RCO2,RCH4, RN2O, RCFC11, RCFC12,
123 CALL LWU(
124 S PAER,PDP,PPMB,PPSOL,ZOZ,PTAVE,PVIEW,PWV,ZABCU)
125 CALL LWBV(ILIM,PDP,PDT0,PEMIS,PPMB,PTL,PTAVE,ZABCU,
126 S ZFLUC,ZBINT,ZBSUI,ZCTS,ZCNTRB)
127 itaplw0 = 0
128 ENDIF
129 itaplw0 = itaplw0 + 1
130 C
131 IF (MOD(itaplw,lwpas).EQ.0) THEN
132 CALL LWC(ILIM,PCLDLD,PCLDLU,PEMIS,
133 S ZFLUC,ZBINT,ZBSUI,ZCTS,ZCNTRB,
134 S ZFLUX)
135 itaplw = 0
136 ENDIF
137 itaplw = itaplw + 1
138 C
139 DO k = 1, KFLEV
140 kpl1 = k+1
141 DO i = 1, KDLON
142 PCOLR(i,k) = ZFLUX(i,1,kpl1)+ZFLUX(i,2,kpl1)
143 . - ZFLUX(i,1,k)- ZFLUX(i,2,k)
144 PCOLR(i,k) = PCOLR(i,k) * RDAY*RG/RCPD / PDP(i,k)
145 PCOLR0(i,k) = ZFLUC(i,1,kpl1)+ZFLUC(i,2,kpl1)
146 . - ZFLUC(i,1,k)- ZFLUC(i,2,k)
147 PCOLR0(i,k) = PCOLR0(i,k) * RDAY*RG/RCPD / PDP(i,k)
148 ENDDO
149 ENDDO
150 DO i = 1, KDLON
151 PSOLLW(i) = -ZFLUX(i,1,1)-ZFLUX(i,2,1)
152 PTOPLW(i) = ZFLUX(i,1,KFLEV+1) + ZFLUX(i,2,KFLEV+1)
153 c
154 PSOLLW0(i) = -ZFLUC(i,1,1)-ZFLUC(i,2,1)
155 PTOPLW0(i) = ZFLUC(i,1,KFLEV+1) + ZFLUC(i,2,KFLEV+1)
156 psollwdown(i) = -ZFLUX(i,2,1)
157 c
158 cIM attention aux signes !; LWtop >0, LWdn < 0
159 DO k = 1, KFLEV+1
160 plwup(i,k) = ZFLUX(i,1,k)
161 plwup0(i,k) = ZFLUC(i,1,k)
162 plwdn(i,k) = ZFLUX(i,2,k)
163 plwdn0(i,k) = ZFLUC(i,2,k)
164 ENDDO
165 ENDDO
166 C ------------------------------------------------------------------
167 RETURN
168 END

  ViewVC Help
Powered by ViewVC 1.1.21