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

Last change on this file since 2497 was 2497, checked in by fhourdin, 8 years ago

Declaration de ql_ancien et qs_ancien.

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 26.8 KB
Line 
1!
2! $Id: phys_state_var_mod.F90 2497 2016-04-18 19:57:11Z fhourdin $
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      USE netcdf, only: nf90_fill_real
13      INTEGER, PARAMETER :: nlevSTD=17
14      INTEGER, PARAMETER :: nlevSTD8=8
15      INTEGER, PARAMETER :: nlevSTD3=3
16      INTEGER, PARAMETER :: nout=3
17      INTEGER, PARAMETER :: napisccp=1
18      INTEGER, SAVE :: radpas
19      REAL, PARAMETER :: missing_val_nf90=nf90_fill_real
20!$OMP THREADPRIVATE(radpas)
21      REAL, SAVE :: dtime, solaire_etat0
22!$OMP THREADPRIVATE(dtime, solaire_etat0)
23
24      REAL, ALLOCATABLE, SAVE :: pctsrf(:,:)
25!$OMP THREADPRIVATE(pctsrf)
26      REAL, ALLOCATABLE, SAVE :: ftsol(:,:)
27!$OMP THREADPRIVATE(ftsol)
28      REAL,ALLOCATABLE,SAVE :: qsol(:),fevap(:,:),z0m(:,:),z0h(:,:),agesno(:,:)
29!$OMP THREADPRIVATE(qsol,fevap,z0m,z0h,agesno)
30!      character(len=6), SAVE :: ocean
31!!!!!!$OMP THREADPRIVATE(ocean)
32!      logical, SAVE :: ok_veget
33!!!!!!$OMP THREADPRIVATE(ok_veget)
34      REAL, ALLOCATABLE, SAVE :: falb1(:,:), falb2(:,:)
35!$OMP THREADPRIVATE(falb1, falb2)
36
37!albedo SB >>>
38      REAL, ALLOCATABLE, SAVE :: falb_dif(:,:,:), falb_dir(:,:,:)
39      real, allocatable, save :: chl_con(:)
40!$OMP THREADPRIVATE(falb_dir,falb_dif,chl_con)
41!albedo SB <<<
42
43
44      REAL, ALLOCATABLE, SAVE :: rain_fall(:), snow_fall(:)
45!$OMP THREADPRIVATE( rain_fall, snow_fall)
46      REAL, ALLOCATABLE, SAVE :: solsw(:), sollw(:)
47!$OMP THREADPRIVATE(solsw, sollw)
48      REAL, ALLOCATABLE, SAVE :: radsol(:)
49!$OMP THREADPRIVATE(radsol)
50      REAL, ALLOCATABLE, SAVE :: swradcorr(:)
51!$OMP THREADPRIVATE(swradcorr)
52
53!clesphy0 param physiq
54!
55! Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
56!
57      REAL, ALLOCATABLE, SAVE :: zmea(:), zstd(:), zsig(:), zgam(:)
58!$OMP THREADPRIVATE(zmea, zstd, zsig, zgam)
59      REAL, ALLOCATABLE, SAVE :: zthe(:), zpic(:), zval(:)
60!$OMP THREADPRIVATE(zthe, zpic, zval)
61!     REAL tabcntr0(100)
62      REAL, ALLOCATABLE, SAVE :: rugoro(:)
63!$OMP THREADPRIVATE(rugoro)
64      REAL, ALLOCATABLE, SAVE :: t_ancien(:,:), q_ancien(:,:)
65!$OMP THREADPRIVATE(t_ancien, q_ancien)
66      REAL, ALLOCATABLE, SAVE :: ql_ancien(:,:), qs_ancien(:,:)
67!$OMP THREADPRIVATE(ql_ancien, qs_ancien)
68      REAL, ALLOCATABLE, SAVE :: u_ancien(:,:), v_ancien(:,:)
69!$OMP THREADPRIVATE(u_ancien, v_ancien)
70!!! RomP >>>
71      REAL, ALLOCATABLE, SAVE :: tr_ancien(:,:,:)
72!$OMP THREADPRIVATE(tr_ancien)
73!!! RomP <<<
74      LOGICAL, SAVE :: ancien_ok
75!$OMP THREADPRIVATE(ancien_ok)
76      REAL, ALLOCATABLE, SAVE :: clwcon(:,:),rnebcon(:,:)
77!$OMP THREADPRIVATE(clwcon,rnebcon)
78      REAL, ALLOCATABLE, SAVE :: qtc_cv(:,:),sigt_cv(:,:)
79!$OMP THREADPRIVATE(qtc_cv,sigt_cv)
80      REAL, ALLOCATABLE, SAVE :: ratqs(:,:)
81!$OMP THREADPRIVATE(ratqs)
82      REAL, ALLOCATABLE, SAVE :: pbl_tke(:,:,:) ! turb kinetic energy
83      REAL, ALLOCATABLE, SAVE :: coefh(:,:,:) ! Kz enthalpie
84      REAL, ALLOCATABLE, SAVE :: coefm(:,:,:) ! Kz momentum
85!$OMP THREADPRIVATE(pbl_tke, coefh,coefm)
86!nrlmd<
87      REAL, ALLOCATABLE, SAVE :: delta_tsurf(:,:) ! Surface temperature difference inside-outside cold pool
88!$OMP THREADPRIVATE(delta_tsurf)
89!>nrlmd
90      REAL, ALLOCATABLE, SAVE :: zmax0(:), f0(:) !
91!$OMP THREADPRIVATE(zmax0,f0)
92      REAL, ALLOCATABLE, SAVE :: sig1(:,:), w01(:,:)
93!$OMP THREADPRIVATE(sig1,w01)
94      REAL, ALLOCATABLE, SAVE :: entr_therm(:,:), fm_therm(:,:)
95!$OMP THREADPRIVATE(entr_therm,fm_therm)
96      REAL, ALLOCATABLE, SAVE :: detr_therm(:,:)
97!$OMP THREADPRIVATE(detr_therm)
98!IM 150408
99!     pour phsystoke avec thermiques
100      REAL,ALLOCATABLE,SAVE :: clwcon0th(:,:),rnebcon0th(:,:)
101!$OMP THREADPRIVATE(clwcon0th,rnebcon0th)
102! radiation outputs
103      REAL,ALLOCATABLE,SAVE :: swdn0(:,:), swdn(:,:)
104!$OMP THREADPRIVATE(swdn0,swdn)
105      REAL,ALLOCATABLE,SAVE :: swup0(:,:), swup(:,:)
106!$OMP THREADPRIVATE(swup0,swup)
107      REAL,ALLOCATABLE,SAVE :: SWdn200clr(:), SWdn200(:)
108!$OMP THREADPRIVATE(SWdn200clr,SWdn200)
109      REAL,ALLOCATABLE,SAVE :: SWup200clr(:), SWup200(:)
110!$OMP THREADPRIVATE(SWup200clr,SWup200)
111      REAL,ALLOCATABLE,SAVE :: lwdn0(:,:), lwdn(:,:)
112!$OMP THREADPRIVATE(lwdn0,lwdn)
113      REAL,ALLOCATABLE,SAVE :: lwup0(:,:), lwup(:,:)
114!$OMP THREADPRIVATE(lwup0,lwup)
115      REAL,ALLOCATABLE,SAVE :: LWdn200clr(:), LWdn200(:)
116!$OMP THREADPRIVATE(LWdn200clr,LWdn200)
117      REAL,ALLOCATABLE,SAVE :: LWup200clr(:), LWup200(:)
118!$OMP THREADPRIVATE(LWup200clr,LWup200)
119      REAL,ALLOCATABLE,SAVE :: LWdnTOA(:), LWdnTOAclr(:)
120!$OMP THREADPRIVATE(LWdnTOA,LWdnTOAclr)
121! pressure level
122      REAL,ALLOCATABLE,SAVE :: tsumSTD(:,:,:)
123!$OMP THREADPRIVATE(tsumSTD)
124      REAL,ALLOCATABLE,SAVE :: usumSTD(:,:,:), vsumSTD(:,:,:)
125!$OMP THREADPRIVATE(usumSTD,vsumSTD)
126      REAL,ALLOCATABLE,SAVE :: wsumSTD(:,:,:), phisumSTD(:,:,:)
127!$OMP THREADPRIVATE(wsumSTD,phisumSTD)
128      REAL,ALLOCATABLE,SAVE :: qsumSTD(:,:,:), rhsumSTD(:,:,:)
129!$OMP THREADPRIVATE(qsumSTD,rhsumSTD)
130      REAL,ALLOCATABLE,SAVE :: tnondef(:,:,:)
131!$OMP THREADPRIVATE(tnondef)
132      REAL,ALLOCATABLE,SAVE :: uvsumSTD(:,:,:)
133!$OMP THREADPRIVATE(uvsumSTD)
134      REAL,ALLOCATABLE,SAVE :: vqsumSTD(:,:,:)
135!$OMP THREADPRIVATE(vqsumSTD)
136      REAL,ALLOCATABLE,SAVE :: vTsumSTD(:,:,:)
137!$OMP THREADPRIVATE(vTsumSTD)
138      REAL,ALLOCATABLE,SAVE :: wqsumSTD(:,:,:)
139!$OMP THREADPRIVATE(wqsumSTD)
140      REAL,ALLOCATABLE,SAVE :: vphisumSTD(:,:,:)
141!$OMP THREADPRIVATE(vphisumSTD)
142      REAL,ALLOCATABLE,SAVE :: wTsumSTD(:,:,:)
143!$OMP THREADPRIVATE(wTsumSTD)
144      REAL,ALLOCATABLE,SAVE :: u2sumSTD(:,:,:)
145!$OMP THREADPRIVATE(u2sumSTD)
146      REAL,ALLOCATABLE,SAVE :: v2sumSTD(:,:,:)
147!$OMP THREADPRIVATE(v2sumSTD)
148      REAL,ALLOCATABLE,SAVE :: T2sumSTD(:,:,:)
149!$OMP THREADPRIVATE(T2sumSTD)
150      REAL,ALLOCATABLE,SAVE :: O3sumSTD(:,:,:), O3daysumSTD(:,:,:)
151!$OMP THREADPRIVATE(O3sumSTD,O3daysumSTD)
152!IM begin
153      REAL,ALLOCATABLE,SAVE :: wlevSTD(:,:), ulevSTD(:,:), vlevSTD(:,:)
154!$OMP THREADPRIVATE(wlevSTD,ulevSTD,vlevSTD)
155      REAL,ALLOCATABLE,SAVE :: tlevSTD(:,:), qlevSTD(:,:), rhlevSTD(:,:)
156!$OMP THREADPRIVATE(tlevSTD,qlevSTD,rhlevSTD)
157      REAL,ALLOCATABLE,SAVE :: philevSTD(:,:)
158!$OMP THREADPRIVATE(philevSTD)
159      REAL,ALLOCATABLE,SAVE :: uvSTD(:,:)
160!$OMP THREADPRIVATE(uvSTD)
161      REAL,ALLOCATABLE,SAVE :: vqSTD(:,:)
162!$OMP THREADPRIVATE(vqSTD)
163      REAL,ALLOCATABLE,SAVE :: vTSTD(:,:)
164!$OMP THREADPRIVATE(vTSTD)
165      REAL,ALLOCATABLE,SAVE :: wqSTD(:,:)
166!$OMP THREADPRIVATE(wqSTD)
167      REAL,ALLOCATABLE,SAVE :: vphiSTD(:,:)
168!$OMP THREADPRIVATE(vphiSTD)
169      REAL,ALLOCATABLE,SAVE :: wTSTD(:,:)
170!$OMP THREADPRIVATE(wTSTD)
171      REAL,ALLOCATABLE,SAVE :: u2STD(:,:)
172!$OMP THREADPRIVATE(u2STD)
173      REAL,ALLOCATABLE,SAVE :: v2STD(:,:)
174!$OMP THREADPRIVATE(v2STD)
175      REAL,ALLOCATABLE,SAVE :: T2STD(:,:)
176!$OMP THREADPRIVATE(T2STD)
177      REAL,ALLOCATABLE,SAVE :: O3STD(:,:), O3daySTD(:,:)
178!$OMP THREADPRIVATE(O3STD,O3daySTD)
179!IM end
180      INTEGER,ALLOCATABLE,SAVE :: seed_old(:,:)
181!$OMP THREADPRIVATE(seed_old)
182      REAL,ALLOCATABLE,SAVE :: zuthe(:),zvthe(:)
183!$OMP THREADPRIVATE(zuthe,zvthe)
184      REAL,ALLOCATABLE,SAVE :: alb_neig(:)
185!$OMP THREADPRIVATE(alb_neig)
186!cloud base mass flux
187      REAL,ALLOCATABLE,SAVE :: ema_cbmf(:)
188!$OMP THREADPRIVATE(ema_cbmf)
189!cloud base pressure & cloud top pressure
190      REAL,ALLOCATABLE,SAVE :: ema_pcb(:), ema_pct(:)
191!$OMP THREADPRIVATE(ema_pcb,ema_pct)
192      REAL,ALLOCATABLE,SAVE :: Ma(:,:)        ! undilute upward mass flux
193!$OMP THREADPRIVATE(Ma)
194      REAL,ALLOCATABLE,SAVE :: qcondc(:,:)    ! in-cld water content from convect
195!$OMP THREADPRIVATE(qcondc)
196      REAL,ALLOCATABLE,SAVE :: wd(:) ! sb
197!$OMP THREADPRIVATE(wd)
198      REAL,ALLOCATABLE,SAVE :: sigd(:)
199!$OMP THREADPRIVATE(sigd)
200!
201      REAL,ALLOCATABLE,SAVE :: cin(:)
202!$OMP THREADPRIVATE(cin)
203! ftd : differential heating between wake and environment
204      REAL,ALLOCATABLE,SAVE :: ftd(:,:)
205!$OMP THREADPRIVATE(ftd)
206! fqd : differential moistening between wake and environment
207      REAL,ALLOCATABLE,SAVE :: fqd(:,:)     
208!$OMP THREADPRIVATE(fqd)
209!34EK
210! -- Variables de controle de ALE et ALP
211!ALE : Energie disponible pour soulevement : utilisee par la
212!      convection d'Emanuel pour le declenchement et la regulation
213      REAL,ALLOCATABLE,SAVE :: ALE(:)
214!$OMP THREADPRIVATE(ALE)
215!ALP : Puissance  disponible pour soulevement
216      REAL,ALLOCATABLE,SAVE :: ALP(:)
217!$OMP THREADPRIVATE(ALP)
218!
219! nouvelles variables pour le couplage convection-couche limite
220      REAL,ALLOCATABLE,SAVE :: Ale_bl(:)
221!$OMP THREADPRIVATE(Ale_bl)
222      REAL,ALLOCATABLE,SAVE :: Alp_bl(:)
223!$OMP THREADPRIVATE(Alp_bl)
224      INTEGER,ALLOCATABLE,SAVE :: lalim_conv(:)
225!$OMP THREADPRIVATE(lalim_conv)
226      REAL,ALLOCATABLE,SAVE :: wght_th(:,:)
227!$OMP THREADPRIVATE(wght_th)
228!
229! variables de la wake
230! wake_deltat : ecart de temperature avec la zone non perturbee
231! wake_deltaq : ecart d'humidite avec la zone non perturbee
232! wake_Cstar  : vitesse d'etalement de la poche
233! wake_s      : fraction surfacique occupee par la poche froide
234! wake_pe     : wake potential energy - WAPE
235! wake_fip    : Gust Front Impinging power - ALP
236! dt_wake, dq_wake: LS tendencies due to wake
237      REAL,ALLOCATABLE,SAVE :: wake_deltat(:,:)
238!$OMP THREADPRIVATE(wake_deltat)
239      REAL,ALLOCATABLE,SAVE :: wake_deltaq(:,:)
240!$OMP THREADPRIVATE(wake_deltaq)
241      REAL,ALLOCATABLE,SAVE :: wake_Cstar(:)
242!$OMP THREADPRIVATE(wake_Cstar)
243      REAL,ALLOCATABLE,SAVE :: wake_s(:)
244!$OMP THREADPRIVATE(wake_s)
245      REAL,ALLOCATABLE,SAVE :: wake_pe(:)
246!$OMP THREADPRIVATE(wake_pe)
247      REAL,ALLOCATABLE,SAVE :: wake_fip(:)
248!$OMP THREADPRIVATE(wake_fip)
249      REAL,ALLOCATABLE,SAVE :: dt_wake(:,:)
250!$OMP THREADPRIVATE(dt_wake)
251      REAL,ALLOCATABLE,SAVE :: dq_wake(:,:)
252!$OMP THREADPRIVATE(dq_wake)
253!
254!jyg<
255! variables related to the spitting of the PBL between wake and
256! off-wake regions.
257! wake_delta_pbl_TKE : difference TKE_w - TKE_x
258      REAL,ALLOCATABLE,SAVE :: wake_delta_pbl_TKE(:,:,:)
259!$OMP THREADPRIVATE(wake_delta_pbl_TKE)
260!>jyg
261!
262! pfrac_impa : Produits des coefs lessivage impaction
263! pfrac_nucl : Produits des coefs lessivage nucleation
264! pfrac_1nucl: Produits des coefs lessi nucl (alpha = 1)
265      REAL,ALLOCATABLE,SAVE :: pfrac_impa(:,:), pfrac_nucl(:,:)
266!$OMP THREADPRIVATE(pfrac_impa,pfrac_nucl)
267      REAL,ALLOCATABLE,SAVE :: pfrac_1nucl(:,:)
268!$OMP THREADPRIVATE(pfrac_1nucl)
269!
270      REAL,ALLOCATABLE,SAVE :: total_rain(:), nday_rain(:) 
271!$OMP THREADPRIVATE(total_rain,nday_rain)
272      REAL,ALLOCATABLE,SAVE :: paire_ter(:)
273!$OMP THREADPRIVATE(paire_ter)
274! albsol1: albedo du sol total pour SW visible
275! albsol2: albedo du sol total pour SW proche IR
276      REAL,ALLOCATABLE,SAVE :: albsol1(:), albsol2(:)
277!$OMP THREADPRIVATE(albsol1,albsol2)
278
279!albedo SB >>>
280      REAL,ALLOCATABLE,SAVE :: albsol_dif(:,:),albsol_dir(:,:)
281!$OMP THREADPRIVATE(albsol_dif,albsol_dir)
282!albedo SB <<<
283
284
285      REAL, ALLOCATABLE, SAVE:: wo(:, :, :)
286      ! column-density of ozone in a layer, in kilo-Dobsons
287      ! Third dimension has size 1 or 2.
288      ! "wo(:, :, 1)" is for the average day-night field,
289      ! "wo(:, :, 2)" is for daylight time.
290      !$OMP THREADPRIVATE(wo)
291
292! heat : chauffage solaire
293! heat0: chauffage solaire ciel clair
294! cool : refroidissement infrarouge
295! cool0 : refroidissement infrarouge ciel clair
296! sollwdown : downward LW flux at surface
297! sollwdownclr : downward CS LW flux at surface
298! toplwdown : downward CS LW flux at TOA
299! toplwdownclr : downward CS LW flux at TOA
300      REAL,ALLOCATABLE,SAVE :: clwcon0(:,:),rnebcon0(:,:)
301!$OMP THREADPRIVATE(clwcon0,rnebcon0)
302      REAL,ALLOCATABLE,SAVE :: heat(:,:)   
303!$OMP THREADPRIVATE(heat)
304      REAL,ALLOCATABLE,SAVE :: heat0(:,:)
305!$OMP THREADPRIVATE(heat0)
306      REAL,ALLOCATABLE,SAVE :: cool(:,:)
307!$OMP THREADPRIVATE(cool)
308      REAL,ALLOCATABLE,SAVE :: cool0(:,:)
309!$OMP THREADPRIVATE(cool0)
310      REAL,ALLOCATABLE,SAVE :: topsw(:), toplw(:)
311!$OMP THREADPRIVATE(topsw,toplw)
312      REAL,ALLOCATABLE,SAVE :: sollwdown(:)
313!$OMP THREADPRIVATE(sollwdown)
314      REAL,ALLOCATABLE,SAVE :: gustiness(:)
315!$OMP THREADPRIVATE(gustiness)
316      REAL,ALLOCATABLE,SAVE :: sollwdownclr(:)
317!$OMP THREADPRIVATE(sollwdownclr)
318      REAL,ALLOCATABLE,SAVE :: toplwdown(:)
319!$OMP THREADPRIVATE(toplwdown)
320      REAL,ALLOCATABLE,SAVE :: toplwdownclr(:)
321!$OMP THREADPRIVATE(toplwdownclr)
322      REAL,ALLOCATABLE,SAVE :: topsw0(:),toplw0(:),solsw0(:),sollw0(:)
323!$OMP THREADPRIVATE(topsw0,toplw0,solsw0,sollw0)
324      REAL,ALLOCATABLE,SAVE :: albpla(:)
325!$OMP THREADPRIVATE(albpla)
326
327!IM ajout variables CFMIP2/CMIP5
328      REAL,ALLOCATABLE,SAVE :: heatp(:,:), coolp(:,:)
329!$OMP THREADPRIVATE(heatp, coolp)
330      REAL,ALLOCATABLE,SAVE :: heat0p(:,:), cool0p(:,:)
331!$OMP THREADPRIVATE(heat0p, cool0p)
332      REAL,ALLOCATABLE,SAVE :: radsolp(:), topswp(:), toplwp(:)
333!$OMP THREADPRIVATE(radsolp, topswp, toplwp)
334      REAL,ALLOCATABLE,SAVE :: albplap(:)
335!$OMP THREADPRIVATE(albplap)
336      REAL,ALLOCATABLE,SAVE :: solswp(:), sollwp(:)
337!$OMP THREADPRIVATE(solswp, sollwp)
338      REAL,ALLOCATABLE,SAVE :: sollwdownp(:)
339!$OMP THREADPRIVATE(sollwdownp)
340      REAL,ALLOCATABLE,SAVE :: topsw0p(:),toplw0p(:)
341      REAL,ALLOCATABLE,SAVE :: solsw0p(:),sollw0p(:)
342!$OMP THREADPRIVATE(topsw0p,toplw0p,solsw0p,sollw0p)
343      REAL,ALLOCATABLE,SAVE :: lwdn0p(:,:), lwdnp(:,:)
344      REAL,ALLOCATABLE,SAVE :: lwup0p(:,:), lwupp(:,:)
345!$OMP THREADPRIVATE(lwdn0p, lwdnp, lwup0p, lwupp)
346      REAL,ALLOCATABLE,SAVE :: swdn0p(:,:), swdnp(:,:)
347      REAL,ALLOCATABLE,SAVE :: swup0p(:,:), swupp(:,:)
348!$OMP THREADPRIVATE(swdn0p, swdnp, swup0p, swupp)
349
350! pbase : cloud base pressure
351! bbase : cloud base buoyancy
352      REAL,ALLOCATABLE,SAVE :: cape(:)
353!$OMP THREADPRIVATE(cape)
354      REAL,ALLOCATABLE,SAVE :: pbase(:)
355!$OMP THREADPRIVATE(pbase)
356      REAL,ALLOCATABLE,SAVE :: bbase(:)
357!$OMP THREADPRIVATE(bbase)
358!
359      REAL,SAVE,ALLOCATABLE :: zqasc(:,:)
360!$OMP THREADPRIVATE( zqasc)
361      INTEGER,ALLOCATABLE,SAVE :: ibas_con(:), itop_con(:)
362!$OMP THREADPRIVATE(ibas_con,itop_con)
363      REAL,SAVE,ALLOCATABLE :: rain_con(:)
364!$OMP THREADPRIVATE(rain_con)
365      REAL,SAVE,ALLOCATABLE :: snow_con(:)
366!$OMP THREADPRIVATE(snow_con)
367!
368      REAL,SAVE,ALLOCATABLE :: rlonPOS(:)
369!$OMP THREADPRIVATE(rlonPOS)
370      REAL,SAVE,ALLOCATABLE :: newsst(:)
371!$OMP THREADPRIVATE(newsst)
372      REAL,SAVE,ALLOCATABLE :: ustar(:,:),u10m(:,:), v10m(:,:),wstar(:,:)
373!$OMP THREADPRIVATE(ustar,u10m,v10m,wstar)
374!
375! ok_ade=T -ADE=topswad-topsw
376! ok_aie=T ->
377!       ok_ade=T -AIE=topswai-topswad
378!       ok_ade=F -AIE=topswai-topsw
379!
380!topswad, solswad : Aerosol direct effect
381      REAL,SAVE,ALLOCATABLE :: topswad(:), solswad(:)
382!$OMP THREADPRIVATE(topswad,solswad)
383!topswai, solswai : Aerosol indirect effect
384      REAL,SAVE,ALLOCATABLE :: topswai(:), solswai(:)
385!$OMP THREADPRIVATE(topswai,solswai)
386
387      REAL,SAVE,ALLOCATABLE :: tau_aero(:,:,:,:), piz_aero(:,:,:,:), cg_aero(:,:,:,:)
388!$OMP THREADPRIVATE(tau_aero, piz_aero, cg_aero)
389      REAL,SAVE,ALLOCATABLE :: tau_aero_sw_rrtm(:,:,:,:), piz_aero_sw_rrtm(:,:,:,:), cg_aero_sw_rrtm(:,:,:,:)
390!$OMP THREADPRIVATE(tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm)
391      REAL,SAVE,ALLOCATABLE :: tau_aero_lw_rrtm(:,:,:,:), piz_aero_lw_rrtm(:,:,:,:), cg_aero_lw_rrtm(:,:,:,:)
392!$OMP THREADPRIVATE(tau_aero_lw_rrtm, piz_aero_lw_rrtm, cg_aero_lw_rrtm)
393      REAL,SAVE,ALLOCATABLE :: ccm(:,:,:)
394!$OMP THREADPRIVATE(ccm)
395
396!!! nrlmd le 10/04/2012
397      REAL,SAVE,ALLOCATABLE :: ale_bl_trig(:)
398!$OMP THREADPRIVATE(ale_bl_trig)
399!!! fin nrlmd le 10/04/2012
400
401      REAL, ALLOCATABLE, SAVE:: du_gwd_rando(:, :), du_gwd_front(:, :)
402      !$OMP THREADPRIVATE(du_gwd_rando, du_gwd_front)
403      ! tendencies on wind due to gravity waves
404
405CONTAINS
406
407!======================================================================
408SUBROUTINE phys_state_var_init(read_climoz)
409USE dimphy
410USE aero_mod
411USE infotrac_phy, ONLY : nbtr
412USE indice_sol_mod
413IMPLICIT NONE
414
415integer, intent(in)::  read_climoz
416! read ozone climatology
417! Allowed values are 0, 1 and 2
418! 0: do not read an ozone climatology
419! 1: read a single ozone climatology that will be used day and night
420! 2: read two ozone climatologies, the average day and night
421! climatology and the daylight climatology
422
423include "clesphys.h"
424
425      ALLOCATE(pctsrf(klon,nbsrf))
426      ALLOCATE(ftsol(klon,nbsrf))
427      ALLOCATE(qsol(klon),fevap(klon,nbsrf))
428      ALLOCATE(z0m(klon,nbsrf+1),z0h(klon,nbsrf+1),agesno(klon,nbsrf))
429      ALLOCATE(falb1(klon,nbsrf))
430      ALLOCATE(falb2(klon,nbsrf))
431!albedo SB >>>
432      ALLOCATE(falb_dir(klon,nsw,nbsrf),falb_dif(klon,nsw,nbsrf))
433      ALLOCATE(chl_con(klon))
434!albedo SB <<<
435      ALLOCATE(rain_fall(klon))
436      ALLOCATE(snow_fall(klon))
437      ALLOCATE(solsw(klon), sollw(klon))
438      ALLOCATE(radsol(klon))
439      ALLOCATE(swradcorr(klon))
440      ALLOCATE(zmea(klon), zstd(klon), zsig(klon), zgam(klon))
441      ALLOCATE(zthe(klon), zpic(klon), zval(klon))
442
443      ALLOCATE(rugoro(klon))
444      ALLOCATE(t_ancien(klon,klev), q_ancien(klon,klev))
445      ALLOCATE(ql_ancien(klon,klev), qs_ancien(klon,klev))
446      ALLOCATE(u_ancien(klon,klev), v_ancien(klon,klev))
447!!! Rom P >>>
448      ALLOCATE(tr_ancien(klon,klev,nbtr))
449!!! Rom P <<<
450      ALLOCATE(clwcon(klon,klev),rnebcon(klon,klev))
451      ALLOCATE(qtc_cv(klon,klev),sigt_cv(klon,klev))
452      ALLOCATE(ratqs(klon,klev))
453      ALLOCATE(pbl_tke(klon,klev+1,nbsrf+1))
454!nrlmd<
455      ALLOCATE(delta_tsurf(klon,nbsrf))
456!>nrlmd
457      ALLOCATE(coefh(klon,klev+1,nbsrf+1))
458      ALLOCATE(coefm(klon,klev+1,nbsrf+1))
459      ALLOCATE(zmax0(klon), f0(klon))
460      ALLOCATE(sig1(klon,klev), w01(klon,klev))
461      ALLOCATE(entr_therm(klon,klev), fm_therm(klon,klev+1))
462      ALLOCATE(detr_therm(klon,klev))
463!     pour phsystoke avec thermiques
464      ALLOCATE(clwcon0th(klon,klev),rnebcon0th(klon,klev))
465! radiation outputs
466      ALLOCATE(swdn0(klon,klevp1), swdn(klon,klevp1))
467      ALLOCATE(swup0(klon,klevp1), swup(klon,klevp1))
468      ALLOCATE(lwdn0(klon,klevp1), lwdn(klon,klevp1))
469      ALLOCATE(lwup0(klon,klevp1), lwup(klon,klevp1))
470      ALLOCATE(SWdn200clr(klon), SWdn200(klon))
471      ALLOCATE(SWup200clr(klon), SWup200(klon))
472      ALLOCATE(LWdn200clr(klon), LWdn200(klon))
473      ALLOCATE(LWup200clr(klon), LWup200(klon))
474      ALLOCATE(LWdnTOA(klon), LWdnTOAclr(klon))
475! pressure level
476      ALLOCATE(tsumSTD(klon,nlevSTD,nout))
477      ALLOCATE(usumSTD(klon,nlevSTD,nout), vsumSTD(klon,nlevSTD,nout))
478      ALLOCATE(wsumSTD(klon,nlevSTD,nout), phisumSTD(klon,nlevSTD,nout))
479      ALLOCATE(qsumSTD(klon,nlevSTD,nout), rhsumSTD(klon,nlevSTD,nout))
480      ALLOCATE(tnondef(klon,nlevSTD,nout))
481      ALLOCATE(uvsumSTD(klon,nlevSTD,nout))
482      ALLOCATE(vqsumSTD(klon,nlevSTD,nout))
483      ALLOCATE(vTsumSTD(klon,nlevSTD,nout))
484      ALLOCATE(wqsumSTD(klon,nlevSTD,nout))
485      ALLOCATE(vphisumSTD(klon,nlevSTD,nout))
486      ALLOCATE(wTsumSTD(klon,nlevSTD,nout))
487      ALLOCATE(u2sumSTD(klon,nlevSTD,nout))
488      ALLOCATE(v2sumSTD(klon,nlevSTD,nout))
489      ALLOCATE(T2sumSTD(klon,nlevSTD,nout))
490      ALLOCATE(O3sumSTD(klon,nlevSTD,nout))
491      ALLOCATE(O3daysumSTD(klon,nlevSTD,nout))
492!IM beg
493      ALLOCATE(wlevSTD(klon,nlevSTD), ulevSTD(klon,nlevSTD), vlevSTD(klon,nlevSTD))
494      ALLOCATE(tlevSTD(klon,nlevSTD), qlevSTD(klon,nlevSTD), rhlevSTD(klon,nlevSTD))
495      ALLOCATE(philevSTD(klon,nlevSTD))
496      ALLOCATE(uvSTD(klon,nlevSTD),vqSTD(klon,nlevSTD))
497      ALLOCATE(vTSTD(klon,nlevSTD),wqSTD(klon,nlevSTD))
498      ALLOCATE(vphiSTD(klon,nlevSTD),wTSTD(klon,nlevSTD))
499      ALLOCATE(u2STD(klon,nlevSTD),v2STD(klon,nlevSTD))
500      ALLOCATE(T2STD(klon,nlevSTD))
501      ALLOCATE(O3STD(klon,nlevSTD))
502      ALLOCATE(O3daySTD(klon,nlevSTD))
503!IM end
504      ALLOCATE(seed_old(klon,napisccp))
505      ALLOCATE(zuthe(klon),zvthe(klon))
506      ALLOCATE(alb_neig(klon))
507!cloud base mass flux
508      ALLOCATE(ema_cbmf(klon))
509!cloud base pressure & cloud top pressure
510      ALLOCATE(ema_pcb(klon), ema_pct(klon))
511!
512      ALLOCATE(Ma(klon,klev))
513      ALLOCATE(qcondc(klon,klev))
514      ALLOCATE(wd(klon))
515      ALLOCATE(sigd(klon))
516      ALLOCATE(cin(klon), ALE(klon), ALP(klon))
517      ALLOCATE(ftd(klon,klev), fqd(klon,klev))
518      ALLOCATE(Ale_bl(klon))
519      ALLOCATE(Alp_bl(klon))
520      ALLOCATE(lalim_conv(klon))
521      ALLOCATE(wght_th(klon,klev))
522      ALLOCATE(wake_deltat(klon,klev), wake_deltaq(klon,klev))
523      ALLOCATE(wake_Cstar(klon), wake_s(klon))
524      ALLOCATE(wake_pe(klon), wake_fip(klon))
525      ALLOCATE(dt_wake(klon,klev), dq_wake(klon,klev))
526!jyg<
527      ALLOCATE(wake_delta_pbl_TKE(klon,klev+1,nbsrf+1))
528!>jyg
529      ALLOCATE(pfrac_impa(klon,klev), pfrac_nucl(klon,klev))
530      ALLOCATE(pfrac_1nucl(klon,klev))
531      ALLOCATE(total_rain(klon), nday_rain(klon))
532      ALLOCATE(paire_ter(klon))
533      ALLOCATE(albsol1(klon), albsol2(klon))
534!albedo SB >>>
535      ALLOCATE(albsol_dir(klon,nsw),albsol_dif(klon,nsw))
536!albedo SB <<<
537
538      if (read_climoz <= 1) then
539         ALLOCATE(wo(klon,klev, 1))
540      else
541         ! read_climoz == 2
542         ALLOCATE(wo(klon,klev, 2))
543      end if
544     
545      ALLOCATE(clwcon0(klon,klev),rnebcon0(klon,klev))
546      ALLOCATE(heat(klon,klev), heat0(klon,klev))
547      ALLOCATE(cool(klon,klev), cool0(klon,klev))
548      ALLOCATE(topsw(klon), toplw(klon))
549      ALLOCATE(sollwdown(klon), sollwdownclr(klon))
550      ALLOCATE(toplwdown(klon), toplwdownclr(klon))
551      ALLOCATE(topsw0(klon),toplw0(klon),solsw0(klon),sollw0(klon))
552      ALLOCATE(albpla(klon))
553!IM ajout variables CFMIP2/CMIP5
554      ALLOCATE(heatp(klon,klev), coolp(klon,klev))
555      ALLOCATE(heat0p(klon,klev), cool0p(klon,klev))
556      ALLOCATE(radsolp(klon), topswp(klon), toplwp(klon))
557      ALLOCATE(albplap(klon))
558      ALLOCATE(solswp(klon), sollwp(klon))
559      ALLOCATE(gustiness(klon))
560      ALLOCATE(sollwdownp(klon))
561      ALLOCATE(topsw0p(klon),toplw0p(klon))
562      ALLOCATE(solsw0p(klon),sollw0p(klon))
563      ALLOCATE(lwdn0p(klon,klevp1), lwdnp(klon,klevp1))
564      ALLOCATE(lwup0p(klon,klevp1), lwupp(klon,klevp1))
565      ALLOCATE(swdn0p(klon,klevp1), swdnp(klon,klevp1))
566      ALLOCATE(swup0p(klon,klevp1), swupp(klon,klevp1))
567
568      ALLOCATE(cape(klon))
569      ALLOCATE(pbase(klon),bbase(klon))
570      ALLOCATE(zqasc(klon,klev))
571      ALLOCATE(ibas_con(klon), itop_con(klon))
572      ALLOCATE(rain_con(klon), snow_con(klon))
573      ALLOCATE(rlonPOS(klon))
574      ALLOCATE(newsst(klon))
575      ALLOCATE(ustar(klon,nbsrf),u10m(klon,nbsrf), v10m(klon,nbsrf),wstar(klon,nbsrf+1))
576      ALLOCATE(topswad(klon), solswad(klon))
577      ALLOCATE(topswai(klon), solswai(klon))
578      ALLOCATE(tau_aero(klon,klev,naero_grp,nbands),piz_aero(klon,klev,naero_grp,nbands),cg_aero(klon,klev,naero_grp,nbands))
579      ALLOCATE(tau_aero_sw_rrtm(klon,klev,2,nbands_sw_rrtm),piz_aero_sw_rrtm(klon,klev,2,nbands_sw_rrtm))
580      ALLOCATE(cg_aero_sw_rrtm(klon,klev,2,nbands_sw_rrtm))
581      ALLOCATE(tau_aero_lw_rrtm(klon,klev,2,nbands_lw_rrtm),piz_aero_lw_rrtm(klon,klev,2,nbands_lw_rrtm))
582      ALLOCATE(cg_aero_lw_rrtm(klon,klev,2,nbands_lw_rrtm))
583      ALLOCATE(ccm(klon,klev,nbands))
584
585!!! nrlmd le 10/04/2012
586      ALLOCATE(ale_bl_trig(klon))
587!!! fin nrlmd le 10/04/2012
588      if (ok_gwd_rando) allocate(du_gwd_rando(klon, klev))
589      if (.not. ok_hines .and. ok_gwd_rando) allocate(du_gwd_front(klon, klev))
590
591END SUBROUTINE phys_state_var_init
592
593!======================================================================
594SUBROUTINE phys_state_var_end
595!USE dimphy
596USE indice_sol_mod
597IMPLICIT NONE
598include "clesphys.h"
599
600      deallocate(pctsrf, ftsol, falb1, falb2)
601      deallocate(qsol,fevap,z0m,z0h,agesno)
602      deallocate(rain_fall, snow_fall, solsw, sollw, radsol, swradcorr)
603      deallocate(zmea, zstd, zsig, zgam)
604      deallocate(zthe, zpic, zval)
605      deallocate(rugoro, t_ancien, q_ancien, clwcon, rnebcon)
606      deallocate(qs_ancien, ql_ancien)
607      deallocate(qtc_cv,sigt_cv)
608      deallocate(        u_ancien, v_ancien                 )
609      deallocate(        tr_ancien)                           !RomP
610      deallocate(ratqs, pbl_tke,coefh,coefm)
611!nrlmd<
612      deallocate(delta_tsurf)
613!>nrlmd
614      deallocate(zmax0, f0)
615      deallocate(sig1, w01)
616      deallocate(entr_therm, fm_therm)
617      deallocate(detr_therm)
618      deallocate(clwcon0th, rnebcon0th)
619! radiation outputs
620      deallocate(swdn0, swdn)
621      deallocate(swup0, swup)
622      deallocate(lwdn0, lwdn)
623      deallocate(lwup0, lwup)
624      deallocate(SWdn200clr, SWdn200)
625      deallocate(SWup200clr, SWup200)
626      deallocate(LWdn200clr, LWdn200)
627      deallocate(LWup200clr, LWup200)
628      deallocate(LWdnTOA, LWdnTOAclr)
629! pressure level
630      deallocate(tsumSTD)
631      deallocate(usumSTD, vsumSTD)
632      deallocate(wsumSTD, phisumSTD)
633      deallocate(tnondef)
634      deallocate(qsumSTD, rhsumSTD)
635      deallocate(uvsumSTD)
636      deallocate(vqsumSTD)
637      deallocate(vTsumSTD)
638      deallocate(wqsumSTD)
639      deallocate(vphisumSTD)
640      deallocate(wTsumSTD)
641      deallocate(u2sumSTD)
642      deallocate(v2sumSTD)
643      deallocate(T2sumSTD)
644      deallocate(O3sumSTD)
645      deallocate(O3daysumSTD)
646!IM beg
647      deallocate(wlevSTD,ulevSTD,vlevSTD,tlevSTD,qlevSTD,rhlevSTD,philevSTD)
648      deallocate(uvSTD,vqSTD,vTSTD,wqSTD,vphiSTD,wTSTD,u2STD,v2STD,T2STD,O3STD,O3daySTD)
649!IM end
650      deallocate(seed_old)
651      deallocate(zuthe, zvthe)
652      deallocate(alb_neig)
653      deallocate(ema_cbmf)
654      deallocate(ema_pcb, ema_pct)
655      deallocate(Ma, qcondc)
656      deallocate(wd, sigd)
657      deallocate(cin, ALE, ALP)
658      deallocate(ftd, fqd)
659      deallocate(Ale_bl, Alp_bl)
660      deallocate(lalim_conv, wght_th)
661      deallocate(wake_deltat, wake_deltaq)
662      deallocate(wake_Cstar, wake_s, wake_pe, wake_fip)
663      deallocate(dt_wake, dq_wake)
664!jyg<
665      deallocate(wake_delta_pbl_TKE)
666!>jyg
667      deallocate(pfrac_impa, pfrac_nucl)
668      deallocate(pfrac_1nucl)
669      deallocate(total_rain, nday_rain)
670      deallocate(paire_ter)
671      deallocate(albsol1, albsol2)
672!albedo SB >>>
673      deallocate(albsol_dir,albsol_dif,falb_dir,falb_dif,chl_con)
674!albedo SB <<<
675      deallocate(wo)
676      deallocate(clwcon0,rnebcon0)
677      deallocate(heat, heat0)
678      deallocate(cool, cool0)
679      deallocate(topsw, toplw)
680      deallocate(sollwdown, sollwdownclr)
681      deallocate(gustiness)
682      deallocate(toplwdown, toplwdownclr)
683      deallocate(topsw0,toplw0,solsw0,sollw0)
684      deallocate(albpla)
685!IM ajout variables CFMIP2/CMIP5
686      deallocate(heatp, coolp)
687      deallocate(heat0p, cool0p)
688      deallocate(radsolp, topswp, toplwp)
689      deallocate(albplap)
690      deallocate(solswp, sollwp)
691      deallocate(sollwdownp)
692      deallocate(topsw0p,toplw0p)
693      deallocate(solsw0p,sollw0p)
694      deallocate(lwdn0p, lwdnp)
695      deallocate(lwup0p, lwupp)
696      deallocate(swdn0p, swdnp)
697      deallocate(swup0p, swupp)
698      deallocate(cape)
699      deallocate(pbase,bbase)
700      deallocate(zqasc)
701      deallocate(ibas_con, itop_con)
702      deallocate(rain_con, snow_con)
703      deallocate(rlonPOS)
704      deallocate(newsst)
705      deallocate(ustar,u10m, v10m,wstar)
706      deallocate(topswad, solswad)
707      deallocate(topswai, solswai)
708      deallocate(tau_aero,piz_aero,cg_aero)
709      deallocate(tau_aero_sw_rrtm,piz_aero_sw_rrtm,cg_aero_sw_rrtm)
710      deallocate(tau_aero_lw_rrtm,piz_aero_lw_rrtm,cg_aero_lw_rrtm)
711      deallocate(ccm)
712      if (ok_gwd_rando) deallocate(du_gwd_rando)
713      if (.not. ok_hines .and. ok_gwd_rando) deallocate(du_gwd_front)
714       
715!!! nrlmd le 10/04/2012
716      deallocate(ale_bl_trig)
717!!! fin nrlmd le 10/04/2012
718
719END SUBROUTINE phys_state_var_end
720
721      END MODULE phys_state_var_mod
Note: See TracBrowser for help on using the repository browser.