source: LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/phys_state_var_mod.F90 @ 1350

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

Add 3 output files for standard pressure levels AR5 exercice and flags
to manage their computation and output frequencies
histhfNMC.nc with 3 standard pressure levels
histdayNMC.nc with 8 (or may have 17) standard pressure levels
histmthNMC.nc with 17 standard pressure levels
Add 3 flags in the physiq.def file: freq_calNMC(3), freq_outNMC(3) and lev_histdayNMC
freq_calNMC(3) : computation frequency of variables on standard pressure levels

and by default has fallowing values (in fact physics' time step dtime)

freq_calNMC(1)=900.
freq_calNMC(2)=900.
freq_calNMC(3)=900.
freq_outNMC(3) : output frequency of variables on standard pressure levels

with following default values

freq_out(1) = 2592000. (30 days)
freq_out(2) = 86400. (1 day)
freq_out(3) = 21600. (6 hours)
lev_histdayNMC is 8 by default but may be switched to 17 (if we need more levels for a particular run)
IM

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