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

Last change on this file since 2203 was 2193, checked in by flefevre, 5 years ago

mise en place du supercycling du rayonnement et de la chimie

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