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

Last change on this file since 1742 was 1742, checked in by idelkadi, 11 years ago

1- Inclusion des developpements de la these de Romain Pilon sur le
lessivage des aerosols :

a/ par les pluies convectives (modifs cv30_routines et cv3_routines pour

sortir les champs nécessaires au calcul off-line ; modif cvltr)

b/ par les pluies stratiformes (modifs phytrac et introduction

lsc_scav).

2- Choix entre plusieurs schemas pour les pluies stratiformes, commande
par iflag_lscav.

3- Quelques corrections dans la convection "Nouvelle Physique" pour
assurer la conservation des traceurs (cv3p1_mixing et cva_driver) (travail
de Robin Locatelli).

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