source: LMDZ5/branches/IPSLCM6.0.10/libf/phymar/PHY_Atm_CP_INI.f90 @ 3172

Last change on this file since 3172 was 2160, checked in by Laurent Fairhead, 10 years ago

Merged trunk changes -r2070:2158 into testing branch. Compilation problems introduced by revision r2155 have been corrected by hand

File size: 8.6 KB
Line 
1      subroutine PHY_Atm_CP_INI(mzc,kcolc)
2
3!------------------------------------------------------------------------------+
4!                                                         Mon 17-Jun-2013  MAR |
5!     subroutine PHY_Atm_CP_INI    interfaces                                  |
6!                Bechtold et al. (2001) Convective Parameterization with MAR   |
7!                                                                              |
8!     version 3.p.4.1 created by H. Gallee,               Mon  8-Apr-2013      |
9!           Last Modification by H. Gallee,               Mon 17-Jun-2013      |
10!                                                                              |
11!------------------------------------------------------------------------------+
12!                                                                              |
13!     INPUT                                                                    |
14!     ^^^^^        it_EXP             : Experiment Iteration Counter           |
15!                  dt__CP             : Mass Flux  Scheme:   Time Step         |
16!                  dxHOST             : grid spacing  of  HOST MODEL       [m] |
17!                  qs__CM(kcolp,mzpp) : air  snow  Particl. concentr.  [kg/kg] |
18!                  qr__CM(kcolp,mzp ) : air  rain  drops    concentr.  [kg/kg] |
19!                                                                              |
20!     INPUT/OUTPUT                                                             |
21!     ^^^^^^^^^^^^                                                             |
22!                  qw__CM(kcolp,mzp ) : air  cloud droplets concentr.  [kg/kg] |
23!                  qi__CM(kcolp,mzp ) : air  cloud crystals concentr.  [kg/kg] |
24!                  snowCP(kcolp     ) : Snow (convective)                  [m] |
25!                  snowCM(kcolp     ) : Snow (convective + stratiform)     [m] |
26!                  rainCP(kcolp     ) : Rain (convective)                  [m] |
27!                  rainCM(kcolp     ) : Rain (convective + stratiform)     [m] |
28!                                                                              |
29!     OUTPUT       dpktCP(kcolp,mzp ) : Reduc. Pot.Temperat.Tendency   [K/X/s] |
30!     ^^^^^^       dqv_CP(kcolp,mzp ) : Specific   Humidity Tendency [kg/kg/s] |
31!                  dqw_CP(kcolp,mzp ) : cloud dropl.Concent.Tendency [kg/kg/s] |
32!                  dqi_CP(kcolp,mzp ) : cloud cryst.Concent.Tendency [kg/kg/s] |
33!                                                                              |
34!                  dss_CP(kcolp     ) : Snow (convective)   Tendency     [m/s] |
35!                  drr_CP(kcolp     ) : Rain (convective)   Tendency     [m/s] |
36!                                                                              |
37!                  pkt_DY(kcolp,mzp ) : Reduced  Potential Temperature   [K/X] |
38!                                                                              |
39!                  CAPECP(kcolp     ) : Convective Avail.Potent.Energy         |
40!                                                                              |
41!     REFER. :  MesoNH MASS FLUX CONVECTION Routine                            |
42!     ^^^^^^^^         (Bechtold et al., 2001, QJRMS 127, pp 869-886)          |
43!                                                                              |
44!   # OPTION : #EW  Energy and Water  Conservation                             |
45!   # ^^^^^^^^                                                                 |
46!                                                                              |
47!     MODIF. HGallee: 18-11-2004: Adaptation to CVAmnh.f90.laurent             |
48!     ^^^^^^                      (Argument kensbl of CONVECTION removed)      |
49!                                                                              |
50!------------------------------------------------------------------------------+
51
52      use Mod_Real
53      use Mod_PHY____dat
54      use Mod_PHY____grd
55      use Mod_PHY____kkl
56      use Mod_PHY_CP_ctr
57      use Mod_PHY_CP_dat
58      use Mod_PHY_CP_grd
59      use Mod_PHY_CP_kkl
60      use Mod_PHY_DY_kkl
61
62
63      IMPLICIT NONE
64
65
66
67! Global Variables
68! ================
69
70      integer                                       ::  mzc                    !  Nb of levels
71      integer                                       ::  kcolc                  !  Nb of columns
72
73
74
75
76! Local  Variables
77! ================
78
79      logical                                       ::  ANAtun = .TRUE.        !  Parameterization of anabatic breeze
80      real(kind=real8)                              ::  dANA                   !
81
82      integer                                       ::  i                      !  x-Axis Index
83      integer                                       ::  j                      !  y-Axis Index
84      integer                                       ::  k                      !  Level  Index (from top    to bottom)
85      integer                                       ::  ikl                    !  Column Index
86
87
88
89
90! ALLOCATION
91! ==========
92
93!          ****************
94      call PHY_Atm_CP_ALLOC
95!          ****************
96
97
98
99
100! SET UP CONVECTION Dimension: Verification
101! =========================================
102
103            IF   (mzc   .ne. mzp  )                               THEN
104                write(6,601) mzc  ,mzp
105 601            format('    ?!&~@|@[#@#]=!!!, mzc   =',i4,' .NE.  mzp   =',i4)
106                STOP
107            END IF
108
109            IF   (kcolc .ne. kcolp)                               THEN
110                write(6,602) kcolc,kcolp
111 602            format('    ?!&~@|@[#@#]=!!!, kcolc =',i4,' .NE.  kcolp =',i4)
112                STOP
113            END IF
114
115
116            kfdia0  =   kcolp                                           ! index of the last  column of the vector
117
118
119
120
121! SET UP CONVECTION SWITCHES
122! ==========================
123
124        IF (Lod_CP)                                                 THEN
125            Odeep  = Lod_CP
126        ELSE
127            Odeep  = Odeep0
128            write(6,*) 'Deep    Convection Switch     set to ',Odeep
129        END IF
130        IF (Los_CP)                                                 THEN
131            Oshal  = Los_CP
132        ELSE
133            Oshal  = Oshal0
134            write(6,*) 'Shallow Convection Switch     set to ',Oshal
135        END IF
136
137        IF (dtd_CP.GT.0.)                                           THEN
138            pdtCVx = dtd_CP
139        ELSE
140            pdtCVx = pdtCV0
141            write(6,*) 'd(time) Convection CALL       set to ',pdtCVx
142        END IF
143
144        IF (t_d_CP.GT.0.)                                           THEN
145            PTdcv  = t_d_CP
146        ELSE
147            PTdcv  = PTdcv0
148            write(6,*) 'Deep    Convection Time Scale set to ',PTdcv
149        END IF
150        IF (t_s_CP.GT.0.)                                           THEN
151            PTscv  = t_s_CP
152        ELSE
153            PTscv  = PTscv0
154            write(6,*) 'Shallow Convection Time Scale set to ',PTscv
155        END IF
156
157
158
159
160! Mass Flux Scheme: Set Up Time Stepping
161! ======================================
162
163            pdtCV  =  pdtCVx
164        if (pdtCV .lt.dt__CP)                                     then
165            pdtCV  =  dt__CP
166            jjtCV0 =   1
167        else
168            jjtCV0 =  pdtCV  / dt__CP
169!  ..       jjtCV0 :  Number of  Convective Steps for 1    Update Step
170
171            pdtCV  =  dt__CP * jjtCV0
172!  ..       pdtCV  :  Calibrated Convection                  Time Step
173
174        end if
175            iitCV0 =  0
176
177
178
179
180! Set UP Anabatic Breeze Parameterization
181! =======================================
182
183       IF     ( Lo_ANA )                                            THEN
184          rANA      = 2.0d+0 * vANA / xANA
185!  ..     rANA      : Subgrid Mountain Breeze: Horizontal Divergence
186!                    (Factor 2 included  for 2 horizontal Directions)
187
188
189! Simple Tuning
190! -------------
191
192        IF(ANAtun)                                                  THEN
193         DO ikl = 1,kcolp
194          hANA(ikl) = sh__AP(ikl) * 2.0d+0                              !  2.0 is a tuning parameter
195         END DO
196
197
198! More sophisticated
199! ------------------
200        ELSE
201         DO ikl = 1,kcolp
202          dANA      = sha_AP(ikl)
203          hANA(ikl) = abs(dANA)*max(zer0,dxHOST/xANA-un_1)
204!  ..     hANA: D("Subgrid Mountain" Height - "Resolved Mountain" Height)
205         END DO
206        END IF
207
208       END IF ! Lo_ANA
209
210
211
212
213! Set UP Tendencies
214! =================
215
216       IF (it_EXP.EQ.1)                                             THEN
217        DO ikl = 1,kcolp
218        DO k   = 1,mzp
219          dpktCP(ikl,k) = 0.
220          dqv_CP(ikl,k) = 0.
221          dqw_CP(ikl,k) = 0.
222          dqi_CP(ikl,k) = 0.
223        END DO
224        END DO
225       END IF
226
227
228
229
230      return
231      end subroutine PHY_Atm_CP_INI
Note: See TracBrowser for help on using the repository browser.