source: trunk/LMDZ.PLUTO/libf/phypluto/phys_state_var_mod.F90 @ 3978

Last change on this file since 3978 was 3929, checked in by debatzbr, 3 months ago

Pluto PCM: Add optical diagnostics for aerosols
BBT

File size: 12.1 KB
RevLine 
[3184]1!
2! $Id: phys_state_var_mod.F90 1670 2012-10-17 08:42:04Z idelkadi $
3!
4      MODULE phys_state_var_mod
5! Variables sauvegardees pour le startphy.nc
6!======================================================================
7!
8!
9!======================================================================
10! Declaration des variables
[3754]11      USE dimphy, only : klon,klev,ndomainsz
[3184]12      USE comsoil_h, only : nsoilmx
13      use comsaison_h, only: mu0, fract
14      use radcommon_h, only: glat
15      USE radinc_h, only : L_NSPECTI, L_NSPECTV,naerkind
[3910]16      use surfdat_h, only: phisfi, albedodat, n2frac, &
[3184]17                        zmea, zstd, zsig, zgam, zthe
18      use turb_mod, only: q2,sensibFlux,wstar,ustar,tstar,hfmax_th,zmax_th
19
20      real,allocatable,dimension(:,:),save :: ztprevious ! Previous loop Atmospheric Temperature (K)
21! Useful for Dynamical Heating calculation.
22      real,allocatable,dimension(:,:),save :: zuprevious
23!$OMP THREADPRIVATE(ztprevious,zuprevious)
24
25      real, dimension(:),allocatable,save ::  tsurf                ! Surface temperature (K).
26      real, dimension(:,:),allocatable,save ::  tsoil              ! Sub-surface temperatures (K).
27      real, dimension(:,:),allocatable,save :: albedo              ! Surface Spectral albedo. By MT2015.
28      real, dimension(:),allocatable,save :: albedo_equivalent     ! Spectral Mean albedo.
29      real, dimension(:),allocatable,save :: albedo_equivalent1     ! Spectral Mean albedo clear sky.
30      real, dimension(:),allocatable,save :: albedo_snow_SPECTV    ! Snow Spectral albedo.
31      real, dimension(:),allocatable,save :: albedo_n2_ice_SPECTV ! N2 ice Spectral albedo.
32!$OMP THREADPRIVATE(tsurf,tsoil,albedo,albedo_equivalent,albedo_equivalent1,albedo_snow_SPECTV,albedo_n2_ice_SPECTV)
33
34      real,dimension(:),allocatable,save :: albedo_bareground ! Bare Ground Albedo. By MT 2015.
35!$OMP THREADPRIVATE(albedo_bareground)
36
37      real,dimension(:),allocatable,save :: emis        ! Thermal IR surface emissivity.
38      real,dimension(:,:),allocatable,save :: dtrad     ! Net atmospheric radiative heating rate (K.s-1).
39      real,dimension(:),allocatable,save :: fluxrad_sky ! Radiative flux from sky absorbed by surface (W.m-2).
40      real,dimension(:),allocatable,save :: fluxrad     ! Net radiative surface flux (W.m-2).
41      real,dimension(:),allocatable,save :: capcal      ! Surface heat capacity (J m-2 K-1).
42      real,dimension(:),allocatable,save :: fluxgrd     ! Surface conduction flux (W.m-2).
43      real,dimension(:,:),allocatable,save :: qsurf     ! Tracer on surface (e.g. kg.m-2).
44!$OMP THREADPRIVATE(emis,dtrad,fluxrad_sky,fluxrad,capcal,fluxgrd,qsurf)
45
46      ! FOR DIAGNOSTIC :
47
48      real,dimension(:),allocatable,save :: fluxsurf_lw     ! Incident Long Wave (IR) surface flux (W.m-2).
49      real,dimension(:),allocatable,save :: fluxsurf_lw1     ! Incident Long Wave (IR) surface flux (W.m-2) clear sky.
50      real,dimension(:),allocatable,save :: fluxsurf_sw     ! Incident Short Wave (stellar) surface flux (W.m-2).
51      real,dimension(:),allocatable,save :: fluxsurf_sw1     ! Incident Short Wave (stellar) surface flux (W.m-2) clear sky.
52      real,dimension(:),allocatable,save :: fluxsurfabs_sw  ! Absorbed Short Wave (stellar) flux by the surface (W.m-2).
53!$OMP THREADPRIVATE(fluxsurf_lw,fluxsurf_lw1,fluxsurf_sw,fluxsurf_sw1,fluxsurfabs_sw)
54
55      real,dimension(:),allocatable,save :: fluxtop_lw      ! Outgoing LW (IR) flux to space (W.m-2).
[3627]56      real,dimension(:),allocatable,save :: fluxtop_sw      ! Outgoing SW (IR) flux to space (W.m-2).
[3184]57      real,dimension(:),allocatable,save :: fluxtop_lw1      ! Outgoing LW (IR) flux to space (W.m-2) clear sky.
58      real,dimension(:),allocatable,save :: fluxabs_sw      ! Absorbed SW (stellar) flux (W.m-2).
59      real,dimension(:),allocatable,save :: fluxabs_sw1      ! Absorbed SW (stellar) flux (W.m-2) clear sky.
60      real,dimension(:),allocatable,save :: fluxtop_dn      ! Incoming SW (stellar) radiation at the top of the atmosphere (W.m-2).
61      real,dimension(:),allocatable,save :: fluxdyn         ! Horizontal heat transport by dynamics (W.m-2).
[3627]62!$OMP THREADPRIVATE(fluxtop_lw,fluxtop_sw,fluxtop_lw1,fluxabs_sw,fluxabs_sw1,fluxtop_dn,fluxdyn)
[3184]63
64      real,dimension(:,:),allocatable,save :: OLR_nu        ! Outgoing LW radiation in each band (Normalized to the band width (W/m2/cm-1)).
65      real,dimension(:,:),allocatable,save :: OSR_nu        ! Outgoing SW radiation in each band (Normalized to the band width (W/m2/cm-1)).
66      real,dimension(:,:),allocatable,save :: GSR_nu        ! Surface SW (or 'Ground' SW) radiation in each band (Normalized to the band width (W/m2/cm-1)).
67      real,dimension(:,:),allocatable,save :: zdtlw         ! LW heating tendencies (K/s).
68      real,dimension(:,:),allocatable,save :: zdtsw         ! SW heating tendencies (K/s).
69      !real,dimension(:),allocatable,save :: sensibFlux      ! Turbulent flux given by the atmosphere to the surface (W.m-2).
70!$OMP THREADPRIVATE(OLR_nu,OSR_nu,GSR_nu,zdtlw,zdtsw)
71
[3929]72      real,dimension(:,:,:),allocatable,save :: int_dtauv       ! VI optical thickness of layers within narrowbands for diags ().
73      real,dimension(:,:,:),allocatable,save :: int_dtaui       ! IR optical thickness of layers within narrowbands for diags ().
74      real,dimension(:,:,:,:),allocatable,save :: int_dtauv_aer ! Aerosol VI optical thickness of layers within narrowbands for diags ().
75      real,dimension(:,:,:,:),allocatable,save :: int_wbarv_aer ! Aerosol VI single scattering albedo within narrowbands for diags ().
76!$OMP THREADPRIVATE(int_dtaui,int_dtauv,int_dtauv_aer,int_wbarv_aer)
[3184]77
78      real,allocatable,dimension(:),save :: tau_col ! Total Aerosol Optical Depth.
79!$OMP THREADPRIVATE(tau_col)
80
81      real,allocatable,dimension(:,:,:),save :: nueffrad ! Aerosol effective radius variance. By RW
82      real,allocatable,dimension(:,:,:),save :: reffrad
[3613]83!$OMP THREADPRIVATE(nueffrad,reffrad)
[3184]84
85      real,dimension(:,:),allocatable,save :: dEzdiff   ! Turbulent diffusion heating (W.m-2)
86      real,dimension(:),allocatable,save :: dEdiff      ! Integrated turbulent diffusion heating (W.m-2)
87      real,dimension(:),allocatable,save :: dEdiffs
88      real,dimension(:,:),allocatable,save :: dEzRadsw  ! Radiative heating (W.m-2)
89      real,dimension(:,:),allocatable,save :: dEzRadlw  ! Radiative heating (W.m-2)
90!$OMP THREADPRIVATE(dEzdiff,dEdiff,dEdiffs,dEzRadsw,dEzRadlw)
91
92      real,dimension(:),allocatable,save :: madjdE      ! Heat from moistadj (W.m-2)
93      real,dimension(:,:),allocatable,save :: madjdEz   ! Heat from moistadj (W.m-2)
94      real,dimension(:),allocatable,save :: lscaledE    ! Heat from largescale (W.m-2)
95      real,dimension(:,:),allocatable,save :: lscaledEz ! Heat from largescale (W.m-2)
96!$OMP THREADPRIVATE(madjdE,madjdEz,lscaledE,lscaledEz)
[3195]97
[3184]98      real,dimension(:),allocatable,save :: genericconddE ! Heat from generic condensation (W.m-2)
99!$OMP THREADPRIVATE(genericconddE)
100
101CONTAINS
102
103!======================================================================
104SUBROUTINE phys_state_var_init(nqtot)
105
106IMPLICIT NONE
107
108        integer,intent(in) :: nqtot
109
110!  Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
111!
112!zmea(:)   ! orographie moyenne
113!zstd(:)   ! deviation standard de l'OESM
114!zsig(:)   ! pente de l'OESM
115!zgam(:)   ! anisotropie de l'OESM
116!zthe(:)   ! orientation de l'OESM
117!zpic(:)   ! Maximum de l'OESM
118!zval(:)   ! Minimum de l'OESM
[3195]119!rugoro(:) ! longueur de rugosite de l'OESM
[3184]120
[3754]121        ndomainsz=(klon-1)/20 + 1
[3184]122        ALLOCATE(phisfi(klon))
123        ALLOCATE(tsurf(klon))
124        ALLOCATE(tsoil(klon,nsoilmx))
125        ALLOCATE(albedo(klon,L_NSPECTV))
126        ALLOCATE(albedo_equivalent(klon))
127        ALLOCATE(albedo_equivalent1(klon))
128        ALLOCATE(albedo_snow_SPECTV(L_NSPECTV))
129        ALLOCATE(albedo_n2_ice_SPECTV(L_NSPECTV))
130        ALLOCATE(albedo_bareground(klon))
[3910]131        ALLOCATE(n2frac(klon))
[3184]132        ALLOCATE(emis(klon))
133        ALLOCATE(dtrad(klon,klev))
134        ALLOCATE(fluxrad_sky(klon))
135        ALLOCATE(fluxrad(klon))
136        ALLOCATE(capcal(klon))
137        ALLOCATE(fluxgrd(klon))
138        ALLOCATE(qsurf(klon,nqtot))
139        ALLOCATE(q2(klon,klev+1))
140        ALLOCATE(ztprevious(klon,klev))
141        ALLOCATE(zuprevious(klon,klev))
142        ALLOCATE(reffrad(klon,klev,naerkind))
143        ALLOCATE(nueffrad(klon,klev,naerkind))
144        ALLOCATE(fluxsurf_lw(klon))
145        ALLOCATE(fluxsurf_lw1(klon))
146        ALLOCATE(fluxsurf_sw(klon))
147        ALLOCATE(fluxsurf_sw1(klon))
148        ALLOCATE(fluxsurfabs_sw(klon))
149        ALLOCATE(fluxtop_lw(klon))
[3627]150        ALLOCATE(fluxtop_sw(klon))
[3184]151        ALLOCATE(fluxtop_lw1(klon))
152        ALLOCATE(fluxabs_sw(klon))
153        ALLOCATE(fluxabs_sw1(klon))
154        ALLOCATE(fluxtop_dn(klon))
155        ALLOCATE(fluxdyn(klon))
156        ALLOCATE(OLR_nu(klon,L_NSPECTI))
157        ALLOCATE(OSR_nu(klon,L_NSPECTV))
158        ALLOCATE(GSR_nu(klon,L_NSPECTV))
159        ALLOCATE(int_dtaui(klon,klev,L_NSPECTI))
160        ALLOCATE(int_dtauv(klon,klev,L_NSPECTV))
[3929]161        ALLOCATE(int_dtauv_aer(klon,klev,L_NSPECTV,naerkind))
162        ALLOCATE(int_wbarv_aer(klon,klev,L_NSPECTV,naerkind))
[3184]163        ALLOCATE(sensibFlux(klon))
164        ALLOCATE(zdtlw(klon,klev))
165        ALLOCATE(zdtsw(klon,klev))
166        ALLOCATE(tau_col(klon))
167        ALLOCATE(dEzdiff(klon,klev))
168        ALLOCATE(dEdiff(klon))
169        ALLOCATE(dEdiffs(klon))
170        ALLOCATE(dEzRadsw(klon,klev))
171        ALLOCATE(dEzRadlw(klon,klev))
172        ALLOCATE(madjdE(klon))
173        ALLOCATE(madjdEz(klon,klev))
174        ALLOCATE(lscaledE(klon))
175        ALLOCATE(lscaledEz(klon,klev))
176        ALLOCATE(genericconddE(klon))
177        ! This is defined in comsaison_h
178        ALLOCATE(mu0(klon))
179        ALLOCATE(fract(klon))
180         ! This is defined in radcommon_h
181        ALLOCATE(glat(klon))
182        ALLOCATE(albedodat(klon))
183        ALLOCATE(zmea(klon))
184        ALLOCATE(zstd(klon))
185        ALLOCATE(zsig(klon))
186        ALLOCATE(zgam(klon))
187        ALLOCATE(zthe(klon))
188        !allocate(l0(klon))
189        allocate(wstar(klon))
190        allocate(ustar(klon))
191        allocate(tstar(klon))
192        allocate(hfmax_th(klon))
193        allocate(zmax_th(klon))
194END SUBROUTINE phys_state_var_init
195
196!======================================================================
197SUBROUTINE phys_state_var_end
198
199IMPLICIT NONE
200
201        DEALLOCATE(tsurf)
202        DEALLOCATE(tsoil)
203        DEALLOCATE(albedo)
204        DEALLOCATE(albedo_equivalent)
205        DEALLOCATE(albedo_equivalent1)
206        DEALLOCATE(albedo_snow_SPECTV)
207        DEALLOCATE(albedo_n2_ice_SPECTV)
208        DEALLOCATE(albedo_bareground)
209        DEALLOCATE(emis)
210        DEALLOCATE(dtrad)
211        DEALLOCATE(fluxrad_sky)
212        DEALLOCATE(fluxrad)
213        DEALLOCATE(capcal)
214
215        DEALLOCATE(fluxgrd)
216        DEALLOCATE(qsurf)
217        DEALLOCATE(q2)
218        DEALLOCATE(ztprevious)
219        DEALLOCATE(zuprevious)
220        DEALLOCATE(reffrad)
221        DEALLOCATE(nueffrad)
222        DEALLOCATE(fluxsurf_lw)
223        DEALLOCATE(fluxsurf_lw1)
224        DEALLOCATE(fluxsurf_sw)
225        DEALLOCATE(fluxsurf_sw1)
226        DEALLOCATE(fluxsurfabs_sw)
227        DEALLOCATE(fluxtop_lw)
[3627]228        DEALLOCATE(fluxtop_sw)
[3184]229        DEALLOCATE(fluxtop_lw1)
230        DEALLOCATE(fluxabs_sw)
231        DEALLOCATE(fluxabs_sw1)
232        DEALLOCATE(fluxtop_dn)
233        DEALLOCATE(fluxdyn)
234        DEALLOCATE(OLR_nu)
235        DEALLOCATE(OSR_nu)
236        DEALLOCATE(GSR_nu)
237        DEALLOCATE(int_dtaui)
238        DEALLOCATE(int_dtauv)
[3929]239        DEALLOCATE(int_dtauv_aer)
240        DEALLOCATE(int_wbarv_aer)
[3184]241        DEALLOCATE(sensibFlux)
242        DEALLOCATE(zdtlw)
243        DEALLOCATE(zdtsw)
244        DEALLOCATE(tau_col)
245        DEALLOCATE(dEzdiff)
246        DEALLOCATE(dEdiff)
247        DEALLOCATE(dEdiffs)
248        DEALLOCATE(dEzRadsw)
249        DEALLOCATE(dEzRadlw)
250        DEALLOCATE(madjdE)
251        DEALLOCATE(madjdEz)
252        DEALLOCATE(lscaledE)
253        DEALLOCATE(lscaledEz)
254        DEALLOCATE(genericconddE)
255        DEALLOCATE(mu0)
256        DEALLOCATE(fract)
257        DEALLOCATE(glat)
258        DEALLOCATE(phisfi)
259        DEALLOCATE(albedodat)
[3910]260        DEALLOCATE(n2frac)
[3184]261        DEALLOCATE(zmea)
262        DEALLOCATE(zstd)
263        DEALLOCATE(zsig)
264        DEALLOCATE(zgam)
265        DEALLOCATE(zthe)
266        !deallocate(l0)
267        deallocate(wstar)
268        deallocate(ustar)
269        deallocate(tstar)
270        deallocate(hfmax_th)
271        deallocate(zmax_th)
272
273END SUBROUTINE phys_state_var_end
274
275      END MODULE phys_state_var_mod
Note: See TracBrowser for help on using the repository browser.