source: trunk/LMDZ.GENERIC/libf/phystd/thermcell_env.F90 @ 2060

Last change on this file since 2060 was 2060, checked in by aboissinot, 6 years ago

Add the thermal plume model (cf. Rio et al. 2010) extended to gas giant.
Specific parameters are set in thermcell_mod.

File size: 4.1 KB
Line 
1!
2!
3!
4      SUBROUTINE thermcell_env(ngrid,nlay,po,pt,pu,pv,pplay,  &
5      &           pplev,zo,zh,zl,ztv,zthl,zu,zv,zpspsk,pqsat,lev_out)
6
7!==============================================================================
8! thermcell_env: calcule les caracteristiques de l environnement
9!                necessaires au calcul des proprietes dans le thermique
10!==============================================================================
11
12      USE print_control_mod, ONLY: prt_level
13      USE thermcell_mod, ONLY: RKAPPA
14      USE watercommon_h, ONLY: RLvCp, RETV, watersat
15      USE planete_mod, ONLY: preff
16     
17      IMPLICIT NONE   
18     
19!==============================================================================
20! Declaration
21!==============================================================================
22     
23!      inputs:
24!      -------
25     
26      INTEGER ngrid
27      INTEGER nlay
28      INTEGER lev_out                           ! niveau pour les print
29     
30      REAL po(ngrid,nlay)                       ! large scale water
31      REAL pt(ngrid,nlay)                       ! large scale temperature
32      REAL pu(ngrid,nlay)                       ! large scale zonal wind
33      REAL pv(ngrid,nlay)                       ! large scale meridional wind
34      REAL pplay(ngrid,nlay)                    ! layers pressure
35      REAL pplev(ngrid,nlay+1)                  ! levels pressure
36     
37!      outputs:
38!      --------
39     
40      REAL zo(ngrid,nlay)                       ! qt  environment
41      REAL zl(ngrid,nlay)                       ! ql  environment
42      REAL zh(ngrid,nlay)                       ! T   environment
43      REAL ztv(ngrid,nlay)                      ! TV  environment
44      REAL zthl(ngrid,nlay)                     ! TPV environment
45      REAL zu(ngrid,nlay)                       ! u   environment
46      REAL zv(ngrid,nlay)                       ! v   environment
47     
48      REAL zpspsk(ngrid,nlay)                   ! Exner function
49      REAL pqsat(ngrid,nlay)                    ! saturation vapor pressure
50     
51!      local:
52!      ------
53     
54      INTEGER ig, ll
55     
56!==============================================================================
57! Initialization
58!==============================================================================
59     
60!------------------------------------------------------------------------------
61! Calcul des caracteristiques de l'environnement
62!------------------------------------------------------------------------------
63      DO ll=1,nlay
64         DO ig=1,ngrid
65            zo(ig,ll) = po(ig,ll)
66            zl(ig,ll) = 0.
67            zh(ig,ll) = pt(ig,ll)
68         ENDDO
69      ENDDO
70     
71!==============================================================================
72! Computation of qsat and condensation
73!==============================================================================
74
75      DO ll=1,nlay
76         DO ig=1,ngrid
77            CALL watersat(pt(ig,ll), pplev(ig,ll), pqsat(ig,ll))
78         ENDDO
79      ENDDO
80     
81      DO ll=1,nlay
82         DO ig=1,ngrid
83            zl(ig,ll) = max(0.,po(ig,ll) - pqsat(ig,ll))                      ! zl   set to ql   env
84            zh(ig,ll) = pt(ig,ll) + RLvCp * zl(ig,ll)                         ! zh   set to TR   env
85            zo(ig,ll) = po(ig,ll) - zl(ig,ll)                                 ! zo   set to qv   env
86         ENDDO
87      ENDDO
88     
89      DO ll=1,nlay
90         DO ig=1,ngrid
91             zpspsk(ig,ll) = (pplay(ig,ll)/preff)**RKAPPA
92             zu(ig,ll) = pu(ig,ll)
93             zv(ig,ll) = pv(ig,ll)
94             
95!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96! AB : WARNING, zh is no longer the potentiel temperature.
97!      It is now the temperature. How awful!
98!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
99            ztv(ig,ll) = zh(ig,ll)/zpspsk(ig,ll)                              ! ztv  set to TRP  env
100            ztv(ig,ll) = ztv(ig,ll)*(1.+RETV*(zo(ig,ll))-zl(ig,ll))           ! ztv  set to TRPV env
101            zthl(ig,ll) = pt(ig,ll)/zpspsk(ig,ll)                             ! zthl set to TP   env
102           
103         ENDDO
104      ENDDO
105     
106     
107RETURN
108END
Note: See TracBrowser for help on using the repository browser.