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

Last change on this file since 2187 was 2135, checked in by slebonnois, 6 years ago

SL, Venus: new keys for flexibility cp0/cp(T) and Held-Suarez type physics

File size: 7.1 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! Case for Newtonian cooling (physideal=.true.)
81     REAL,ALLOCATABLE,SAVE :: zt_eq(:,:)   
82!$OMP THREADPRIVATE(zt_eq)
83
84! Fluxes (W/m2)
85! sollwdown : downward LW flux at surface
86! sollwdownclr : downward CS LW flux at surface
87! toplwdown : downward CS LW flux at TOA
88! toplwdownclr : downward CS LW flux at TOA
89      REAL,ALLOCATABLE,SAVE :: swnet(:,:)   
90!$OMP THREADPRIVATE(swnet)
91      REAL,ALLOCATABLE,SAVE :: lwnet(:,:)   
92!$OMP THREADPRIVATE(lwnet)
93      REAL,ALLOCATABLE,SAVE :: topsw(:), toplw(:)
94!$OMP THREADPRIVATE(topsw,toplw)
95      REAL, ALLOCATABLE, SAVE :: solsw(:), sollw(:)
96!$OMP THREADPRIVATE(solsw, sollw)
97      REAL, ALLOCATABLE, SAVE :: radsol(:)
98!$OMP THREADPRIVATE(radsol)
99      REAL,ALLOCATABLE,SAVE :: sollwdown(:)
100!$OMP THREADPRIVATE(sollwdown)
101      REAL,ALLOCATABLE,SAVE :: sollwdownclr(:)
102!$OMP THREADPRIVATE(sollwdownclr)
103      REAL,ALLOCATABLE,SAVE :: toplwdown(:)
104!$OMP THREADPRIVATE(toplwdown)
105      REAL,ALLOCATABLE,SAVE :: toplwdownclr(:)
106!$OMP THREADPRIVATE(toplwdownclr)
107      REAL,ALLOCATABLE,SAVE :: topsw0(:),toplw0(:),solsw0(:),sollw0(:)
108!$OMP THREADPRIVATE(topsw0,toplw0,solsw0,sollw0)
109      REAL,save,allocatable :: dlw(:)  ! derivee infra rouge
110      REAL,save,allocatable :: fder(:) ! Derive de flux (sensible et latente)
111!$OMP THREADPRIVATE(dlw,fder)
112CONTAINS
113
114!======================================================================
115SUBROUTINE phys_state_var_init
116
117IMPLICIT NONE
118#include "dimsoil.h"
119
120      ALLOCATE(ftsol(klon))            ! temperature de surface
121      ALLOCATE(ftsoil(klon,nsoilmx))   ! temperature dans le sol
122      ALLOCATE(falbe(klon))            ! albedo
123!  Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
124!
125!zmea(:)   ! orographie moyenne
126!zstd(:)   ! deviation standard de l'OESM
127!zsig(:)   ! pente de l'OESM
128!zgam(:)   ! anisotropie de l'OESM
129!zthe(:)   ! orientation de l'OESM
130!zpic(:)   ! Maximum de l'OESM
131!zval(:)   ! Minimum de l'OESM
132!rugoro(:) ! longueur de rugosite de l'OESM
133      ALLOCATE(zmea(klon), zstd(klon), zsig(klon), zgam(klon))
134      ALLOCATE(zthe(klon), zpic(klon), zval(klon))
135      ALLOCATE(rugoro(klon))
136
137      ALLOCATE(t_ancien(klon,klev), q_ancien(klon,klev))
138      ALLOCATE(u_ancien(klon,klev), v_ancien(klon,klev))
139
140      ALLOCATE(zuthe(klon),zvthe(klon))
141
142      ALLOCATE(ovmr_gcm(klon,klev),covmr_gcm(klon,klev))
143      ALLOCATE(co2vmr_gcm(klon,klev),n2vmr_gcm(klon,klev))
144      ALLOCATE(nvmr_gcm(klon,klev))
145
146      ALLOCATE(heat(klon,klev), heat0(klon,klev))
147      ALLOCATE(cool(klon,klev), cool0(klon,klev))
148      ALLOCATE(dtlw(klon,klev),dtsw(klon,klev))
149      ALLOCATE(d_t_rad(klon,klev),d_t_euv(klon,klev))
150      ALLOCATE(d_t_nirco2(klon,klev),d_t_nlte(klon,klev))
151      ALLOCATE(zt_eq(klon,klev))
152
153      ALLOCATE(swnet(klon,klev+1), lwnet(klon,klev+1))
154      ALLOCATE(topsw(klon), toplw(klon))
155      ALLOCATE(solsw(klon), sollw(klon))
156      ALLOCATE(radsol(klon))  ! bilan radiatif au sol calcule par code radiatif
157      ALLOCATE(sollwdown(klon), sollwdownclr(klon))
158      ALLOCATE(toplwdown(klon), toplwdownclr(klon))
159      ALLOCATE(topsw0(klon),toplw0(klon),solsw0(klon),sollw0(klon))
160      ALLOCATE(dlw(klon), fder(klon))
161      allocate(sens(klon))     
162      allocate(q2(klon,klev+1))
163      allocate(l0(klon))
164      allocate(wstar(klon))
165      allocate(yustar(klon))
166      allocate(tstar(klon))
167      allocate(hfmax_th(klon))
168      allocate(zmax_th(klon))
169
170END SUBROUTINE phys_state_var_init
171
172!======================================================================
173SUBROUTINE phys_state_var_end
174
175IMPLICIT NONE
176
177      deallocate(ftsol, ftsoil, falbe)
178      deallocate(zmea, zstd, zsig, zgam)
179      deallocate(zthe, zpic, zval)
180      deallocate(rugoro, t_ancien, q_ancien)
181      deallocate(        u_ancien, v_ancien)
182      deallocate(zuthe, zvthe)
183
184      deallocate(ovmr_gcm,covmr_gcm)
185      deallocate(co2vmr_gcm,n2vmr_gcm)
186      deallocate(nvmr_gcm)
187
188      deallocate(heat, heat0)
189      deallocate(cool, cool0)
190      deallocate(dtlw,dtsw)
191      deallocate(d_t_rad,d_t_euv)
192      deallocate(d_t_nirco2,d_t_nlte)
193      deallocate(zt_eq)
194
195      deallocate(swnet, lwnet)
196      deallocate(solsw, sollw, radsol)
197      deallocate(topsw, toplw)
198      deallocate(sollwdown, sollwdownclr)
199      deallocate(toplwdown, toplwdownclr)
200      deallocate(topsw0,toplw0,solsw0,sollw0)
201      deallocate(dlw, fder)
202      deallocate(sens)
203      deallocate(q2)
204      deallocate(l0)
205      deallocate(wstar)
206      deallocate(yustar)
207      deallocate(tstar)
208      deallocate(hfmax_th)
209      deallocate(zmax_th)
210END SUBROUTINE phys_state_var_end
211
212      END MODULE phys_state_var_mod
Note: See TracBrowser for help on using the repository browser.