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

Last change on this file since 3888 was 3888, checked in by jyg, 3 years ago

New provisional version of the splitting of the
diffusive boundary layer into inwake and offwake
PBLs. The splitting of the diffuse BL should NOT
be activated yet for general purpose simulations.

The splitting is activated by:
mod(iflag_pbl_split,10)=1 for the option with
fixed surface temperature and
mod(iflag_pbl_split,10)=2 for the option with
coupled surface temperature.

iflag_pbl_split=0 ==> no splittingat all.
iflag_pbl_split=10 ==> splitting of thermals.
iflag_pbl_split=11 ==> splitting of thermals and
of vertical diffusion (fixed surf. temp.).
iflag_pbl_split=12 ==> splitting of thermals and
of vertical diffusion (coupled surf. temp.).

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