source: LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90 @ 4059

Last change on this file since 4059 was 4059, checked in by oboucher, 2 years ago

Audran Borella's parametrisation for ice supersaturation
activated with flag_ice_sursat (FALSE by default)

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