source: trunk/LMDZ.TITAN.old/libf/phytitan/phys_state_var_mod.F90 @ 3303

Last change on this file since 3303 was 1525, checked in by emillour, 9 years ago

All GCMs:
More on enforcing dynamics/physics separation: get rid of references to "control_mod" from physics packages.
EM

File size: 5.8 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! heat : chauffage solaire
46! heat0: chauffage solaire ciel clair
47! cool : refroidissement infrarouge
48! cool0 : refroidissement infrarouge ciel clair
49! sollwdown : downward LW flux at surface
50! sollwdownclr : downward CS LW flux at surface
51! toplwdown : downward CS LW flux at TOA
52! toplwdownclr : downward CS LW flux at TOA
53! swnet,swdn,lwdn: + downward
54! lwnet,swup,lwup: + upward
55      REAL,ALLOCATABLE,SAVE :: swnet(:,:),swup(:,:),swdn(:,:)   
56!$OMP THREADPRIVATE(swnet,swup,swdn)
57      REAL,ALLOCATABLE,SAVE :: lwnet(:,:),lwup(:,:),lwdn(:,:)
58!$OMP THREADPRIVATE(lwnet,lwup,lwdn)
59      REAL,ALLOCATABLE,SAVE :: heat(:,:)   
60!$OMP THREADPRIVATE(heat)
61      REAL,ALLOCATABLE,SAVE :: heat0(:,:)
62!$OMP THREADPRIVATE(heat0)
63      REAL,ALLOCATABLE,SAVE :: cool(:,:)
64!$OMP THREADPRIVATE(cool)
65      REAL,ALLOCATABLE,SAVE :: cool0(:,:)
66!$OMP THREADPRIVATE(cool0)
67      REAL,ALLOCATABLE,SAVE :: dtrad(:,:)   
68!$OMP THREADPRIVATE(dtrad)
69      REAL,ALLOCATABLE,SAVE :: topsw(:), toplw(:)
70!$OMP THREADPRIVATE(topsw,toplw)
71      REAL, ALLOCATABLE, SAVE :: solsw(:), sollw(:)
72!$OMP THREADPRIVATE(solsw, sollw)
73      REAL, ALLOCATABLE, SAVE :: radsol(:)
74!$OMP THREADPRIVATE(radsol)
75      REAL,ALLOCATABLE,SAVE :: sollwdown(:)
76!$OMP THREADPRIVATE(sollwdown)
77      REAL,ALLOCATABLE,SAVE :: sollwdownclr(:)
78!$OMP THREADPRIVATE(sollwdownclr)
79      REAL,ALLOCATABLE,SAVE :: toplwdown(:)
80!$OMP THREADPRIVATE(toplwdown)
81      REAL,ALLOCATABLE,SAVE :: toplwdownclr(:)
82!$OMP THREADPRIVATE(toplwdownclr)
83      REAL,ALLOCATABLE,SAVE :: topsw0(:),toplw0(:),solsw0(:),sollw0(:)
84!$OMP THREADPRIVATE(topsw0,toplw0,solsw0,sollw0)
85      REAL,save,allocatable :: dlw(:)  ! derivee infra rouge
86      REAL,save,allocatable :: fder(:) ! Derive de flux (sensible et latente)
87!$OMP THREADPRIVATE(dlw,fder)
88
89!
90! Parametres pour le cycle du methane:
91!
92      REAL,save,allocatable :: resch4(:) ! surface reservoir CH4
93!$OMP THREADPRIVATE(resch4)
94
95CONTAINS
96
97!======================================================================
98SUBROUTINE phys_state_var_init
99
100IMPLICIT NONE
101#include "dimsoil.h"
102
103      ALLOCATE(ftsol(klon))            ! temperature de surface
104      ALLOCATE(ftsoil(klon,nsoilmx))   ! temperature dans le sol
105      ALLOCATE(falbe(klon))            ! albedo
106
107!  Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
108!
109!zmea(:)   ! orographie moyenne
110!zstd(:)   ! deviation standard de l'OESM
111!zsig(:)   ! pente de l'OESM
112!zgam(:)   ! anisotropie de l'OESM
113!zthe(:)   ! orientation de l'OESM
114!zpic(:)   ! Maximum de l'OESM
115!zval(:)   ! Minimum de l'OESM
116!rugoro(:) ! longueur de rugosite de l'OESM
117      ALLOCATE(zmea(klon), zstd(klon), zsig(klon), zgam(klon))
118      ALLOCATE(zthe(klon), zpic(klon), zval(klon))
119      ALLOCATE(rugoro(klon))
120
121      ALLOCATE(t_ancien(klon,klev), q_ancien(klon,klev))
122      ALLOCATE(u_ancien(klon,klev), v_ancien(klon,klev))
123
124      ALLOCATE(zuthe(klon),zvthe(klon))
125!
126      ALLOCATE(swnet(klon,klev+1), lwnet(klon,klev+1))
127      ALLOCATE(swup(klon,klev+1), lwup(klon,klev+1))
128      ALLOCATE(swdn(klon,klev+1), lwdn(klon,klev+1))
129      ALLOCATE(heat(klon,klev), heat0(klon,klev))
130      ALLOCATE(cool(klon,klev), cool0(klon,klev))
131      ALLOCATE(dtrad(klon,klev))
132      ALLOCATE(topsw(klon), toplw(klon))
133      ALLOCATE(solsw(klon), sollw(klon))
134      ALLOCATE(radsol(klon))  ! bilan radiatif au sol calcule par code radiatif
135      ALLOCATE(sollwdown(klon), sollwdownclr(klon))
136      ALLOCATE(toplwdown(klon), toplwdownclr(klon))
137      ALLOCATE(topsw0(klon),toplw0(klon),solsw0(klon),sollw0(klon))
138      ALLOCATE(dlw(klon), fder(klon))
139     
140      ALLOCATE(resch4(klon))
141
142END SUBROUTINE phys_state_var_init
143
144!======================================================================
145SUBROUTINE phys_state_var_end
146
147IMPLICIT NONE
148
149      deallocate(ftsol, ftsoil, falbe)
150      deallocate(zmea, zstd, zsig, zgam)
151      deallocate(zthe, zpic, zval)
152      deallocate(rugoro, t_ancien, q_ancien)
153      deallocate(        u_ancien, v_ancien)
154      deallocate(zuthe, zvthe)
155      deallocate(swnet, lwnet)
156      deallocate(swup, lwup)
157      deallocate(swdn, lwdn)
158      deallocate(heat, heat0)
159      deallocate(cool, cool0)
160      deallocate(dtrad)
161      deallocate(solsw, sollw, radsol)
162      deallocate(topsw, toplw)
163      deallocate(sollwdown, sollwdownclr)
164      deallocate(toplwdown, toplwdownclr)
165      deallocate(topsw0,toplw0,solsw0,sollw0)
166      deallocate(dlw, fder)
167
168      deallocate(resch4)
169
170END SUBROUTINE phys_state_var_end
171
172      END MODULE phys_state_var_mod
Note: See TracBrowser for help on using the repository browser.