source: LMDZ4/trunk/libf/phylmd/phys_state_var_mod.F90 @ 1362

Last change on this file since 1362 was 1362, checked in by Ehouarn Millour, 14 years ago

Bug fix: missing threadprivate OMP instructions

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 20.0 KB
Line 
1      MODULE phys_state_var_mod
2! Variables sauvegardees pour le startphy.nc
3!======================================================================
4!
5!
6!======================================================================
7! Declaration des variables
8      USE dimphy
9      INTEGER, PARAMETER :: nlevSTD=17
10      INTEGER, PARAMETER :: nlevSTD8=8
11      INTEGER, PARAMETER :: nlevSTD3=3
12      INTEGER, PARAMETER :: nout=3
13      INTEGER, PARAMETER :: napisccp=1
14      INTEGER, SAVE :: radpas
15!$OMP THREADPRIVATE(radpas)
16      REAL, SAVE :: dtime, solaire_etat0
17!$OMP THREADPRIVATE(dtime, solaire_etat0)
18
19      REAL, ALLOCATABLE, SAVE :: rlat(:), rlon(:), pctsrf(:,:)
20!$OMP THREADPRIVATE(rlat, rlon, pctsrf)
21      REAL, ALLOCATABLE, SAVE :: ftsol(:,:)
22!$OMP THREADPRIVATE(ftsol)
23!      character(len=6), SAVE :: ocean
24!!!!!!$OMP THREADPRIVATE(ocean)
25!      logical, SAVE :: ok_veget
26!!!!!!$OMP THREADPRIVATE(ok_veget)
27      REAL, ALLOCATABLE, SAVE :: falb1(:,:), falb2(:,:)
28!$OMP THREADPRIVATE(falb1, falb2)
29      REAL, ALLOCATABLE, SAVE :: rain_fall(:), snow_fall(:)
30!$OMP THREADPRIVATE( rain_fall, snow_fall)
31      REAL, ALLOCATABLE, SAVE :: solsw(:), sollw(:)
32!$OMP THREADPRIVATE(solsw, sollw)
33      REAL, ALLOCATABLE, SAVE :: radsol(:)
34!$OMP THREADPRIVATE(radsol)
35
36!clesphy0 param physiq
37!
38! Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
39!
40      REAL, ALLOCATABLE, SAVE :: zmea(:), zstd(:), zsig(:), zgam(:)
41!$OMP THREADPRIVATE(zmea, zstd, zsig, zgam)
42      REAL, ALLOCATABLE, SAVE :: zthe(:), zpic(:), zval(:)
43!$OMP THREADPRIVATE(zthe, zpic, zval)
44!     REAL tabcntr0(100)
45      REAL, ALLOCATABLE, SAVE :: rugoro(:)
46!$OMP THREADPRIVATE(rugoro)
47      REAL, ALLOCATABLE, SAVE :: t_ancien(:,:), q_ancien(:,:)
48!$OMP THREADPRIVATE(t_ancien, q_ancien)
49      REAL, ALLOCATABLE, SAVE :: u_ancien(:,:), v_ancien(:,:)
50!$OMP THREADPRIVATE(u_ancien, v_ancien)
51      LOGICAL, SAVE :: ancien_ok
52!$OMP THREADPRIVATE(ancien_ok)
53      REAL, ALLOCATABLE, SAVE :: clwcon(:,:),rnebcon(:,:)
54!$OMP THREADPRIVATE(clwcon,rnebcon)
55      REAL, ALLOCATABLE, SAVE :: ratqs(:,:)
56!$OMP THREADPRIVATE(ratqs)
57      REAL, ALLOCATABLE, SAVE :: pbl_tke(:,:,:) ! turb kinetic energy
58!$OMP THREADPRIVATE(pbl_tke)
59      REAL, ALLOCATABLE, SAVE :: zmax0(:), f0(:) !
60!$OMP THREADPRIVATE(zmax0,f0)
61      REAL, ALLOCATABLE, SAVE :: ema_work1(:,:), ema_work2(:,:)
62!$OMP THREADPRIVATE(ema_work1,ema_work2)
63      REAL, ALLOCATABLE, SAVE :: entr_therm(:,:), fm_therm(:,:)
64!$OMP THREADPRIVATE(entr_therm,fm_therm)
65      REAL, ALLOCATABLE, SAVE :: detr_therm(:,:)
66!$OMP THREADPRIVATE(detr_therm)
67!IM 150408
68!     pour phsystoke avec thermiques
69      REAL,ALLOCATABLE,SAVE :: clwcon0th(:,:),rnebcon0th(:,:)
70!$OMP THREADPRIVATE(clwcon0th,rnebcon0th)
71! radiation outputs
72      REAL,ALLOCATABLE,SAVE :: swdn0(:,:), swdn(:,:)
73!$OMP THREADPRIVATE(swdn0,swdn)
74      REAL,ALLOCATABLE,SAVE :: swup0(:,:), swup(:,:)
75!$OMP THREADPRIVATE(swup0,swup)
76      REAL,ALLOCATABLE,SAVE :: SWdn200clr(:), SWdn200(:)
77!$OMP THREADPRIVATE(SWdn200clr,SWdn200)
78      REAL,ALLOCATABLE,SAVE :: SWup200clr(:), SWup200(:)
79!$OMP THREADPRIVATE(SWup200clr,SWup200)
80      REAL,ALLOCATABLE,SAVE :: lwdn0(:,:), lwdn(:,:)
81!$OMP THREADPRIVATE(lwdn0,lwdn)
82      REAL,ALLOCATABLE,SAVE :: lwup0(:,:), lwup(:,:)
83!$OMP THREADPRIVATE(lwup0,lwup)
84      REAL,ALLOCATABLE,SAVE :: LWdn200clr(:), LWdn200(:)
85!$OMP THREADPRIVATE(LWdn200clr,LWdn200)
86      REAL,ALLOCATABLE,SAVE :: LWup200clr(:), LWup200(:)
87!$OMP THREADPRIVATE(LWup200clr,LWup200)
88      REAL,ALLOCATABLE,SAVE :: LWdnTOA(:), LWdnTOAclr(:)
89!$OMP THREADPRIVATE(LWdnTOA,LWdnTOAclr)
90! pressure level
91      REAL,ALLOCATABLE,SAVE :: tsumSTD(:,:,:)
92!$OMP THREADPRIVATE(tsumSTD)
93      REAL,ALLOCATABLE,SAVE :: usumSTD(:,:,:), vsumSTD(:,:,:)
94!$OMP THREADPRIVATE(usumSTD,vsumSTD)
95      REAL,ALLOCATABLE,SAVE :: wsumSTD(:,:,:), phisumSTD(:,:,:)
96!$OMP THREADPRIVATE(wsumSTD,phisumSTD)
97      REAL,ALLOCATABLE,SAVE :: qsumSTD(:,:,:), rhsumSTD(:,:,:)
98!$OMP THREADPRIVATE(qsumSTD,rhsumSTD)
99      REAL,ALLOCATABLE,SAVE :: tnondef(:,:,:)
100!$OMP THREADPRIVATE(tnondef)
101      REAL,ALLOCATABLE,SAVE :: uvsumSTD(:,:,:)
102!$OMP THREADPRIVATE(uvsumSTD)
103      REAL,ALLOCATABLE,SAVE :: vqsumSTD(:,:,:)
104!$OMP THREADPRIVATE(vqsumSTD)
105      REAL,ALLOCATABLE,SAVE :: vTsumSTD(:,:,:)
106!$OMP THREADPRIVATE(vTsumSTD)
107      REAL,ALLOCATABLE,SAVE :: wqsumSTD(:,:,:)
108!$OMP THREADPRIVATE(wqsumSTD)
109      REAL,ALLOCATABLE,SAVE :: vphisumSTD(:,:,:)
110!$OMP THREADPRIVATE(vphisumSTD)
111      REAL,ALLOCATABLE,SAVE :: wTsumSTD(:,:,:)
112!$OMP THREADPRIVATE(wTsumSTD)
113      REAL,ALLOCATABLE,SAVE :: u2sumSTD(:,:,:)
114!$OMP THREADPRIVATE(u2sumSTD)
115      REAL,ALLOCATABLE,SAVE :: v2sumSTD(:,:,:)
116!$OMP THREADPRIVATE(v2sumSTD)
117      REAL,ALLOCATABLE,SAVE :: T2sumSTD(:,:,:)
118!$OMP THREADPRIVATE(T2sumSTD)
119!IM begin
120      REAL,ALLOCATABLE,SAVE :: wlevSTD(:,:), ulevSTD(:,:), vlevSTD(:,:)
121!$OMP THREADPRIVATE(wlevSTD,ulevSTD,vlevSTD)
122      REAL,ALLOCATABLE,SAVE :: tlevSTD(:,:), qlevSTD(:,:), rhlevSTD(:,:)
123!$OMP THREADPRIVATE(tlevSTD,qlevSTD,rhlevSTD)
124      REAL,ALLOCATABLE,SAVE :: philevSTD(:,:)
125!$OMP THREADPRIVATE(philevSTD)
126      REAL,ALLOCATABLE,SAVE :: uvSTD(:,:)
127!$OMP THREADPRIVATE(uvSTD)
128      REAL,ALLOCATABLE,SAVE :: vqSTD(:,:)
129!$OMP THREADPRIVATE(vqSTD)
130      REAL,ALLOCATABLE,SAVE :: vTSTD(:,:)
131!$OMP THREADPRIVATE(vTSTD)
132      REAL,ALLOCATABLE,SAVE :: wqSTD(:,:)
133!$OMP THREADPRIVATE(wqSTD)
134      REAL,ALLOCATABLE,SAVE :: vphiSTD(:,:)
135!$OMP THREADPRIVATE(vphiSTD)
136      REAL,ALLOCATABLE,SAVE :: wTSTD(:,:)
137!$OMP THREADPRIVATE(wTSTD)
138      REAL,ALLOCATABLE,SAVE :: u2STD(:,:)
139!$OMP THREADPRIVATE(u2STD)
140      REAL,ALLOCATABLE,SAVE :: v2STD(:,:)
141!$OMP THREADPRIVATE(v2STD)
142      REAL,ALLOCATABLE,SAVE :: T2STD(:,:)
143!$OMP THREADPRIVATE(T2STD)
144!IM end
145      INTEGER,ALLOCATABLE,SAVE :: seed_old(:,:)
146!$OMP THREADPRIVATE(seed_old)
147      REAL,ALLOCATABLE,SAVE :: zuthe(:),zvthe(:)
148!$OMP THREADPRIVATE(zuthe,zvthe)
149      REAL,ALLOCATABLE,SAVE :: alb_neig(:)
150!$OMP THREADPRIVATE(alb_neig)
151!cloud base mass flux
152      REAL,ALLOCATABLE,SAVE :: ema_workcbmf(:), ema_cbmf(:)
153!$OMP THREADPRIVATE(ema_workcbmf,ema_cbmf)
154!cloud base pressure & cloud top pressure
155      REAL,ALLOCATABLE,SAVE :: ema_pcb(:), ema_pct(:)
156!$OMP THREADPRIVATE(ema_pcb,ema_pct)
157      REAL,ALLOCATABLE,SAVE :: Ma(:,:)        ! undilute upward mass flux
158!$OMP THREADPRIVATE(Ma)
159      REAL,ALLOCATABLE,SAVE :: qcondc(:,:)    ! in-cld water content from convect
160!$OMP THREADPRIVATE(qcondc)
161      REAL,ALLOCATABLE,SAVE :: wd(:) ! sb
162!$OMP THREADPRIVATE(wd)
163      REAL,ALLOCATABLE,SAVE :: sigd(:)
164!$OMP THREADPRIVATE(sigd)
165!
166      REAL,ALLOCATABLE,SAVE :: cin(:)
167!$OMP THREADPRIVATE(cin)
168! ftd : differential heating between wake and environment
169      REAL,ALLOCATABLE,SAVE :: ftd(:,:)
170!$OMP THREADPRIVATE(ftd)
171! fqd : differential moistening between wake and environment
172      REAL,ALLOCATABLE,SAVE :: fqd(:,:)     
173!$OMP THREADPRIVATE(fqd)
174!34EK
175! -- Variables de controle de ALE et ALP
176!ALE : Energie disponible pour soulevement : utilisee par la
177!      convection d'Emanuel pour le declenchement et la regulation
178      REAL,ALLOCATABLE,SAVE :: ALE(:)
179!$OMP THREADPRIVATE(ALE)
180!ALP : Puissance  disponible pour soulevement
181      REAL,ALLOCATABLE,SAVE :: ALP(:)
182!$OMP THREADPRIVATE(ALP)
183!
184! nouvelles variables pour le couplage convection-couche limite
185      REAL,ALLOCATABLE,SAVE :: Ale_bl(:)
186!$OMP THREADPRIVATE(Ale_bl)
187      REAL,ALLOCATABLE,SAVE :: Alp_bl(:)
188!$OMP THREADPRIVATE(Alp_bl)
189      INTEGER,ALLOCATABLE,SAVE :: lalim_conv(:)
190!$OMP THREADPRIVATE(lalim_conv)
191      REAL,ALLOCATABLE,SAVE :: wght_th(:,:)
192!$OMP THREADPRIVATE(wght_th)
193!
194! variables de la wake
195! wake_deltat : ecart de temperature avec la zone non perturbee
196! wake_deltaq : ecart d'humidite avec la zone non perturbee
197! wake_Cstar  : vitesse d'etalement de la poche
198! wake_s      : fraction surfacique occupee par la poche froide
199! wake_fip    : Gust Front Impinging power - ALP
200! dt_wake, dq_wake: LS tendencies due to wake
201      REAL,ALLOCATABLE,SAVE :: wake_deltat(:,:)
202!$OMP THREADPRIVATE(wake_deltat)
203      REAL,ALLOCATABLE,SAVE :: wake_deltaq(:,:)
204!$OMP THREADPRIVATE(wake_deltaq)
205      REAL,ALLOCATABLE,SAVE :: wake_Cstar(:)
206!$OMP THREADPRIVATE(wake_Cstar)
207      REAL,ALLOCATABLE,SAVE :: wake_s(:)
208!$OMP THREADPRIVATE(wake_s)
209      REAL,ALLOCATABLE,SAVE :: wake_fip(:)
210!$OMP THREADPRIVATE(wake_fip)
211      REAL,ALLOCATABLE,SAVE :: dt_wake(:,:)
212!$OMP THREADPRIVATE(dt_wake)
213      REAL,ALLOCATABLE,SAVE :: dq_wake(:,:)
214!$OMP THREADPRIVATE(dq_wake)
215!
216! pfrac_impa : Produits des coefs lessivage impaction
217! pfrac_nucl : Produits des coefs lessivage nucleation
218! pfrac_1nucl: Produits des coefs lessi nucl (alpha = 1)
219      REAL,ALLOCATABLE,SAVE :: pfrac_impa(:,:), pfrac_nucl(:,:)
220!$OMP THREADPRIVATE(pfrac_impa,pfrac_nucl)
221      REAL,ALLOCATABLE,SAVE :: pfrac_1nucl(:,:)
222!$OMP THREADPRIVATE(pfrac_1nucl)
223!
224      REAL,ALLOCATABLE,SAVE :: total_rain(:), nday_rain(:) 
225!$OMP THREADPRIVATE(total_rain,nday_rain)
226      REAL,ALLOCATABLE,SAVE :: paire_ter(:)
227!$OMP THREADPRIVATE(paire_ter)
228! albsol1: albedo du sol total pour SW visible
229! albsol2: albedo du sol total pour SW proche IR
230      REAL,ALLOCATABLE,SAVE :: albsol1(:), albsol2(:)
231!$OMP THREADPRIVATE(albsol1,albsol2)
232
233      REAL, ALLOCATABLE, SAVE:: wo(:, :, :)
234      ! column-density of ozone in a layer, in kilo-Dobsons
235      ! Third dimension has size 1 or 2.
236      ! "wo(:, :, 1)" is for the average day-night field,
237      ! "wo(:, :, 2)" is for daylight time.
238      !$OMP THREADPRIVATE(wo)
239
240! heat : chauffage solaire
241! heat0: chauffage solaire ciel clair
242! cool : refroidissement infrarouge
243! cool0 : refroidissement infrarouge ciel clair
244! sollwdown : downward LW flux at surface
245! sollwdownclr : downward CS LW flux at surface
246! toplwdown : downward CS LW flux at TOA
247! toplwdownclr : downward CS LW flux at TOA
248      REAL,ALLOCATABLE,SAVE :: clwcon0(:,:),rnebcon0(:,:)
249!$OMP THREADPRIVATE(clwcon0,rnebcon0)
250      REAL,ALLOCATABLE,SAVE :: heat(:,:)   
251!$OMP THREADPRIVATE(heat)
252      REAL,ALLOCATABLE,SAVE :: heat0(:,:)
253!$OMP THREADPRIVATE(heat0)
254      REAL,ALLOCATABLE,SAVE :: cool(:,:)
255!$OMP THREADPRIVATE(cool)
256      REAL,ALLOCATABLE,SAVE :: cool0(:,:)
257!$OMP THREADPRIVATE(cool0)
258      REAL,ALLOCATABLE,SAVE :: topsw(:), toplw(:)
259!$OMP THREADPRIVATE(topsw,toplw)
260      REAL,ALLOCATABLE,SAVE :: sollwdown(:)
261!$OMP THREADPRIVATE(sollwdown)
262      REAL,ALLOCATABLE,SAVE :: sollwdownclr(:)
263!$OMP THREADPRIVATE(sollwdownclr)
264      REAL,ALLOCATABLE,SAVE :: toplwdown(:)
265!$OMP THREADPRIVATE(toplwdown)
266      REAL,ALLOCATABLE,SAVE :: toplwdownclr(:)
267!$OMP THREADPRIVATE(toplwdownclr)
268      REAL,ALLOCATABLE,SAVE :: topsw0(:),toplw0(:),solsw0(:),sollw0(:)
269!$OMP THREADPRIVATE(topsw0,toplw0,solsw0,sollw0)
270      REAL,ALLOCATABLE,SAVE :: albpla(:)
271!$OMP THREADPRIVATE(albpla)
272! pbase : cloud base pressure
273! bbase : cloud base buoyancy
274      REAL,ALLOCATABLE,SAVE :: cape(:)
275!$OMP THREADPRIVATE(cape)
276      REAL,ALLOCATABLE,SAVE :: pbase(:)
277!$OMP THREADPRIVATE(pbase)
278      REAL,ALLOCATABLE,SAVE :: bbase(:)
279!$OMP THREADPRIVATE(bbase)
280!
281      REAL,SAVE,ALLOCATABLE :: zqasc(:,:)
282!$OMP THREADPRIVATE( zqasc)
283      INTEGER,ALLOCATABLE,SAVE :: ibas_con(:), itop_con(:)
284!$OMP THREADPRIVATE(ibas_con,itop_con)
285      REAL,SAVE,ALLOCATABLE :: rain_con(:)
286!$OMP THREADPRIVATE(rain_con)
287      REAL,SAVE,ALLOCATABLE :: snow_con(:)
288!$OMP THREADPRIVATE(snow_con)
289!
290      REAL,SAVE,ALLOCATABLE :: rlonPOS(:)
291!$OMP THREADPRIVATE(rlonPOS)
292      REAL,SAVE,ALLOCATABLE :: newsst(:)
293!$OMP THREADPRIVATE(newsst)
294      REAL,SAVE,ALLOCATABLE :: u10m(:,:), v10m(:,:)
295!$OMP THREADPRIVATE(u10m,v10m)
296!
297! ok_ade=T -ADE=topswad-topsw
298! ok_aie=T ->
299!       ok_ade=T -AIE=topswai-topswad
300!       ok_ade=F -AIE=topswai-topsw
301!
302!topswad, solswad : Aerosol direct effect
303      REAL,SAVE,ALLOCATABLE :: topswad(:), solswad(:)
304!$OMP THREADPRIVATE(topswad,solswad)
305!topswai, solswai : Aerosol indirect effect
306      REAL,SAVE,ALLOCATABLE :: topswai(:), solswai(:)
307!$OMP THREADPRIVATE(topswai,solswai)
308
309      REAL,SAVE,ALLOCATABLE :: tau_aero(:,:,:,:), piz_aero(:,:,:,:), cg_aero(:,:,:,:)
310!$OMP THREADPRIVATE(tau_aero, piz_aero, cg_aero)
311      REAL,SAVE,ALLOCATABLE :: ccm(:,:,:)
312!$OMP THREADPRIVATE(ccm)
313
314CONTAINS
315
316!======================================================================
317SUBROUTINE phys_state_var_init(read_climoz)
318use dimphy
319use aero_mod
320IMPLICIT NONE
321
322integer, intent(in)::  read_climoz
323! read ozone climatology
324! Allowed values are 0, 1 and 2
325! 0: do not read an ozone climatology
326! 1: read a single ozone climatology that will be used day and night
327! 2: read two ozone climatologies, the average day and night
328! climatology and the daylight climatology
329
330#include "indicesol.h"
331#include "control.h"
332      ALLOCATE(rlat(klon), rlon(klon))
333      ALLOCATE(pctsrf(klon,nbsrf))
334      ALLOCATE(ftsol(klon,nbsrf))
335      ALLOCATE(falb1(klon,nbsrf))
336      ALLOCATE(falb2(klon,nbsrf))
337      ALLOCATE(rain_fall(klon))
338      ALLOCATE(snow_fall(klon))
339      ALLOCATE(solsw(klon), sollw(klon))
340      ALLOCATE(radsol(klon))
341      ALLOCATE(zmea(klon), zstd(klon), zsig(klon), zgam(klon))
342      ALLOCATE(zthe(klon), zpic(klon), zval(klon))
343
344      ALLOCATE(rugoro(klon))
345      ALLOCATE(t_ancien(klon,klev), q_ancien(klon,klev))
346      ALLOCATE(u_ancien(klon,klev), v_ancien(klon,klev))
347      ALLOCATE(clwcon(klon,klev),rnebcon(klon,klev))
348      ALLOCATE(ratqs(klon,klev))
349      ALLOCATE(pbl_tke(klon,klev+1,nbsrf))
350      ALLOCATE(zmax0(klon), f0(klon))
351      ALLOCATE(ema_work1(klon,klev), ema_work2(klon,klev))
352      ALLOCATE(entr_therm(klon,klev), fm_therm(klon,klev+1))
353      ALLOCATE(detr_therm(klon,klev))
354!     pour phsystoke avec thermiques
355      ALLOCATE(clwcon0th(klon,klev),rnebcon0th(klon,klev))
356! radiation outputs
357      ALLOCATE(swdn0(klon,klevp1), swdn(klon,klevp1))
358      ALLOCATE(swup0(klon,klevp1), swup(klon,klevp1))
359      ALLOCATE(lwdn0(klon,klevp1), lwdn(klon,klevp1))
360      ALLOCATE(lwup0(klon,klevp1), lwup(klon,klevp1))
361      ALLOCATE(SWdn200clr(klon), SWdn200(klon))
362      ALLOCATE(SWup200clr(klon), SWup200(klon))
363      ALLOCATE(LWdn200clr(klon), LWdn200(klon))
364      ALLOCATE(LWup200clr(klon), LWup200(klon))
365      ALLOCATE(LWdnTOA(klon), LWdnTOAclr(klon))
366! pressure level
367      ALLOCATE(tsumSTD(klon,nlevSTD,nout))
368      ALLOCATE(usumSTD(klon,nlevSTD,nout), vsumSTD(klon,nlevSTD,nout))
369      ALLOCATE(wsumSTD(klon,nlevSTD,nout), phisumSTD(klon,nlevSTD,nout))
370      ALLOCATE(qsumSTD(klon,nlevSTD,nout), rhsumSTD(klon,nlevSTD,nout))
371      ALLOCATE(tnondef(klon,nlevSTD,nout))
372      ALLOCATE(uvsumSTD(klon,nlevSTD,nout))
373      ALLOCATE(vqsumSTD(klon,nlevSTD,nout))
374      ALLOCATE(vTsumSTD(klon,nlevSTD,nout))
375      ALLOCATE(wqsumSTD(klon,nlevSTD,nout))
376      ALLOCATE(vphisumSTD(klon,nlevSTD,nout))
377      ALLOCATE(wTsumSTD(klon,nlevSTD,nout))
378      ALLOCATE(u2sumSTD(klon,nlevSTD,nout))
379      ALLOCATE(v2sumSTD(klon,nlevSTD,nout))
380      ALLOCATE(T2sumSTD(klon,nlevSTD,nout))
381!IM beg
382      ALLOCATE(wlevSTD(klon,nlevSTD), ulevSTD(klon,nlevSTD), vlevSTD(klon,nlevSTD))
383      ALLOCATE(tlevSTD(klon,nlevSTD), qlevSTD(klon,nlevSTD), rhlevSTD(klon,nlevSTD))
384      ALLOCATE(philevSTD(klon,nlevSTD))
385      ALLOCATE(uvSTD(klon,nlevSTD),vqSTD(klon,nlevSTD))
386      ALLOCATE(vTSTD(klon,nlevSTD),wqSTD(klon,nlevSTD))
387      ALLOCATE(vphiSTD(klon,nlevSTD),wTSTD(klon,nlevSTD))
388      ALLOCATE(u2STD(klon,nlevSTD),v2STD(klon,nlevSTD))
389      ALLOCATE(T2STD(klon,nlevSTD))
390!IM end
391      ALLOCATE(seed_old(klon,napisccp))
392      ALLOCATE(zuthe(klon),zvthe(klon))
393      ALLOCATE(alb_neig(klon))
394!cloud base mass flux
395      ALLOCATE(ema_workcbmf(klon), ema_cbmf(klon))
396!cloud base pressure & cloud top pressure
397      ALLOCATE(ema_pcb(klon), ema_pct(klon))
398!
399      ALLOCATE(Ma(klon,klev))
400      ALLOCATE(qcondc(klon,klev))
401      ALLOCATE(wd(klon))
402      ALLOCATE(sigd(klon))
403      ALLOCATE(cin(klon), ALE(klon), ALP(klon))
404      ALLOCATE(ftd(klon,klev), fqd(klon,klev))
405      ALLOCATE(Ale_bl(klon))
406      ALLOCATE(Alp_bl(klon))
407      ALLOCATE(lalim_conv(klon))
408      ALLOCATE(wght_th(klon,klev))
409      ALLOCATE(wake_deltat(klon,klev), wake_deltaq(klon,klev))
410      ALLOCATE(wake_Cstar(klon), wake_s(klon), wake_fip(klon))
411      ALLOCATE(dt_wake(klon,klev), dq_wake(klon,klev))
412      ALLOCATE(pfrac_impa(klon,klev), pfrac_nucl(klon,klev))
413      ALLOCATE(pfrac_1nucl(klon,klev))
414      ALLOCATE(total_rain(klon), nday_rain(klon))
415      ALLOCATE(paire_ter(klon))
416      ALLOCATE(albsol1(klon), albsol2(klon))
417
418      if (read_climoz <= 1) then
419         ALLOCATE(wo(klon,klev, 1))
420      else
421         ! read_climoz == 2
422         ALLOCATE(wo(klon,klev, 2))
423      end if
424     
425      ALLOCATE(clwcon0(klon,klev),rnebcon0(klon,klev))
426      ALLOCATE(heat(klon,klev), heat0(klon,klev))
427      ALLOCATE(cool(klon,klev), cool0(klon,klev))
428      ALLOCATE(topsw(klon), toplw(klon))
429      ALLOCATE(sollwdown(klon), sollwdownclr(klon))
430      ALLOCATE(toplwdown(klon), toplwdownclr(klon))
431      ALLOCATE(topsw0(klon),toplw0(klon),solsw0(klon),sollw0(klon))
432      ALLOCATE(albpla(klon))
433      ALLOCATE(cape(klon))
434      ALLOCATE(pbase(klon),bbase(klon))
435      ALLOCATE(zqasc(klon,klev))
436      ALLOCATE(ibas_con(klon), itop_con(klon))
437      ALLOCATE(rain_con(klon), snow_con(klon))
438      ALLOCATE(rlonPOS(klon))
439      ALLOCATE(newsst(klon))
440      ALLOCATE(u10m(klon,nbsrf), v10m(klon,nbsrf))
441      ALLOCATE(topswad(klon), solswad(klon))
442      ALLOCATE(topswai(klon), solswai(klon))
443      ALLOCATE(tau_aero(klon,klev,naero_grp,nbands),piz_aero(klon,klev,naero_grp,nbands),cg_aero(klon,klev,naero_grp,nbands))
444      ALLOCATE(ccm(klon,klev,nbands))
445
446END SUBROUTINE phys_state_var_init
447
448!======================================================================
449SUBROUTINE phys_state_var_end
450use dimphy
451IMPLICIT NONE
452#include "indicesol.h"
453#include "control.h"
454
455      deallocate(rlat, rlon, pctsrf, ftsol, falb1, falb2)
456      deallocate(rain_fall, snow_fall, solsw, sollw, radsol)
457      deallocate(zmea, zstd, zsig, zgam)
458      deallocate(zthe, zpic, zval)
459      deallocate(rugoro, t_ancien, q_ancien, clwcon, rnebcon)
460      deallocate(        u_ancien, v_ancien                 )
461      deallocate(ratqs, pbl_tke)
462      deallocate(zmax0, f0)
463      deallocate(ema_work1, ema_work2)
464      deallocate(entr_therm, fm_therm)
465      deallocate(detr_therm)
466      deallocate(clwcon0th, rnebcon0th)
467! radiation outputs
468      deallocate(swdn0, swdn)
469      deallocate(swup0, swup)
470      deallocate(lwdn0, lwdn)
471      deallocate(lwup0, lwup)
472      deallocate(SWdn200clr, SWdn200)
473      deallocate(SWup200clr, SWup200)
474      deallocate(LWdn200clr, LWdn200)
475      deallocate(LWup200clr, LWup200)
476      deallocate(LWdnTOA, LWdnTOAclr)
477! pressure level
478      deallocate(tsumSTD)
479      deallocate(usumSTD, vsumSTD)
480      deallocate(wsumSTD, phisumSTD)
481      deallocate(tnondef)
482      deallocate(qsumSTD, rhsumSTD)
483      deallocate(uvsumSTD)
484      deallocate(vqsumSTD)
485      deallocate(vTsumSTD)
486      deallocate(wqsumSTD)
487      deallocate(vphisumSTD)
488      deallocate(wTsumSTD)
489      deallocate(u2sumSTD)
490      deallocate(v2sumSTD)
491      deallocate(T2sumSTD)
492!IM beg
493      deallocate(wlevSTD,ulevSTD,vlevSTD,tlevSTD,qlevSTD,rhlevSTD,philevSTD)
494      deallocate(uvSTD,vqSTD,vTSTD,wqSTD,vphiSTD,wTSTD,u2STD,v2STD,T2STD)
495!IM end
496      deallocate(seed_old)
497      deallocate(zuthe, zvthe)
498      deallocate(alb_neig)
499      deallocate(ema_workcbmf, ema_cbmf)
500      deallocate(ema_pcb, ema_pct)
501      deallocate(Ma, qcondc)
502      deallocate(wd, sigd)
503      deallocate(cin, ALE, ALP)
504      deallocate(ftd, fqd)
505      deallocate(Ale_bl, Alp_bl)
506      deallocate(lalim_conv, wght_th)
507      deallocate(wake_deltat, wake_deltaq)
508      deallocate(wake_Cstar, wake_s, wake_fip)
509      deallocate(dt_wake, dq_wake)
510      deallocate(pfrac_impa, pfrac_nucl)
511      deallocate(pfrac_1nucl)
512      deallocate(total_rain, nday_rain)
513      deallocate(paire_ter)
514      deallocate(albsol1, albsol2)
515      deallocate(wo)
516      deallocate(clwcon0,rnebcon0)
517      deallocate(heat, heat0)
518      deallocate(cool, cool0)
519      deallocate(topsw, toplw)
520      deallocate(sollwdown, sollwdownclr)
521      deallocate(toplwdown, toplwdownclr)
522      deallocate(topsw0,toplw0,solsw0,sollw0)
523      deallocate(albpla)
524      deallocate(cape)
525      deallocate(pbase,bbase)
526      deallocate(zqasc)
527      deallocate(ibas_con, itop_con)
528      deallocate(rain_con, snow_con)
529      deallocate(rlonPOS)
530      deallocate(newsst)
531      deallocate(u10m, v10m)
532      deallocate(topswad, solswad)
533      deallocate(topswai, solswai)
534      deallocate(tau_aero,piz_aero,cg_aero)
535      deallocate(ccm)
536       
537END SUBROUTINE phys_state_var_end
538
539      END MODULE phys_state_var_mod
Note: See TracBrowser for help on using the repository browser.