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

Last change on this file since 1519 was 1314, checked in by slebonnois, 11 years ago

SL: bug correction upper atmosphere

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