source: LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_state_var_mod.F90 @ 1179

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