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

Last change on this file since 3187 was 3184, checked in by afalco, 2 years ago

Pluto PCM:
Added LMDZ.PLUTO, a copy of the generic model,
cleaned from some unnecessary modules (water, ...)
AF

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