source: LMDZ5/trunk/libf/phylmd/phys_state_var_mod.F90 @ 2225

Last change on this file since 2225 was 2205, checked in by fhourdin, 10 years ago

Introduction of a bi-gausian descrption of the subgrid scale
distribution of water associated with deep convection.

Introduction d'un schéma bi-gausien pour la distribution sous maille
de l'eau associée à la convection profonde.

Contrôlé par
iflag_cld_cv=2 (1 pour le schéma de Bony et Emanuel 2001)
autres paramètres de contrôle : tau_cld_cv et coefw_cld_cv

Arnaud Jam

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 25.3 KB
Line 
1!
2! $Id: phys_state_var_mod.F90 2205 2015-02-13 07:22:32Z emillour $
3!
4      MODULE phys_state_var_mod
5! Variables sauvegardees pour le startphy.nc
6!======================================================================
7!
8!
9!======================================================================
10! Declaration des variables
11      USE dimphy
12      INTEGER, PARAMETER :: nlevSTD=17
13      INTEGER, PARAMETER :: nlevSTD8=8
14      INTEGER, PARAMETER :: nlevSTD3=3
15      INTEGER, PARAMETER :: nout=3
16      INTEGER, PARAMETER :: napisccp=1
17      INTEGER, SAVE :: radpas
18!$OMP THREADPRIVATE(radpas)
19      REAL, SAVE :: dtime, solaire_etat0
20!$OMP THREADPRIVATE(dtime, solaire_etat0)
21
22      REAL, ALLOCATABLE, SAVE :: rlat(:), rlon(:), pctsrf(:,:)
23!$OMP THREADPRIVATE(rlat, rlon, pctsrf)
24      REAL, ALLOCATABLE, SAVE :: ftsol(:,:)
25!$OMP THREADPRIVATE(ftsol)
26!      character(len=6), SAVE :: ocean
27!!!!!!$OMP THREADPRIVATE(ocean)
28!      logical, SAVE :: ok_veget
29!!!!!!$OMP THREADPRIVATE(ok_veget)
30      REAL, ALLOCATABLE, SAVE :: falb1(:,:), falb2(:,:)
31!$OMP THREADPRIVATE(falb1, falb2)
32      REAL, ALLOCATABLE, SAVE :: rain_fall(:), snow_fall(:)
33!$OMP THREADPRIVATE( rain_fall, snow_fall)
34      REAL, ALLOCATABLE, SAVE :: solsw(:), sollw(:)
35!$OMP THREADPRIVATE(solsw, sollw)
36      REAL, ALLOCATABLE, SAVE :: radsol(:)
37!$OMP THREADPRIVATE(radsol)
38
39!clesphy0 param physiq
40!
41! Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
42!
43      REAL, ALLOCATABLE, SAVE :: zmea(:), zstd(:), zsig(:), zgam(:)
44!$OMP THREADPRIVATE(zmea, zstd, zsig, zgam)
45      REAL, ALLOCATABLE, SAVE :: zthe(:), zpic(:), zval(:)
46!$OMP THREADPRIVATE(zthe, zpic, zval)
47!     REAL tabcntr0(100)
48      REAL, ALLOCATABLE, SAVE :: rugoro(:)
49!$OMP THREADPRIVATE(rugoro)
50      REAL, ALLOCATABLE, SAVE :: t_ancien(:,:), q_ancien(:,:)
51!$OMP THREADPRIVATE(t_ancien, q_ancien)
52      REAL, ALLOCATABLE, SAVE :: u_ancien(:,:), v_ancien(:,:)
53!$OMP THREADPRIVATE(u_ancien, v_ancien)
54!!! RomP >>>
55      REAL, ALLOCATABLE, SAVE :: tr_ancien(:,:,:)
56!$OMP THREADPRIVATE(tr_ancien)
57!!! RomP <<<
58      LOGICAL, SAVE :: ancien_ok
59!$OMP THREADPRIVATE(ancien_ok)
60      REAL, ALLOCATABLE, SAVE :: clwcon(:,:),rnebcon(:,:)
61!$OMP THREADPRIVATE(clwcon,rnebcon)
62      REAL, ALLOCATABLE, SAVE :: qtc_cv(:,:),sigt_cv(:,:)
63!$OMP THREADPRIVATE(qtc_cv,sigt_cv)
64      REAL, ALLOCATABLE, SAVE :: ratqs(:,:)
65!$OMP THREADPRIVATE(ratqs)
66      REAL, ALLOCATABLE, SAVE :: pbl_tke(:,:,:) ! turb kinetic energy
67      REAL, ALLOCATABLE, SAVE :: coefh(:,:,:) ! Kz enthalpie
68      REAL, ALLOCATABLE, SAVE :: coefm(:,:,:) ! Kz momentum
69!$OMP THREADPRIVATE(pbl_tke, coefh,coefm)
70!nrlmd<
71      REAL, ALLOCATABLE, SAVE :: delta_tsurf(:,:) ! Surface temperature difference inside-outside cold pool
72!$OMP THREADPRIVATE(delta_tsurf)
73!>nrlmd
74      REAL, ALLOCATABLE, SAVE :: zmax0(:), f0(:) !
75!$OMP THREADPRIVATE(zmax0,f0)
76      REAL, ALLOCATABLE, SAVE :: sig1(:,:), w01(:,:)
77!$OMP THREADPRIVATE(sig1,w01)
78      REAL, ALLOCATABLE, SAVE :: entr_therm(:,:), fm_therm(:,:)
79!$OMP THREADPRIVATE(entr_therm,fm_therm)
80      REAL, ALLOCATABLE, SAVE :: detr_therm(:,:)
81!$OMP THREADPRIVATE(detr_therm)
82!IM 150408
83!     pour phsystoke avec thermiques
84      REAL,ALLOCATABLE,SAVE :: clwcon0th(:,:),rnebcon0th(:,:)
85!$OMP THREADPRIVATE(clwcon0th,rnebcon0th)
86! radiation outputs
87      REAL,ALLOCATABLE,SAVE :: swdn0(:,:), swdn(:,:)
88!$OMP THREADPRIVATE(swdn0,swdn)
89      REAL,ALLOCATABLE,SAVE :: swup0(:,:), swup(:,:)
90!$OMP THREADPRIVATE(swup0,swup)
91      REAL,ALLOCATABLE,SAVE :: SWdn200clr(:), SWdn200(:)
92!$OMP THREADPRIVATE(SWdn200clr,SWdn200)
93      REAL,ALLOCATABLE,SAVE :: SWup200clr(:), SWup200(:)
94!$OMP THREADPRIVATE(SWup200clr,SWup200)
95      REAL,ALLOCATABLE,SAVE :: lwdn0(:,:), lwdn(:,:)
96!$OMP THREADPRIVATE(lwdn0,lwdn)
97      REAL,ALLOCATABLE,SAVE :: lwup0(:,:), lwup(:,:)
98!$OMP THREADPRIVATE(lwup0,lwup)
99      REAL,ALLOCATABLE,SAVE :: LWdn200clr(:), LWdn200(:)
100!$OMP THREADPRIVATE(LWdn200clr,LWdn200)
101      REAL,ALLOCATABLE,SAVE :: LWup200clr(:), LWup200(:)
102!$OMP THREADPRIVATE(LWup200clr,LWup200)
103      REAL,ALLOCATABLE,SAVE :: LWdnTOA(:), LWdnTOAclr(:)
104!$OMP THREADPRIVATE(LWdnTOA,LWdnTOAclr)
105! pressure level
106      REAL,ALLOCATABLE,SAVE :: tsumSTD(:,:,:)
107!$OMP THREADPRIVATE(tsumSTD)
108      REAL,ALLOCATABLE,SAVE :: usumSTD(:,:,:), vsumSTD(:,:,:)
109!$OMP THREADPRIVATE(usumSTD,vsumSTD)
110      REAL,ALLOCATABLE,SAVE :: wsumSTD(:,:,:), phisumSTD(:,:,:)
111!$OMP THREADPRIVATE(wsumSTD,phisumSTD)
112      REAL,ALLOCATABLE,SAVE :: qsumSTD(:,:,:), rhsumSTD(:,:,:)
113!$OMP THREADPRIVATE(qsumSTD,rhsumSTD)
114      REAL,ALLOCATABLE,SAVE :: tnondef(:,:,:)
115!$OMP THREADPRIVATE(tnondef)
116      REAL,ALLOCATABLE,SAVE :: uvsumSTD(:,:,:)
117!$OMP THREADPRIVATE(uvsumSTD)
118      REAL,ALLOCATABLE,SAVE :: vqsumSTD(:,:,:)
119!$OMP THREADPRIVATE(vqsumSTD)
120      REAL,ALLOCATABLE,SAVE :: vTsumSTD(:,:,:)
121!$OMP THREADPRIVATE(vTsumSTD)
122      REAL,ALLOCATABLE,SAVE :: wqsumSTD(:,:,:)
123!$OMP THREADPRIVATE(wqsumSTD)
124      REAL,ALLOCATABLE,SAVE :: vphisumSTD(:,:,:)
125!$OMP THREADPRIVATE(vphisumSTD)
126      REAL,ALLOCATABLE,SAVE :: wTsumSTD(:,:,:)
127!$OMP THREADPRIVATE(wTsumSTD)
128      REAL,ALLOCATABLE,SAVE :: u2sumSTD(:,:,:)
129!$OMP THREADPRIVATE(u2sumSTD)
130      REAL,ALLOCATABLE,SAVE :: v2sumSTD(:,:,:)
131!$OMP THREADPRIVATE(v2sumSTD)
132      REAL,ALLOCATABLE,SAVE :: T2sumSTD(:,:,:)
133!$OMP THREADPRIVATE(T2sumSTD)
134      REAL,ALLOCATABLE,SAVE :: O3sumSTD(:,:,:), O3daysumSTD(:,:,:)
135!$OMP THREADPRIVATE(O3sumSTD,O3daysumSTD)
136!IM begin
137      REAL,ALLOCATABLE,SAVE :: wlevSTD(:,:), ulevSTD(:,:), vlevSTD(:,:)
138!$OMP THREADPRIVATE(wlevSTD,ulevSTD,vlevSTD)
139      REAL,ALLOCATABLE,SAVE :: tlevSTD(:,:), qlevSTD(:,:), rhlevSTD(:,:)
140!$OMP THREADPRIVATE(tlevSTD,qlevSTD,rhlevSTD)
141      REAL,ALLOCATABLE,SAVE :: philevSTD(:,:)
142!$OMP THREADPRIVATE(philevSTD)
143      REAL,ALLOCATABLE,SAVE :: uvSTD(:,:)
144!$OMP THREADPRIVATE(uvSTD)
145      REAL,ALLOCATABLE,SAVE :: vqSTD(:,:)
146!$OMP THREADPRIVATE(vqSTD)
147      REAL,ALLOCATABLE,SAVE :: vTSTD(:,:)
148!$OMP THREADPRIVATE(vTSTD)
149      REAL,ALLOCATABLE,SAVE :: wqSTD(:,:)
150!$OMP THREADPRIVATE(wqSTD)
151      REAL,ALLOCATABLE,SAVE :: vphiSTD(:,:)
152!$OMP THREADPRIVATE(vphiSTD)
153      REAL,ALLOCATABLE,SAVE :: wTSTD(:,:)
154!$OMP THREADPRIVATE(wTSTD)
155      REAL,ALLOCATABLE,SAVE :: u2STD(:,:)
156!$OMP THREADPRIVATE(u2STD)
157      REAL,ALLOCATABLE,SAVE :: v2STD(:,:)
158!$OMP THREADPRIVATE(v2STD)
159      REAL,ALLOCATABLE,SAVE :: T2STD(:,:)
160!$OMP THREADPRIVATE(T2STD)
161      REAL,ALLOCATABLE,SAVE :: O3STD(:,:), O3daySTD(:,:)
162!$OMP THREADPRIVATE(O3STD,O3daySTD)
163!IM end
164      INTEGER,ALLOCATABLE,SAVE :: seed_old(:,:)
165!$OMP THREADPRIVATE(seed_old)
166      REAL,ALLOCATABLE,SAVE :: zuthe(:),zvthe(:)
167!$OMP THREADPRIVATE(zuthe,zvthe)
168      REAL,ALLOCATABLE,SAVE :: alb_neig(:)
169!$OMP THREADPRIVATE(alb_neig)
170!cloud base mass flux
171      REAL,ALLOCATABLE,SAVE :: ema_cbmf(:)
172!$OMP THREADPRIVATE(ema_cbmf)
173!cloud base pressure & cloud top pressure
174      REAL,ALLOCATABLE,SAVE :: ema_pcb(:), ema_pct(:)
175!$OMP THREADPRIVATE(ema_pcb,ema_pct)
176      REAL,ALLOCATABLE,SAVE :: Ma(:,:)        ! undilute upward mass flux
177!$OMP THREADPRIVATE(Ma)
178      REAL,ALLOCATABLE,SAVE :: qcondc(:,:)    ! in-cld water content from convect
179!$OMP THREADPRIVATE(qcondc)
180      REAL,ALLOCATABLE,SAVE :: wd(:) ! sb
181!$OMP THREADPRIVATE(wd)
182      REAL,ALLOCATABLE,SAVE :: sigd(:)
183!$OMP THREADPRIVATE(sigd)
184!
185      REAL,ALLOCATABLE,SAVE :: cin(:)
186!$OMP THREADPRIVATE(cin)
187! ftd : differential heating between wake and environment
188      REAL,ALLOCATABLE,SAVE :: ftd(:,:)
189!$OMP THREADPRIVATE(ftd)
190! fqd : differential moistening between wake and environment
191      REAL,ALLOCATABLE,SAVE :: fqd(:,:)     
192!$OMP THREADPRIVATE(fqd)
193!34EK
194! -- Variables de controle de ALE et ALP
195!ALE : Energie disponible pour soulevement : utilisee par la
196!      convection d'Emanuel pour le declenchement et la regulation
197      REAL,ALLOCATABLE,SAVE :: ALE(:)
198!$OMP THREADPRIVATE(ALE)
199!ALP : Puissance  disponible pour soulevement
200      REAL,ALLOCATABLE,SAVE :: ALP(:)
201!$OMP THREADPRIVATE(ALP)
202!
203! nouvelles variables pour le couplage convection-couche limite
204      REAL,ALLOCATABLE,SAVE :: Ale_bl(:)
205!$OMP THREADPRIVATE(Ale_bl)
206      REAL,ALLOCATABLE,SAVE :: Alp_bl(:)
207!$OMP THREADPRIVATE(Alp_bl)
208      INTEGER,ALLOCATABLE,SAVE :: lalim_conv(:)
209!$OMP THREADPRIVATE(lalim_conv)
210      REAL,ALLOCATABLE,SAVE :: wght_th(:,:)
211!$OMP THREADPRIVATE(wght_th)
212!
213! variables de la wake
214! wake_deltat : ecart de temperature avec la zone non perturbee
215! wake_deltaq : ecart d'humidite avec la zone non perturbee
216! wake_Cstar  : vitesse d'etalement de la poche
217! wake_s      : fraction surfacique occupee par la poche froide
218! wake_pe     : wake potential energy - WAPE
219! wake_fip    : Gust Front Impinging power - ALP
220! dt_wake, dq_wake: LS tendencies due to wake
221      REAL,ALLOCATABLE,SAVE :: wake_deltat(:,:)
222!$OMP THREADPRIVATE(wake_deltat)
223      REAL,ALLOCATABLE,SAVE :: wake_deltaq(:,:)
224!$OMP THREADPRIVATE(wake_deltaq)
225      REAL,ALLOCATABLE,SAVE :: wake_Cstar(:)
226!$OMP THREADPRIVATE(wake_Cstar)
227      REAL,ALLOCATABLE,SAVE :: wake_s(:)
228!$OMP THREADPRIVATE(wake_s)
229      REAL,ALLOCATABLE,SAVE :: wake_pe(:)
230!$OMP THREADPRIVATE(wake_pe)
231      REAL,ALLOCATABLE,SAVE :: wake_fip(:)
232!$OMP THREADPRIVATE(wake_fip)
233      REAL,ALLOCATABLE,SAVE :: dt_wake(:,:)
234!$OMP THREADPRIVATE(dt_wake)
235      REAL,ALLOCATABLE,SAVE :: dq_wake(:,:)
236!$OMP THREADPRIVATE(dq_wake)
237!
238!jyg<
239! variables related to the spitting of the PBL between wake and
240! off-wake regions.
241! wake_delta_pbl_TKE : difference TKE_w - TKE_x
242      REAL,ALLOCATABLE,SAVE :: wake_delta_pbl_TKE(:,:,:)
243!$OMP THREADPRIVATE(wake_delta_pbl_TKE)
244!>jyg
245!
246! pfrac_impa : Produits des coefs lessivage impaction
247! pfrac_nucl : Produits des coefs lessivage nucleation
248! pfrac_1nucl: Produits des coefs lessi nucl (alpha = 1)
249      REAL,ALLOCATABLE,SAVE :: pfrac_impa(:,:), pfrac_nucl(:,:)
250!$OMP THREADPRIVATE(pfrac_impa,pfrac_nucl)
251      REAL,ALLOCATABLE,SAVE :: pfrac_1nucl(:,:)
252!$OMP THREADPRIVATE(pfrac_1nucl)
253!
254      REAL,ALLOCATABLE,SAVE :: total_rain(:), nday_rain(:) 
255!$OMP THREADPRIVATE(total_rain,nday_rain)
256      REAL,ALLOCATABLE,SAVE :: paire_ter(:)
257!$OMP THREADPRIVATE(paire_ter)
258! albsol1: albedo du sol total pour SW visible
259! albsol2: albedo du sol total pour SW proche IR
260      REAL,ALLOCATABLE,SAVE :: albsol1(:), albsol2(:)
261!$OMP THREADPRIVATE(albsol1,albsol2)
262
263      REAL, ALLOCATABLE, SAVE:: wo(:, :, :)
264      ! column-density of ozone in a layer, in kilo-Dobsons
265      ! Third dimension has size 1 or 2.
266      ! "wo(:, :, 1)" is for the average day-night field,
267      ! "wo(:, :, 2)" is for daylight time.
268      !$OMP THREADPRIVATE(wo)
269
270! heat : chauffage solaire
271! heat0: chauffage solaire ciel clair
272! cool : refroidissement infrarouge
273! cool0 : refroidissement infrarouge ciel clair
274! sollwdown : downward LW flux at surface
275! sollwdownclr : downward CS LW flux at surface
276! toplwdown : downward CS LW flux at TOA
277! toplwdownclr : downward CS LW flux at TOA
278      REAL,ALLOCATABLE,SAVE :: clwcon0(:,:),rnebcon0(:,:)
279!$OMP THREADPRIVATE(clwcon0,rnebcon0)
280      REAL,ALLOCATABLE,SAVE :: heat(:,:)   
281!$OMP THREADPRIVATE(heat)
282      REAL,ALLOCATABLE,SAVE :: heat0(:,:)
283!$OMP THREADPRIVATE(heat0)
284      REAL,ALLOCATABLE,SAVE :: cool(:,:)
285!$OMP THREADPRIVATE(cool)
286      REAL,ALLOCATABLE,SAVE :: cool0(:,:)
287!$OMP THREADPRIVATE(cool0)
288      REAL,ALLOCATABLE,SAVE :: topsw(:), toplw(:)
289!$OMP THREADPRIVATE(topsw,toplw)
290      REAL,ALLOCATABLE,SAVE :: sollwdown(:)
291!$OMP THREADPRIVATE(sollwdown)
292      REAL,ALLOCATABLE,SAVE :: sollwdownclr(:)
293!$OMP THREADPRIVATE(sollwdownclr)
294      REAL,ALLOCATABLE,SAVE :: toplwdown(:)
295!$OMP THREADPRIVATE(toplwdown)
296      REAL,ALLOCATABLE,SAVE :: toplwdownclr(:)
297!$OMP THREADPRIVATE(toplwdownclr)
298      REAL,ALLOCATABLE,SAVE :: topsw0(:),toplw0(:),solsw0(:),sollw0(:)
299!$OMP THREADPRIVATE(topsw0,toplw0,solsw0,sollw0)
300      REAL,ALLOCATABLE,SAVE :: albpla(:)
301!$OMP THREADPRIVATE(albpla)
302
303!IM ajout variables CFMIP2/CMIP5
304      REAL,ALLOCATABLE,SAVE :: heatp(:,:), coolp(:,:)
305!$OMP THREADPRIVATE(heatp, coolp)
306      REAL,ALLOCATABLE,SAVE :: heat0p(:,:), cool0p(:,:)
307!$OMP THREADPRIVATE(heat0p, cool0p)
308      REAL,ALLOCATABLE,SAVE :: radsolp(:), topswp(:), toplwp(:)
309!$OMP THREADPRIVATE(radsolp, topswp, toplwp)
310      REAL,ALLOCATABLE,SAVE :: albplap(:)
311!$OMP THREADPRIVATE(albplap)
312      REAL,ALLOCATABLE,SAVE :: solswp(:), sollwp(:)
313!$OMP THREADPRIVATE(solswp, sollwp)
314      REAL,ALLOCATABLE,SAVE :: sollwdownp(:)
315!$OMP THREADPRIVATE(sollwdownp)
316      REAL,ALLOCATABLE,SAVE :: topsw0p(:),toplw0p(:)
317      REAL,ALLOCATABLE,SAVE :: solsw0p(:),sollw0p(:)
318!$OMP THREADPRIVATE(topsw0p,toplw0p,solsw0p,sollw0p)
319      REAL,ALLOCATABLE,SAVE :: lwdn0p(:,:), lwdnp(:,:)
320      REAL,ALLOCATABLE,SAVE :: lwup0p(:,:), lwupp(:,:)
321!$OMP THREADPRIVATE(lwdn0p, lwdnp, lwup0p, lwupp)
322      REAL,ALLOCATABLE,SAVE :: swdn0p(:,:), swdnp(:,:)
323      REAL,ALLOCATABLE,SAVE :: swup0p(:,:), swupp(:,:)
324!$OMP THREADPRIVATE(swdn0p, swdnp, swup0p, swupp)
325
326! pbase : cloud base pressure
327! bbase : cloud base buoyancy
328      REAL,ALLOCATABLE,SAVE :: cape(:)
329!$OMP THREADPRIVATE(cape)
330      REAL,ALLOCATABLE,SAVE :: pbase(:)
331!$OMP THREADPRIVATE(pbase)
332      REAL,ALLOCATABLE,SAVE :: bbase(:)
333!$OMP THREADPRIVATE(bbase)
334!
335      REAL,SAVE,ALLOCATABLE :: zqasc(:,:)
336!$OMP THREADPRIVATE( zqasc)
337      INTEGER,ALLOCATABLE,SAVE :: ibas_con(:), itop_con(:)
338!$OMP THREADPRIVATE(ibas_con,itop_con)
339      REAL,SAVE,ALLOCATABLE :: rain_con(:)
340!$OMP THREADPRIVATE(rain_con)
341      REAL,SAVE,ALLOCATABLE :: snow_con(:)
342!$OMP THREADPRIVATE(snow_con)
343!
344      REAL,SAVE,ALLOCATABLE :: rlonPOS(:)
345!$OMP THREADPRIVATE(rlonPOS)
346      REAL,SAVE,ALLOCATABLE :: newsst(:)
347!$OMP THREADPRIVATE(newsst)
348      REAL,SAVE,ALLOCATABLE :: ustar(:,:),u10m(:,:), v10m(:,:),wstar(:,:)
349!$OMP THREADPRIVATE(ustar,u10m,v10m,wstar)
350!
351! ok_ade=T -ADE=topswad-topsw
352! ok_aie=T ->
353!       ok_ade=T -AIE=topswai-topswad
354!       ok_ade=F -AIE=topswai-topsw
355!
356!topswad, solswad : Aerosol direct effect
357      REAL,SAVE,ALLOCATABLE :: topswad(:), solswad(:)
358!$OMP THREADPRIVATE(topswad,solswad)
359!topswai, solswai : Aerosol indirect effect
360      REAL,SAVE,ALLOCATABLE :: topswai(:), solswai(:)
361!$OMP THREADPRIVATE(topswai,solswai)
362
363      REAL,SAVE,ALLOCATABLE :: tau_aero(:,:,:,:), piz_aero(:,:,:,:), cg_aero(:,:,:,:)
364!$OMP THREADPRIVATE(tau_aero, piz_aero, cg_aero)
365      REAL,SAVE,ALLOCATABLE :: tau_aero_sw_rrtm(:,:,:,:), piz_aero_sw_rrtm(:,:,:,:), cg_aero_sw_rrtm(:,:,:,:)
366!$OMP THREADPRIVATE(tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm)
367      REAL,SAVE,ALLOCATABLE :: tau_aero_lw_rrtm(:,:,:,:), piz_aero_lw_rrtm(:,:,:,:), cg_aero_lw_rrtm(:,:,:,:)
368!$OMP THREADPRIVATE(tau_aero_lw_rrtm, piz_aero_lw_rrtm, cg_aero_lw_rrtm)
369      REAL,SAVE,ALLOCATABLE :: ccm(:,:,:)
370!$OMP THREADPRIVATE(ccm)
371
372!!! nrlmd le 10/04/2012
373      REAL,SAVE,ALLOCATABLE :: ale_bl_trig(:)
374!$OMP THREADPRIVATE(ale_bl_trig)
375!!! fin nrlmd le 10/04/2012
376
377      REAL, ALLOCATABLE, SAVE:: du_gwd_rando(:, :), dv_gwd_rando(:, :)
378      !$OMP THREADPRIVATE(du_gwd_rando, dv_gwd_rando)
379      ! tendencies on wind due to gravity waves
380
381CONTAINS
382
383!======================================================================
384SUBROUTINE phys_state_var_init(read_climoz)
385USE dimphy
386USE control_mod
387USE aero_mod
388USE infotrac, ONLY : nbtr
389USE indice_sol_mod
390IMPLICIT NONE
391
392integer, intent(in)::  read_climoz
393! read ozone climatology
394! Allowed values are 0, 1 and 2
395! 0: do not read an ozone climatology
396! 1: read a single ozone climatology that will be used day and night
397! 2: read two ozone climatologies, the average day and night
398! climatology and the daylight climatology
399
400include "clesphys.h"
401      ALLOCATE(rlat(klon), rlon(klon))
402      ALLOCATE(pctsrf(klon,nbsrf))
403      ALLOCATE(ftsol(klon,nbsrf))
404      ALLOCATE(falb1(klon,nbsrf))
405      ALLOCATE(falb2(klon,nbsrf))
406      ALLOCATE(rain_fall(klon))
407      ALLOCATE(snow_fall(klon))
408      ALLOCATE(solsw(klon), sollw(klon))
409      ALLOCATE(radsol(klon))
410      ALLOCATE(zmea(klon), zstd(klon), zsig(klon), zgam(klon))
411      ALLOCATE(zthe(klon), zpic(klon), zval(klon))
412
413      ALLOCATE(rugoro(klon))
414      ALLOCATE(t_ancien(klon,klev), q_ancien(klon,klev))
415      ALLOCATE(u_ancien(klon,klev), v_ancien(klon,klev))
416!!! Rom P >>>
417      ALLOCATE(tr_ancien(klon,klev,nbtr))
418!!! Rom P <<<
419      ALLOCATE(clwcon(klon,klev),rnebcon(klon,klev))
420      ALLOCATE(qtc_cv(klon,klev),sigt_cv(klon,klev))
421      ALLOCATE(ratqs(klon,klev))
422      ALLOCATE(pbl_tke(klon,klev+1,nbsrf+1))
423!nrlmd<
424      ALLOCATE(delta_tsurf(klon,nbsrf))
425!>nrlmd
426      ALLOCATE(coefh(klon,klev+1,nbsrf+1))
427      ALLOCATE(coefm(klon,klev+1,nbsrf+1))
428      ALLOCATE(zmax0(klon), f0(klon))
429      ALLOCATE(sig1(klon,klev), w01(klon,klev))
430      ALLOCATE(entr_therm(klon,klev), fm_therm(klon,klev+1))
431      ALLOCATE(detr_therm(klon,klev))
432!     pour phsystoke avec thermiques
433      ALLOCATE(clwcon0th(klon,klev),rnebcon0th(klon,klev))
434! radiation outputs
435      ALLOCATE(swdn0(klon,klevp1), swdn(klon,klevp1))
436      ALLOCATE(swup0(klon,klevp1), swup(klon,klevp1))
437      ALLOCATE(lwdn0(klon,klevp1), lwdn(klon,klevp1))
438      ALLOCATE(lwup0(klon,klevp1), lwup(klon,klevp1))
439      ALLOCATE(SWdn200clr(klon), SWdn200(klon))
440      ALLOCATE(SWup200clr(klon), SWup200(klon))
441      ALLOCATE(LWdn200clr(klon), LWdn200(klon))
442      ALLOCATE(LWup200clr(klon), LWup200(klon))
443      ALLOCATE(LWdnTOA(klon), LWdnTOAclr(klon))
444! pressure level
445      ALLOCATE(tsumSTD(klon,nlevSTD,nout))
446      ALLOCATE(usumSTD(klon,nlevSTD,nout), vsumSTD(klon,nlevSTD,nout))
447      ALLOCATE(wsumSTD(klon,nlevSTD,nout), phisumSTD(klon,nlevSTD,nout))
448      ALLOCATE(qsumSTD(klon,nlevSTD,nout), rhsumSTD(klon,nlevSTD,nout))
449      ALLOCATE(tnondef(klon,nlevSTD,nout))
450      ALLOCATE(uvsumSTD(klon,nlevSTD,nout))
451      ALLOCATE(vqsumSTD(klon,nlevSTD,nout))
452      ALLOCATE(vTsumSTD(klon,nlevSTD,nout))
453      ALLOCATE(wqsumSTD(klon,nlevSTD,nout))
454      ALLOCATE(vphisumSTD(klon,nlevSTD,nout))
455      ALLOCATE(wTsumSTD(klon,nlevSTD,nout))
456      ALLOCATE(u2sumSTD(klon,nlevSTD,nout))
457      ALLOCATE(v2sumSTD(klon,nlevSTD,nout))
458      ALLOCATE(T2sumSTD(klon,nlevSTD,nout))
459      ALLOCATE(O3sumSTD(klon,nlevSTD,nout))
460      ALLOCATE(O3daysumSTD(klon,nlevSTD,nout))
461!IM beg
462      ALLOCATE(wlevSTD(klon,nlevSTD), ulevSTD(klon,nlevSTD), vlevSTD(klon,nlevSTD))
463      ALLOCATE(tlevSTD(klon,nlevSTD), qlevSTD(klon,nlevSTD), rhlevSTD(klon,nlevSTD))
464      ALLOCATE(philevSTD(klon,nlevSTD))
465      ALLOCATE(uvSTD(klon,nlevSTD),vqSTD(klon,nlevSTD))
466      ALLOCATE(vTSTD(klon,nlevSTD),wqSTD(klon,nlevSTD))
467      ALLOCATE(vphiSTD(klon,nlevSTD),wTSTD(klon,nlevSTD))
468      ALLOCATE(u2STD(klon,nlevSTD),v2STD(klon,nlevSTD))
469      ALLOCATE(T2STD(klon,nlevSTD))
470      ALLOCATE(O3STD(klon,nlevSTD))
471      ALLOCATE(O3daySTD(klon,nlevSTD))
472!IM end
473      ALLOCATE(seed_old(klon,napisccp))
474      ALLOCATE(zuthe(klon),zvthe(klon))
475      ALLOCATE(alb_neig(klon))
476!cloud base mass flux
477      ALLOCATE(ema_cbmf(klon))
478!cloud base pressure & cloud top pressure
479      ALLOCATE(ema_pcb(klon), ema_pct(klon))
480!
481      ALLOCATE(Ma(klon,klev))
482      ALLOCATE(qcondc(klon,klev))
483      ALLOCATE(wd(klon))
484      ALLOCATE(sigd(klon))
485      ALLOCATE(cin(klon), ALE(klon), ALP(klon))
486      ALLOCATE(ftd(klon,klev), fqd(klon,klev))
487      ALLOCATE(Ale_bl(klon))
488      ALLOCATE(Alp_bl(klon))
489      ALLOCATE(lalim_conv(klon))
490      ALLOCATE(wght_th(klon,klev))
491      ALLOCATE(wake_deltat(klon,klev), wake_deltaq(klon,klev))
492      ALLOCATE(wake_Cstar(klon), wake_s(klon))
493      ALLOCATE(wake_pe(klon), wake_fip(klon))
494      ALLOCATE(dt_wake(klon,klev), dq_wake(klon,klev))
495!jyg<
496      ALLOCATE(wake_delta_pbl_TKE(klon,klev+1,nbsrf+1))
497!>jyg
498      ALLOCATE(pfrac_impa(klon,klev), pfrac_nucl(klon,klev))
499      ALLOCATE(pfrac_1nucl(klon,klev))
500      ALLOCATE(total_rain(klon), nday_rain(klon))
501      ALLOCATE(paire_ter(klon))
502      ALLOCATE(albsol1(klon), albsol2(klon))
503
504      if (read_climoz <= 1) then
505         ALLOCATE(wo(klon,klev, 1))
506      else
507         ! read_climoz == 2
508         ALLOCATE(wo(klon,klev, 2))
509      end if
510     
511      ALLOCATE(clwcon0(klon,klev),rnebcon0(klon,klev))
512      ALLOCATE(heat(klon,klev), heat0(klon,klev))
513      ALLOCATE(cool(klon,klev), cool0(klon,klev))
514      ALLOCATE(topsw(klon), toplw(klon))
515      ALLOCATE(sollwdown(klon), sollwdownclr(klon))
516      ALLOCATE(toplwdown(klon), toplwdownclr(klon))
517      ALLOCATE(topsw0(klon),toplw0(klon),solsw0(klon),sollw0(klon))
518      ALLOCATE(albpla(klon))
519!IM ajout variables CFMIP2/CMIP5
520      ALLOCATE(heatp(klon,klev), coolp(klon,klev))
521      ALLOCATE(heat0p(klon,klev), cool0p(klon,klev))
522      ALLOCATE(radsolp(klon), topswp(klon), toplwp(klon))
523      ALLOCATE(albplap(klon))
524      ALLOCATE(solswp(klon), sollwp(klon))
525      ALLOCATE(sollwdownp(klon))
526      ALLOCATE(topsw0p(klon),toplw0p(klon))
527      ALLOCATE(solsw0p(klon),sollw0p(klon))
528      ALLOCATE(lwdn0p(klon,klevp1), lwdnp(klon,klevp1))
529      ALLOCATE(lwup0p(klon,klevp1), lwupp(klon,klevp1))
530      ALLOCATE(swdn0p(klon,klevp1), swdnp(klon,klevp1))
531      ALLOCATE(swup0p(klon,klevp1), swupp(klon,klevp1))
532
533      ALLOCATE(cape(klon))
534      ALLOCATE(pbase(klon),bbase(klon))
535      ALLOCATE(zqasc(klon,klev))
536      ALLOCATE(ibas_con(klon), itop_con(klon))
537      ALLOCATE(rain_con(klon), snow_con(klon))
538      ALLOCATE(rlonPOS(klon))
539      ALLOCATE(newsst(klon))
540      ALLOCATE(ustar(klon,nbsrf),u10m(klon,nbsrf), v10m(klon,nbsrf),wstar(klon,nbsrf+1))
541      ALLOCATE(topswad(klon), solswad(klon))
542      ALLOCATE(topswai(klon), solswai(klon))
543      ALLOCATE(tau_aero(klon,klev,naero_grp,nbands),piz_aero(klon,klev,naero_grp,nbands),cg_aero(klon,klev,naero_grp,nbands))
544      ALLOCATE(tau_aero_sw_rrtm(klon,klev,2,nbands_sw_rrtm),piz_aero_sw_rrtm(klon,klev,2,nbands_sw_rrtm))
545      ALLOCATE(cg_aero_sw_rrtm(klon,klev,2,nbands_sw_rrtm))
546      ALLOCATE(tau_aero_lw_rrtm(klon,klev,2,nbands_lw_rrtm),piz_aero_lw_rrtm(klon,klev,2,nbands_lw_rrtm))
547      ALLOCATE(cg_aero_lw_rrtm(klon,klev,2,nbands_lw_rrtm))
548      ALLOCATE(ccm(klon,klev,nbands))
549
550!!! nrlmd le 10/04/2012
551      ALLOCATE(ale_bl_trig(klon))
552!!! fin nrlmd le 10/04/2012
553      if (ok_gwd_rando) allocate(du_gwd_rando(klon, klev), &
554           dv_gwd_rando(klon, klev))
555
556END SUBROUTINE phys_state_var_init
557
558!======================================================================
559SUBROUTINE phys_state_var_end
560USE dimphy
561USE control_mod
562USE indice_sol_mod
563IMPLICIT NONE
564include "clesphys.h"
565
566      deallocate(rlat, rlon, pctsrf, ftsol, falb1, falb2)
567      deallocate(rain_fall, snow_fall, solsw, sollw, radsol)
568      deallocate(zmea, zstd, zsig, zgam)
569      deallocate(zthe, zpic, zval)
570      deallocate(rugoro, t_ancien, q_ancien, clwcon, rnebcon)
571      deallocate(qtc_cv,sigt_cv)
572      deallocate(        u_ancien, v_ancien                 )
573      deallocate(        tr_ancien)                           !RomP
574      deallocate(ratqs, pbl_tke,coefh,coefm)
575!nrlmd<
576      deallocate(delta_tsurf)
577!>nrlmd
578      deallocate(zmax0, f0)
579      deallocate(sig1, w01)
580      deallocate(entr_therm, fm_therm)
581      deallocate(detr_therm)
582      deallocate(clwcon0th, rnebcon0th)
583! radiation outputs
584      deallocate(swdn0, swdn)
585      deallocate(swup0, swup)
586      deallocate(lwdn0, lwdn)
587      deallocate(lwup0, lwup)
588      deallocate(SWdn200clr, SWdn200)
589      deallocate(SWup200clr, SWup200)
590      deallocate(LWdn200clr, LWdn200)
591      deallocate(LWup200clr, LWup200)
592      deallocate(LWdnTOA, LWdnTOAclr)
593! pressure level
594      deallocate(tsumSTD)
595      deallocate(usumSTD, vsumSTD)
596      deallocate(wsumSTD, phisumSTD)
597      deallocate(tnondef)
598      deallocate(qsumSTD, rhsumSTD)
599      deallocate(uvsumSTD)
600      deallocate(vqsumSTD)
601      deallocate(vTsumSTD)
602      deallocate(wqsumSTD)
603      deallocate(vphisumSTD)
604      deallocate(wTsumSTD)
605      deallocate(u2sumSTD)
606      deallocate(v2sumSTD)
607      deallocate(T2sumSTD)
608      deallocate(O3sumSTD)
609      deallocate(O3daysumSTD)
610!IM beg
611      deallocate(wlevSTD,ulevSTD,vlevSTD,tlevSTD,qlevSTD,rhlevSTD,philevSTD)
612      deallocate(uvSTD,vqSTD,vTSTD,wqSTD,vphiSTD,wTSTD,u2STD,v2STD,T2STD,O3STD,O3daySTD)
613!IM end
614      deallocate(seed_old)
615      deallocate(zuthe, zvthe)
616      deallocate(alb_neig)
617      deallocate(ema_cbmf)
618      deallocate(ema_pcb, ema_pct)
619      deallocate(Ma, qcondc)
620      deallocate(wd, sigd)
621      deallocate(cin, ALE, ALP)
622      deallocate(ftd, fqd)
623      deallocate(Ale_bl, Alp_bl)
624      deallocate(lalim_conv, wght_th)
625      deallocate(wake_deltat, wake_deltaq)
626      deallocate(wake_Cstar, wake_s, wake_pe, wake_fip)
627      deallocate(dt_wake, dq_wake)
628!jyg<
629      deallocate(wake_delta_pbl_TKE)
630!>jyg
631      deallocate(pfrac_impa, pfrac_nucl)
632      deallocate(pfrac_1nucl)
633      deallocate(total_rain, nday_rain)
634      deallocate(paire_ter)
635      deallocate(albsol1, albsol2)
636      deallocate(wo)
637      deallocate(clwcon0,rnebcon0)
638      deallocate(heat, heat0)
639      deallocate(cool, cool0)
640      deallocate(topsw, toplw)
641      deallocate(sollwdown, sollwdownclr)
642      deallocate(toplwdown, toplwdownclr)
643      deallocate(topsw0,toplw0,solsw0,sollw0)
644      deallocate(albpla)
645!IM ajout variables CFMIP2/CMIP5
646      deallocate(heatp, coolp)
647      deallocate(heat0p, cool0p)
648      deallocate(radsolp, topswp, toplwp)
649      deallocate(albplap)
650      deallocate(solswp, sollwp)
651      deallocate(sollwdownp)
652      deallocate(topsw0p,toplw0p)
653      deallocate(solsw0p,sollw0p)
654      deallocate(lwdn0p, lwdnp)
655      deallocate(lwup0p, lwupp)
656      deallocate(swdn0p, swdnp)
657      deallocate(swup0p, swupp)
658      deallocate(cape)
659      deallocate(pbase,bbase)
660      deallocate(zqasc)
661      deallocate(ibas_con, itop_con)
662      deallocate(rain_con, snow_con)
663      deallocate(rlonPOS)
664      deallocate(newsst)
665      deallocate(ustar,u10m, v10m,wstar)
666      deallocate(topswad, solswad)
667      deallocate(topswai, solswai)
668      deallocate(tau_aero,piz_aero,cg_aero)
669      deallocate(tau_aero_sw_rrtm,piz_aero_sw_rrtm,cg_aero_sw_rrtm)
670      deallocate(tau_aero_lw_rrtm,piz_aero_lw_rrtm,cg_aero_lw_rrtm)
671      deallocate(ccm)
672      if (ok_gwd_rando) deallocate(du_gwd_rando, dv_gwd_rando)
673       
674!!! nrlmd le 10/04/2012
675      deallocate(ale_bl_trig)
676!!! fin nrlmd le 10/04/2012
677
678END SUBROUTINE phys_state_var_end
679
680      END MODULE phys_state_var_mod
Note: See TracBrowser for help on using the repository browser.