source: trunk/LMDZ.VENUS/libf/phyvenus/phys_state_var_mod.F90 @ 2008

Last change on this file since 2008 was 1723, checked in by mlefevre, 8 years ago

Mesoscale modification for Venus LMD physics

File size: 6.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
12      USE turb_mod
13!      INTEGER, SAVE :: radpas
14!!$OMP THREADPRIVATE(radpas)
15!      REAL, SAVE :: dtime
16!!$OMP THREADPRIVATE(dtime)
17
18      REAL, ALLOCATABLE, SAVE :: ftsol(:)
19!$OMP THREADPRIVATE(ftsol)
20      REAL, ALLOCATABLE, SAVE :: ftsoil(:,:)
21!$OMP THREADPRIVATE(ftsoil)
22      REAL, ALLOCATABLE, SAVE :: falbe(:)
23!$OMP THREADPRIVATE(falbe)
24
25!clesphy0 param physiq
26!
27! Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
28!
29      REAL, ALLOCATABLE, SAVE :: zmea(:), zstd(:), zsig(:), zgam(:)
30!$OMP THREADPRIVATE(zmea, zstd, zsig, zgam)
31      REAL, ALLOCATABLE, SAVE :: zthe(:), zpic(:), zval(:)
32!$OMP THREADPRIVATE(zthe, zpic, zval)
33!     REAL tabcntr0(100)
34      REAL, ALLOCATABLE, SAVE :: rugoro(:)
35!$OMP THREADPRIVATE(rugoro)
36      REAL, ALLOCATABLE, SAVE :: t_ancien(:,:), q_ancien(:,:)
37!$OMP THREADPRIVATE(t_ancien, q_ancien)
38      REAL, ALLOCATABLE, SAVE :: u_ancien(:,:), v_ancien(:,:)
39!$OMP THREADPRIVATE(u_ancien, v_ancien)
40      LOGICAL, SAVE :: ancien_ok
41!$OMP THREADPRIVATE(ancien_ok)
42! pressure level
43      REAL,ALLOCATABLE,SAVE :: zuthe(:),zvthe(:)
44!$OMP THREADPRIVATE(zuthe,zvthe)
45!
46! composition for upper atmosphere
47      REAL,ALLOCATABLE,SAVE :: co2vmr_gcm(:,:)   
48!$OMP THREADPRIVATE(co2vmr_gcm)
49      REAL,ALLOCATABLE,SAVE :: ovmr_gcm(:,:)   
50!$OMP THREADPRIVATE(ovmr_gcm)
51      REAL,ALLOCATABLE,SAVE :: n2vmr_gcm(:,:)   
52!$OMP THREADPRIVATE(n2vmr_gcm)
53      REAL,ALLOCATABLE,SAVE :: nvmr_gcm(:,:)   
54!$OMP THREADPRIVATE(nvmr_gcm)
55      REAL,ALLOCATABLE,SAVE :: covmr_gcm(:,:)   
56!$OMP THREADPRIVATE(covmr_gcm)
57
58! Tendencies due to radiative scheme   [K/s]
59! heat : chauffage solaire
60! heat0: chauffage solaire ciel clair
61! cool : refroidissement infrarouge
62! cool0 : refroidissement infrarouge ciel clair
63      REAL,ALLOCATABLE,SAVE :: heat(:,:)   
64!$OMP THREADPRIVATE(heat)
65      REAL,ALLOCATABLE,SAVE :: heat0(:,:)
66!$OMP THREADPRIVATE(heat0)
67      REAL,ALLOCATABLE,SAVE :: cool(:,:)
68!$OMP THREADPRIVATE(cool)
69      REAL,ALLOCATABLE,SAVE :: cool0(:,:)
70!$OMP THREADPRIVATE(cool0)
71     REAL,ALLOCATABLE,SAVE :: dtsw(:,:)   
72!$OMP THREADPRIVATE(dtsw)
73     REAL,ALLOCATABLE,SAVE :: dtlw(:,:)   
74!$OMP THREADPRIVATE(dtlw)
75     REAL,ALLOCATABLE,SAVE :: d_t_rad(:,:),d_t_euv(:,:)   
76!$OMP THREADPRIVATE(d_t_rad,d_t_euv)
77     REAL,ALLOCATABLE,SAVE :: d_t_nirco2(:,:),d_t_nlte(:,:)
78!$OMP THREADPRIVATE(d_t_nirco2,d_t_nlte)
79
80! Fluxes (W/m2)
81! sollwdown : downward LW flux at surface
82! sollwdownclr : downward CS LW flux at surface
83! toplwdown : downward CS LW flux at TOA
84! toplwdownclr : downward CS LW flux at TOA
85      REAL,ALLOCATABLE,SAVE :: swnet(:,:)   
86!$OMP THREADPRIVATE(swnet)
87      REAL,ALLOCATABLE,SAVE :: lwnet(:,:)   
88!$OMP THREADPRIVATE(lwnet)
89      REAL,ALLOCATABLE,SAVE :: topsw(:), toplw(:)
90!$OMP THREADPRIVATE(topsw,toplw)
91      REAL, ALLOCATABLE, SAVE :: solsw(:), sollw(:)
92!$OMP THREADPRIVATE(solsw, sollw)
93      REAL, ALLOCATABLE, SAVE :: radsol(:)
94!$OMP THREADPRIVATE(radsol)
95      REAL,ALLOCATABLE,SAVE :: sollwdown(:)
96!$OMP THREADPRIVATE(sollwdown)
97      REAL,ALLOCATABLE,SAVE :: sollwdownclr(:)
98!$OMP THREADPRIVATE(sollwdownclr)
99      REAL,ALLOCATABLE,SAVE :: toplwdown(:)
100!$OMP THREADPRIVATE(toplwdown)
101      REAL,ALLOCATABLE,SAVE :: toplwdownclr(:)
102!$OMP THREADPRIVATE(toplwdownclr)
103      REAL,ALLOCATABLE,SAVE :: topsw0(:),toplw0(:),solsw0(:),sollw0(:)
104!$OMP THREADPRIVATE(topsw0,toplw0,solsw0,sollw0)
105      REAL,save,allocatable :: dlw(:)  ! derivee infra rouge
106      REAL,save,allocatable :: fder(:) ! Derive de flux (sensible et latente)
107!$OMP THREADPRIVATE(dlw,fder)
108CONTAINS
109
110!======================================================================
111SUBROUTINE phys_state_var_init
112
113IMPLICIT NONE
114#include "dimsoil.h"
115
116      ALLOCATE(ftsol(klon))            ! temperature de surface
117      ALLOCATE(ftsoil(klon,nsoilmx))   ! temperature dans le sol
118      ALLOCATE(falbe(klon))            ! albedo
119!  Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
120!
121!zmea(:)   ! orographie moyenne
122!zstd(:)   ! deviation standard de l'OESM
123!zsig(:)   ! pente de l'OESM
124!zgam(:)   ! anisotropie de l'OESM
125!zthe(:)   ! orientation de l'OESM
126!zpic(:)   ! Maximum de l'OESM
127!zval(:)   ! Minimum de l'OESM
128!rugoro(:) ! longueur de rugosite de l'OESM
129      ALLOCATE(zmea(klon), zstd(klon), zsig(klon), zgam(klon))
130      ALLOCATE(zthe(klon), zpic(klon), zval(klon))
131      ALLOCATE(rugoro(klon))
132
133      ALLOCATE(t_ancien(klon,klev), q_ancien(klon,klev))
134      ALLOCATE(u_ancien(klon,klev), v_ancien(klon,klev))
135
136      ALLOCATE(zuthe(klon),zvthe(klon))
137
138      ALLOCATE(ovmr_gcm(klon,klev),covmr_gcm(klon,klev))
139      ALLOCATE(co2vmr_gcm(klon,klev),n2vmr_gcm(klon,klev))
140      ALLOCATE(nvmr_gcm(klon,klev))
141
142      ALLOCATE(heat(klon,klev), heat0(klon,klev))
143      ALLOCATE(cool(klon,klev), cool0(klon,klev))
144      ALLOCATE(dtlw(klon,klev),dtsw(klon,klev))
145      ALLOCATE(d_t_rad(klon,klev),d_t_euv(klon,klev))
146      ALLOCATE(d_t_nirco2(klon,klev),d_t_nlte(klon,klev))
147
148      ALLOCATE(swnet(klon,klev+1), lwnet(klon,klev+1))
149      ALLOCATE(topsw(klon), toplw(klon))
150      ALLOCATE(solsw(klon), sollw(klon))
151      ALLOCATE(radsol(klon))  ! bilan radiatif au sol calcule par code radiatif
152      ALLOCATE(sollwdown(klon), sollwdownclr(klon))
153      ALLOCATE(toplwdown(klon), toplwdownclr(klon))
154      ALLOCATE(topsw0(klon),toplw0(klon),solsw0(klon),sollw0(klon))
155      ALLOCATE(dlw(klon), fder(klon))
156      allocate(sens(klon))     
157      allocate(q2(klon,klev+1))
158      allocate(l0(klon))
159      allocate(wstar(klon))
160      allocate(yustar(klon))
161      allocate(tstar(klon))
162      allocate(hfmax_th(klon))
163      allocate(zmax_th(klon))
164
165END SUBROUTINE phys_state_var_init
166
167!======================================================================
168SUBROUTINE phys_state_var_end
169
170IMPLICIT NONE
171
172      deallocate(ftsol, ftsoil, falbe)
173      deallocate(zmea, zstd, zsig, zgam)
174      deallocate(zthe, zpic, zval)
175      deallocate(rugoro, t_ancien, q_ancien)
176      deallocate(        u_ancien, v_ancien)
177      deallocate(zuthe, zvthe)
178
179      deallocate(ovmr_gcm,covmr_gcm)
180      deallocate(co2vmr_gcm,n2vmr_gcm)
181      deallocate(nvmr_gcm)
182
183      deallocate(heat, heat0)
184      deallocate(cool, cool0)
185      deallocate(dtlw,dtsw)
186      deallocate(d_t_rad,d_t_euv)
187      deallocate(d_t_nirco2,d_t_nlte)
188
189      deallocate(swnet, lwnet)
190      deallocate(solsw, sollw, radsol)
191      deallocate(topsw, toplw)
192      deallocate(sollwdown, sollwdownclr)
193      deallocate(toplwdown, toplwdownclr)
194      deallocate(topsw0,toplw0,solsw0,sollw0)
195      deallocate(dlw, fder)
196      deallocate(sens)
197      deallocate(q2)
198      deallocate(l0)
199      deallocate(wstar)
200      deallocate(yustar)
201      deallocate(tstar)
202      deallocate(hfmax_th)
203      deallocate(zmax_th)
204END SUBROUTINE phys_state_var_end
205
206      END MODULE phys_state_var_mod
Note: See TracBrowser for help on using the repository browser.