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

Last change on this file since 1398 was 1398, checked in by musat, 14 years ago

Last corrections for CMIP5:

  • Add O3 at standard level files histmthNMC.nc
  • Add positive attribute "down" for vertical axes for all output files
  • Replace "inst" by "ave" for hist*NMC.nc files to have time_counter and bounds for time axis (Marie-Alice's hint)
  • Correct units for vertical axes : mb instead of hPa
  • Add mass flux at the bottom of clouds
  • Comment non initialized variables (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) for the output files
  • Geopotential field phy850, phi700, phi500, etc are modified to "geopotential height and are called z850, z700, z500, etc
  • Meaning of specific humidity outputs - ovapinit and ovap - were interchanged
  • Fields albs, albslw become alb1, alb2 in output files
  • Correct title for rugs_* fields
  • Correct units for pbase and ptop are Pa (not mb)
  • Correct ndayrain field

FH/JLD/JYG/MAF/IM

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