source: trunk/LMDZ.MARS/libf/phymars/meso_inc/meso_inc_les.F @ 289

Last change on this file since 289 was 284, checked in by acolaitis, 14 years ago

--- AC 07/09/2011 ---

  • Added new flag for the Richardson-based surface layer :

callrichsl, can be changed in callphys.def

One should always use the thermals model when using this surface layer model.
Somes cases (weakly unstable with low winds), when not using thermals, won't be well represented by the
Richardson surface layer. This stands for Mesoscale and Gcm but not for LES model.

Correct configs :

callrichsl = .true.
calltherm = .true.

callrichsl = .false.
calltherm = .false.

callrichsl = .false.
calltherm = .true.

Previously unstable config :

callrichsl = .true.
calltherm = .false.

  • To be able to run without thermals and with the new surface layer, a modification has been made to

physiq.F to account for gustiness in GCM and MESOSCALE for negative Richardson, so that :

callrichsl = .true.
calltherm = .false.

can now be used without problems, but is not recommended.

  • Consequently, callrichsl = .false. is now the default configuration for thermals.

We recall the available options in callphys.def for thermals :

outptherm = BOOLEAN (.false. by default) : outputs thermals related quantities (lots of diagfi)
nsplit_thermals = INTEGER (50 by default in gcm, 2 in mesoscale) : subtimestep for thermals model.

It is recommended to use at least 40 in the gcm, and at least 2 in the mesoscale.
The user can lower these values but should check it's log for anomalies or errors regarding
tracer transport in the thermals, or "granulosity" in the outputs for wmax, lmax and hfmax.


File size: 2.1 KB
Line 
1         if (callrichsl .eq. .false.) then
2       
3             DO ig=1,ngrid
4!! sensible heat flux in W/m2
5
6             hfx(ig) = zflubid(ig)-capcal(ig)*zdtsdif(ig)
7
8!! u star in similarity theory in m/s
9             ust(ig) = 0.4
10     .               * sqrt( pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) )
11     .               / log( 1.E+0 + zzlay(ig,1)/z0_default )
12             ENDDO
13
14         else
15
16            DO ig=1,ngrid
17
18! New SL parametrization, correct formulation for hfx :
19
20            hfx(ig) = (pplay(ig,1)/(r*pt(ig,1)))*cpp
21     &        *sqrt(pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1)
22     &        + (1.0*wmax_th(ig))**2)
23     &        *zcdh(ig)*(tsurf(ig)-zh(ig,1))
24
25
26! New SL parametrization, ust is more accurately computed in vdif_cd :
27            ust(ig) = sqrt(zcdv(ig)*
28     &   (pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) + (1.0*wmax_th(ig))**2)
29     &                     )
30
31            ENDDO   
32
33         endif  !of if callrichsl
34
35!         write (*,*) 'PHYS HFX cp zdts', hfx(100), zflubid(100),
36!     .       capcal(100),
37!     .       zdtsdif(100)
38!         write (*,*) 'PHYS UST', ust(100)
39
40!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
41!!! LES LES
42       IF (flag_LES) THEN       
43
44         write (*,*) '************************************************'
45         write (*,*) '** LES mode: the difv part is only used to'
46         write (*,*) '**  provide HFX and UST to the dynamics'
47         write (*,*) '** NB: - dudif, dvdif, dhdif, dqdif are set to 0'
48         write (*,*) '**     - tsurf is updated'     
49         write (*,*) '************************************************'
50
51         DO ig=1,ngrid
52          wmax_th(ig)=0.  !! no additional gustiness needed in surface layer (see vdifc.F)
53          DO l=1,nlayer
54            zdvdif(ig,l) = 0.
55            zdudif(ig,l) = 0.
56            zdhdif(ig,l) = 0.
57            DO iq=1, nq
58              zdqdif(ig,l,iq) = 0.
59              zdqsdif(ig,iq) = 0. !! sortir de la boucle
60            ENDDO
61          ENDDO
62         ENDDO
63      ENDIF
64!!! LES LES       
65!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Note: See TracBrowser for help on using the repository browser.