source: LMDZ6/trunk/libf/phylmd/lmdz_lscp_ini.F90 @ 4881

Last change on this file since 4881 was 4869, checked in by evignon, 16 months ago

identification d'un bug dans l'ajustement de la temperature
lors de la fonte dans lscp
Ajout d'un flag pour maintenir/enlever le probleme

File size: 18.1 KB
Line 
1MODULE lmdz_lscp_ini
2
3IMPLICIT NONE
4
5  ! PARAMETERS for lscp:
6  !--------------------
7 
8  REAL RCPD, RLSTT, RLVTT, RLMLT, RVTMP2, RTT, RD, RG, RPI
9  !$OMP THREADPRIVATE(RCPD, RLSTT, RLVTT, RLMLT, RVTMP2, RTT, RD, RG, RPI)
10 
11  LOGICAL, SAVE, PROTECTED :: ok_bug_fonte_lscp=.true. ! maintains bug on temperature adjustment associated with snow melting
12  !$OMP THREADPRIVATE(ok_bug_fonte_lscp)
13
14  REAL, SAVE, PROTECTED :: seuil_neb=0.001      ! cloud fraction threshold: a cloud really exists when exceeded
15  !$OMP THREADPRIVATE(seuil_neb)
16
17  INTEGER, SAVE :: lunout, prt_level            ! Logical unit number and level for standard output
18  !$OMP THREADPRIVATE(lunout,prt_level)
19
20  INTEGER, SAVE, PROTECTED :: niter_lscp=5      ! number of iterations to calculate autoconversion to precipitation
21  !$OMP THREADPRIVATE(niter_lscp)
22
23  INTEGER, SAVE, PROTECTED :: iflag_evap_prec=1 ! precipitation evaporation flag. 0: nothing, 1: "old way",
24                                                ! 2: Max cloud fraction above to calculate the max of reevaporation
25                                                ! >=4: LTP'method i.e. evaporation in the clear-sky fraction of the mesh only
26                                                ! pay attention that iflag_evap_prec=4 may lead to unrealistic and overestimated
27                                                ! evaporation. Use 5 instead
28  !$OMP THREADPRIVATE(iflag_evap_prec)
29
30  REAL, SAVE, PROTECTED :: t_coup=234.0         ! temperature threshold which determines the phase
31                                                ! for which the saturation vapor pressure is calculated
32  !$OMP THREADPRIVATE(t_coup)
33  REAL, SAVE, PROTECTED :: DDT0=0.01            ! iteration parameter
34  !$OMP THREADPRIVATE(DDT0)
35
36  REAL, SAVE, PROTECTED :: ztfondue=278.15      ! parameter to calculate melting fraction of precipitation
37  !$OMP THREADPRIVATE(ztfondue)
38
39  REAL, SAVE, PROTECTED :: temp_nowater=233.15  ! temperature below which liquid water no longer exists
40  !$OMP THREADPRIVATE(temp_nowater)
41
42  REAL, SAVE, PROTECTED :: a_tr_sca(4)          ! Variables for tracers temporary: alpha parameter for scavenging, 4 possible scavenging processes
43  !$OMP THREADPRIVATE(a_tr_sca)
44 
45  INTEGER, SAVE, PROTECTED ::  iflag_mpc_bl=0   ! flag to activate boundary layer mixed phase cloud param
46  !$OMP THREADPRIVATE(iflag_mpc_bl)
47 
48  LOGICAL, SAVE, PROTECTED :: ok_radocond_snow=.false. ! take into account the mass of ice precip in the cloud ice content seen by radiation
49  !$OMP THREADPRIVATE(ok_radocond_snow)
50
51  REAL, SAVE, PROTECTED :: t_glace_min=258.0    ! lower-bound temperature parameter for cloud phase determination
52  !$OMP THREADPRIVATE(t_glace_min)
53
54  REAL, SAVE, PROTECTED :: t_glace_max=273.15   ! upper-bound temperature parameter for cloud phase determination
55  !$OMP THREADPRIVATE(t_glace_max)
56
57  REAL, SAVE, PROTECTED :: exposant_glace=1.0   ! parameter for cloud phase determination
58  !$OMP THREADPRIVATE(exposant_glace)
59
60  INTEGER, SAVE, PROTECTED :: iflag_vice=0      ! which expression for ice crystall fall velocity
61  !$OMP THREADPRIVATE(iflag_vice)
62
63  INTEGER, SAVE, PROTECTED :: iflag_t_glace=0   ! which expression for cloud phase partitioning
64  !$OMP THREADPRIVATE(iflag_t_glace)
65
66  INTEGER, SAVE, PROTECTED :: iflag_cloudth_vert=0         ! option for determining cloud fraction and content in convective boundary layers
67  !$OMP THREADPRIVATE(iflag_cloudth_vert)
68
69  INTEGER, SAVE, PROTECTED :: iflag_gammasat=0             ! which threshold for homogeneous nucleation below -40oC
70  !$OMP THREADPRIVATE(iflag_gammasat)
71
72  INTEGER, SAVE, PROTECTED :: iflag_rain_incloud_vol=0     ! use of volume cloud fraction for rain autoconversion
73  !$OMP THREADPRIVATE(iflag_rain_incloud_vol)
74
75  INTEGER, SAVE, PROTECTED :: iflag_bergeron=0             ! bergeron effect for liquid precipitation treatment 
76  !$OMP THREADPRIVATE(iflag_bergeron)
77
78  INTEGER, SAVE, PROTECTED :: iflag_fisrtilp_qsat=0        ! qsat adjustment (iterative) during autoconversion
79  !$OMP THREADPRIVATE(iflag_fisrtilp_qsat)
80
81  INTEGER, SAVE, PROTECTED :: iflag_pdf=0                  ! type of subgrid scale qtot pdf
82  !$OMP THREADPRIVATE(iflag_pdf)
83
84  INTEGER, SAVE, PROTECTED :: iflag_autoconversion=0       ! autoconversion option
85  !$OMP THREADPRIVATE(iflag_autoconversion)
86
87  LOGICAL, SAVE, PROTECTED :: reevap_ice=.false.           ! no liquid precip for T< threshold
88  !$OMP THREADPRIVATE(reevap_ice)
89
90  REAL, SAVE, PROTECTED :: cld_lc_lsc=2.6e-4               ! liquid autoconversion coefficient, stratiform rain
91  !$OMP THREADPRIVATE(cld_lc_lsc)
92
93  REAL, SAVE, PROTECTED :: cld_lc_con=2.6e-4                ! liquid autoconversion coefficient, convective rain
94  !$OMP THREADPRIVATE(cld_lc_con)
95
96  REAL, SAVE, PROTECTED :: cld_tau_lsc=3600.                ! liquid autoconversion timescale, stratiform rain
97  !$OMP THREADPRIVATE(cld_tau_lsc)
98
99  REAL, SAVE, PROTECTED :: cld_tau_con=3600.                ! liquid autoconversion timescale, convective rain
100  !$OMP THREADPRIVATE(cld_tau_con)
101
102  REAL, SAVE, PROTECTED :: cld_expo_lsc=2.                  ! liquid autoconversion threshold exponent, stratiform rain
103  !$OMP THREADPRIVATE(cld_expo_lsc)
104
105  REAL, SAVE, PROTECTED :: cld_expo_con=2.                  ! liquid autoconversion threshold exponent, convective rain
106  !$OMP THREADPRIVATE(cld_expo_con)
107
108  REAL, SAVE, PROTECTED :: ffallv_lsc=1.                    ! tuning coefficient crystal fall velocity, stratiform
109  !$OMP THREADPRIVATE(ffallv_lsc)
110
111  REAL, SAVE, PROTECTED :: ffallv_con=1.                    ! tuning coefficient crystal fall velocity, convective
112  !$OMP THREADPRIVATE(ffallv_con)
113
114  REAL, SAVE, PROTECTED :: coef_eva=2e-5                    ! tuning coefficient liquid precip evaporation
115  !$OMP THREADPRIVATE(coef_eva)
116
117  REAL, SAVE, PROTECTED :: coef_sub                        ! tuning coefficient ice precip sublimation
118  !$OMP THREADPRIVATE(coef_sub)
119
120  REAL, SAVE, PROTECTED :: expo_eva=0.5                     ! tuning coefficient liquid precip evaporation
121  !$OMP THREADPRIVATE(expo_eva)
122
123  REAL, SAVE, PROTECTED :: expo_sub                       ! tuning coefficient ice precip sublimation
124  !$OMP THREADPRIVATE(expo_sub)
125
126  REAL, SAVE, PROTECTED :: cice_velo=1.645                  ! factor in the ice fall velocity formulation
127  !$OMP THREADPRIVATE(cice_velo)
128
129  REAL, SAVE, PROTECTED ::  dice_velo=0.16                  ! exponent in the ice fall velocity formulation
130  !$OMP THREADPRIVATE(dice_velo)
131
132  REAL, SAVE, PROTECTED :: dist_liq=300.                    ! typical deph of cloud-top liquid layer in mpcs
133  !$OMP THREADPRIVATE(dist_liq)
134
135  REAL, SAVE, PROTECTED    :: tresh_cl=0.0                  ! cloud fraction threshold for cloud top search
136  !$OMP THREADPRIVATE(tresh_cl)
137
138  !--Parameters for poprecip
139  LOGICAL, SAVE, PROTECTED :: ok_poprecip=.FALSE.           ! use the processes-oriented formulation of precipitations
140  !$OMP THREADPRIVATE(ok_poprecip)
141
142  REAL, SAVE, PROTECTED :: cld_lc_lsc_snow               ! snow autoconversion coefficient, stratiform rain
143  !$OMP THREADPRIVATE(cld_lc_lsc_snow)
144
145  REAL, SAVE, PROTECTED :: cld_lc_con_snow                ! snow autoconversion coefficient, convective rain
146  !$OMP THREADPRIVATE(cld_lc_con_snow)
147
148  REAL, SAVE, PROTECTED :: rain_int_min=0.001               ! Minimum local rain intensity [mm/s] before the decrease in associated precipitation fraction
149  !$OMP THREADPRIVATE(rain_int_min)
150
151  REAL, SAVE, PROTECTED :: thresh_precip_frac=1.E-6         ! precipitation fraction threshold TODO [-]
152  !$OMP THREADPRIVATE(thresh_precip_frac)
153
154  REAL, SAVE, PROTECTED :: gamma_col=1.                     ! A COMMENTER TODO [-]
155  !$OMP THREADPRIVATE(gamma_col)
156
157  REAL, SAVE, PROTECTED :: gamma_agg=1.                     ! A COMMENTER TODO [-]
158  !$OMP THREADPRIVATE(gamma_agg)
159
160  REAL, SAVE, PROTECTED :: gamma_rim=1.                     ! A COMMENTER TODO [-]
161  !$OMP THREADPRIVATE(gamma_rim)
162
163  REAL, SAVE, PROTECTED :: rho_rain=1000.                    ! A COMMENTER TODO [kg/m3]
164  !$OMP THREADPRIVATE(rho_rain)
165
166  REAL, SAVE, PROTECTED :: rho_ice=920.                    ! A COMMENTER TODO [kg/m3]
167  !$OMP THREADPRIVATE(rho_ice)
168
169  REAL, SAVE, PROTECTED :: rho_snow                        ! A COMMENTER TODO [kg/m3]
170  !$OMP THREADPRIVATE(rho_snow)
171
172  REAL, SAVE, PROTECTED :: r_rain=500.E-6                   ! A COMMENTER TODO [m]
173  !$OMP THREADPRIVATE(r_rain)
174
175  REAL, SAVE, PROTECTED :: r_snow=1.E-3                    ! A COMMENTER TODO [m]
176  !$OMP THREADPRIVATE(r_snow)
177
178  REAL, SAVE, PROTECTED :: r_ice=50.E-6                    ! A COMMENTER TODO [m]
179  !$OMP THREADPRIVATE(r_ice)
180
181  REAL, SAVE, PROTECTED :: tau_auto_snow_min=100.          ! A COMMENTER TODO [s]
182  !$OMP THREADPRIVATE(tau_auto_snow_min)
183
184  REAL, SAVE, PROTECTED :: tau_auto_snow_max=1000.          ! A COMMENTER TODO [s]
185  !$OMP THREADPRIVATE(tau_auto_snow_max)
186
187  REAL, SAVE, PROTECTED :: eps=1.E-10                       ! A COMMENTER TODO [-]
188  !$OMP THREADPRIVATE(eps)
189
190  REAL, SAVE, PROTECTED :: air_thermal_conduct=2.4e-2      ! A COMMENTER TODO [-]
191  !$OMP THREADPRIVATE(air_thermal_conduct)
192
193  REAL, SAVE, PROTECTED :: coef_ventil=1.                   ! A COMMENTER TODO [-]
194  !$OMP THREADPRIVATE(coef_ventil)
195
196  REAL, SAVE, PROTECTED :: alpha_freez=4.                 ! A COMMENTER TODO [-]
197  !$OMP THREADPRIVATE(alpha_freez)
198
199  REAL, SAVE, PROTECTED :: beta_freez=0.1                 ! A COMMENTER TODO [m-3.s-1]
200  !$OMP THREADPRIVATE(beta_freez)
201
202  REAL, SAVE, PROTECTED :: gamma_freez=1.                 ! A COMMENTER TODO [-]
203  !$OMP THREADPRIVATE(gamma_freez)
204
205  REAL, SAVE, PROTECTED :: rain_fallspeed=4.              ! A COMMENTER TODO [m/s]
206  !$OMP THREADPRIVATE(rain_fallspeed)
207
208  REAL, SAVE, PROTECTED :: rain_fallspeed_clr              ! A COMMENTER TODO [m/s]
209  !$OMP THREADPRIVATE(rain_fallspeed_clr)
210
211  REAL, SAVE, PROTECTED :: rain_fallspeed_cld             ! A COMMENTER TODO [m/s]
212  !$OMP THREADPRIVATE(rain_fallspeed_cld)
213
214  REAL, SAVE, PROTECTED :: snow_fallspeed=1.             ! A COMMENTER TODO [m/s]
215  !$OMP THREADPRIVATE(snow_fallspeed)
216
217  REAL, SAVE, PROTECTED :: snow_fallspeed_clr             ! A COMMENTER TODO [m/s]
218  !$OMP THREADPRIVATE(snow_fallspeed_clr)
219
220  REAL, SAVE, PROTECTED :: snow_fallspeed_cld             ! A COMMENTER TODO [m/s]
221  !$OMP THREADPRIVATE(snow_fallspeed_cld)
222  !--End of the parameters for poprecip
223
224! Two parameters used for lmdz_lscp_old only
225  INTEGER, SAVE, PROTECTED :: iflag_oldbug_fisrtilp=0, fl_cor_ebil
226  !$OMP THREADPRIVATE(iflag_oldbug_fisrtilp,fl_cor_ebil)
227
228CONTAINS
229
230SUBROUTINE lscp_ini(dtime,lunout_in,prt_level_in,ok_ice_sursat, iflag_ratqs, fl_cor_ebil_in, RCPD_in, RLSTT_in, RLVTT_in, RLMLT_in, &
231                    RVTMP2_in, RTT_in,RD_in,RG_in,RPI_in)
232
233
234   USE ioipsl_getin_p_mod, ONLY : getin_p
235   USE ice_sursat_mod, ONLY: ice_sursat_init
236   USE lmdz_cloudth_ini, ONLY : cloudth_ini
237
238   REAL, INTENT(IN)      :: dtime
239   INTEGER, INTENT(IN)   :: lunout_in,prt_level_in,iflag_ratqs,fl_cor_ebil_in
240   LOGICAL, INTENT(IN)   :: ok_ice_sursat
241
242   REAL, INTENT(IN)      :: RCPD_in, RLSTT_in, RLVTT_in, RLMLT_in
243   REAL, INTENT(IN)      ::  RVTMP2_in, RTT_in, RD_in, RG_in, RPI_in
244   character (len=20) :: modname='lscp_ini_mod'
245   character (len=80) :: abort_message
246
247
248    lunout=lunout_in
249    prt_level=prt_level_in
250    fl_cor_ebil=fl_cor_ebil_in
251
252    RG=RG_in
253    RD=RD_in
254    RCPD=RCPD_in
255    RLVTT=RLVTT_in
256    RLSTT=RLSTT_in
257    RLMLT=RLMLT_in
258    RTT=RTT_in
259    RG=RG_in
260    RVTMP2=RVTMP2_in
261    RPI=RPI_in
262
263
264
265    CALL getin_p('niter_lscp',niter_lscp)
266    CALL getin_p('iflag_evap_prec',iflag_evap_prec)
267    CALL getin_p('seuil_neb',seuil_neb)
268    CALL getin_p('iflag_mpc_bl',iflag_mpc_bl)
269    CALL getin_p('ok_radocond_snow',ok_radocond_snow)
270    CALL getin_p('t_glace_max',t_glace_max)
271    CALL getin_p('t_glace_min',t_glace_min)
272    CALL getin_p('exposant_glace',exposant_glace)
273    CALL getin_p('iflag_vice',iflag_vice)
274    CALL getin_p('iflag_t_glace',iflag_t_glace)
275    CALL getin_p('iflag_cloudth_vert',iflag_cloudth_vert)
276    CALL getin_p('iflag_gammasat',iflag_gammasat)
277    CALL getin_p('iflag_rain_incloud_vol',iflag_rain_incloud_vol)
278    CALL getin_p('iflag_bergeron',iflag_bergeron)
279    CALL getin_p('iflag_fisrtilp_qsat',iflag_fisrtilp_qsat)
280    CALL getin_p('iflag_pdf',iflag_pdf)
281    CALL getin_p('reevap_ice',reevap_ice)
282    CALL getin_p('cld_lc_lsc',cld_lc_lsc)
283    CALL getin_p('cld_lc_con',cld_lc_con)
284    cld_lc_lsc_snow=cld_lc_lsc
285    cld_lc_con_snow=cld_lc_con
286    CALL getin_p('cld_lc_lsc_snow',cld_lc_lsc_snow)
287    CALL getin_p('cld_lc_con_snow',cld_lc_con_snow)
288    CALL getin_p('cld_tau_lsc',cld_tau_lsc)
289    CALL getin_p('cld_tau_con',cld_tau_con)
290    CALL getin_p('cld_expo_lsc',cld_expo_lsc)
291    CALL getin_p('cld_expo_con',cld_expo_con)
292    CALL getin_p('ffallv_lsc',ffallv_lsc)
293    CALL getin_p('ffallv_lsc',ffallv_con)
294    CALL getin_p('coef_eva',coef_eva)
295    coef_sub=coef_eva
296    CALL getin_p('coef_eva_i',coef_sub)
297    CALL getin_p('coef_sub',coef_sub)
298    CALL getin_p('expo_eva',expo_eva)
299    expo_sub=expo_eva
300    CALL getin_p('expo_sub',expo_sub)
301    CALL getin_p('iflag_autoconversion',iflag_autoconversion)
302    CALL getin_p('dist_liq',dist_liq)
303    CALL getin_p('tresh_cl',tresh_cl)
304    CALL getin_p('iflag_oldbug_fisrtilp',iflag_oldbug_fisrtilp)
305    CALL getin_p('ok_poprecip',ok_poprecip)
306    CALL getin_p('rain_int_min',rain_int_min)
307    CALL getin_p('gamma_agg',gamma_agg)
308    CALL getin_p('gamma_col',gamma_col)
309    CALL getin_p('gamma_rim',gamma_rim)
310    CALL getin_p('gamma_freez',gamma_freez)
311    CALL getin_p('r_snow',r_snow)
312    CALL getin_p('rain_fallspeed',rain_fallspeed)
313    rain_fallspeed_clr=rain_fallspeed
314    rain_fallspeed_cld=rain_fallspeed
315    CALL getin_p('rain_fallspeed_clr',rain_fallspeed_clr)
316    CALL getin_p('rain_fallspeed_cld',rain_fallspeed_cld)
317    CALL getin_p('snow_fallspeed',snow_fallspeed)
318    snow_fallspeed_clr=snow_fallspeed
319    snow_fallspeed_cld=snow_fallspeed
320    CALL getin_p('snow_fallspeed_clr',snow_fallspeed_clr)
321    CALL getin_p('snow_fallspeed_cld',snow_fallspeed_cld)
322    CALL getin_p('ok_bug_fonte_lscp',ok_bug_fonte_lscp)
323
324
325
326    WRITE(lunout,*) 'lscp_ini, niter_lscp:', niter_lscp
327    WRITE(lunout,*) 'lscp_ini, iflag_evap_prec:', iflag_evap_prec
328    WRITE(lunout,*) 'lscp_ini, seuil_neb:', seuil_neb
329    WRITE(lunout,*) 'lscp_ini, iflag_mpc_bl:', iflag_mpc_bl
330    WRITE(lunout,*) 'lscp_ini, ok_radocond_snow:', ok_radocond_snow
331    WRITE(lunout,*) 'lscp_ini, t_glace_max:', t_glace_max
332    WRITE(lunout,*) 'lscp_ini, t_glace_min:', t_glace_min
333    WRITE(lunout,*) 'lscp_ini, exposant_glace:', exposant_glace
334    WRITE(lunout,*) 'lscp_ini, iflag_vice:', iflag_vice
335    WRITE(lunout,*) 'lscp_ini, iflag_t_glace:', iflag_t_glace
336    WRITE(lunout,*) 'lscp_ini, iflag_cloudth_vert:', iflag_cloudth_vert
337    WRITE(lunout,*) 'lscp_ini, iflag_gammasat:', iflag_gammasat
338    WRITE(lunout,*) 'lscp_ini, iflag_rain_incloud_vol:', iflag_rain_incloud_vol
339    WRITE(lunout,*) 'lscp_ini, iflag_bergeron:', iflag_bergeron
340    WRITE(lunout,*) 'lscp_ini, iflag_fisrtilp_qsat:', iflag_fisrtilp_qsat
341    WRITE(lunout,*) 'lscp_ini, iflag_pdf', iflag_pdf
342    WRITE(lunout,*) 'lscp_ini, reevap_ice', reevap_ice
343    WRITE(lunout,*) 'lscp_ini, cld_lc_lsc', cld_lc_lsc
344    WRITE(lunout,*) 'lscp_ini, cld_lc_con', cld_lc_con
345    WRITE(lunout,*) 'lscp_ini, cld_lc_lsc_snow', cld_lc_lsc_snow
346    WRITE(lunout,*) 'lscp_ini, cld_lc_con_snow', cld_lc_con_snow
347    WRITE(lunout,*) 'lscp_ini, cld_tau_lsc', cld_tau_lsc
348    WRITE(lunout,*) 'lscp_ini, cld_tau_con', cld_tau_con
349    WRITE(lunout,*) 'lscp_ini, cld_expo_lsc', cld_expo_lsc
350    WRITE(lunout,*) 'lscp_ini, cld_expo_con', cld_expo_con
351    WRITE(lunout,*) 'lscp_ini, ffallv_lsc', ffallv_lsc
352    WRITE(lunout,*) 'lscp_ini, ffallv_con', ffallv_con
353    WRITE(lunout,*) 'lscp_ini, coef_eva', coef_eva
354    WRITE(lunout,*) 'lscp_ini, coef_sub', coef_sub
355    WRITE(lunout,*) 'lscp_ini, expo_eva', expo_eva
356    WRITE(lunout,*) 'lscp_ini, expo_sub', expo_sub
357    WRITE(lunout,*) 'lscp_ini, iflag_autoconversion', iflag_autoconversion
358    WRITE(lunout,*) 'lscp_ini, dist_liq', dist_liq
359    WRITE(lunout,*) 'lscp_ini, tresh_cl', tresh_cl
360    WRITE(lunout,*) 'lscp_ini, iflag_oldbug_fisrtilp', iflag_oldbug_fisrtilp
361    WRITE(lunout,*) 'lscp_ini, fl_cor_ebil', fl_cor_ebil
362    WRITE(lunout,*) 'lscp_ini, ok_poprecip', ok_poprecip
363    WRITE(lunout,*) 'lscp_ini, rain_int_min:', rain_int_min
364    WRITE(lunout,*) 'lscp_ini, gamma_agg:', gamma_agg
365    WRITE(lunout,*) 'lscp_ini, gamma_col:', gamma_col
366    WRITE(lunout,*) 'lscp_ini, gamma_rim:', gamma_rim
367    WRITE(lunout,*) 'lscp_ini, gamma_freez:', gamma_freez
368    WRITE(lunout,*) 'lscp_ini, r_snow:', r_snow
369    WRITE(lunout,*) 'lscp_ini, rain_fallspeed_clr:', rain_fallspeed_clr
370    WRITE(lunout,*) 'lscp_ini, rain_fallspeed_cld:', rain_fallspeed_cld
371    WRITE(lunout,*) 'lscp_ini, snow_fallspeed_clr:', snow_fallspeed_clr
372    WRITE(lunout,*) 'lscp_ini, snow_fallspeed_cld:', snow_fallspeed_cld
373    WRITE(lunout,*) 'lscp_ini, ok_bug_fonte_lscp:', ok_bug_fonte_lscp
374
375
376
377
378
379    ! check for precipitation sub-time steps
380    IF (ABS(dtime/REAL(niter_lscp)-360.0).GT.0.001) THEN
381        WRITE(lunout,*) 'lscp: it is not expected, see Z.X.Li', dtime
382        WRITE(lunout,*) 'I would prefer a 6 min sub-timestep'
383    ENDIF
384
385    ! check consistency between numerical resolution of autoconversion
386    ! and other options
387   
388    IF (iflag_autoconversion .EQ. 2) THEN
389        IF ((iflag_vice .NE. 0) .OR. (niter_lscp .GT. 1)) THEN
390           abort_message = 'in lscp, iflag_autoconversion=2 requires iflag_vice=0 and niter_lscp=1'
391           CALL abort_physic (modname,abort_message,1)
392        ENDIF
393    ENDIF
394
395
396    ! check consistency between the use of the processes-oriented precipitation formulations
397    ! and other options
398   
399    IF (ok_poprecip) THEN
400        IF ((iflag_evap_prec .LT. 4) .OR. (niter_lscp .GT. 1)) THEN
401           abort_message = 'in lscp, ok_poprecip=y requires iflag_evap_prec >= 4 and niter_lscp=1'
402           CALL abort_physic (modname,abort_message,1)
403        ENDIF
404    ENDIF
405
406    !--Initialisations of constants depending on other constants
407    !--rho_snow formula from r_snow (Brandes et al. 2007 - JAMC)
408    rho_snow = 1.e3 * 0.178 * (r_snow * 2. * 1000.)**(-0.922)
409
410
411    !AA Temporary initialisation
412    a_tr_sca(1) = -0.5
413    a_tr_sca(2) = -0.5
414    a_tr_sca(3) = -0.5
415    a_tr_sca(4) = -0.5
416   
417    IF (ok_ice_sursat) CALL ice_sursat_init()
418
419    CALL cloudth_ini(iflag_cloudth_vert,iflag_ratqs)
420
421RETURN
422
423END SUBROUTINE lscp_ini
424
425END MODULE lmdz_lscp_ini
Note: See TracBrowser for help on using the repository browser.