Changeset 4519 for LMDZ6/trunk


Ignore:
Timestamp:
Apr 24, 2023, 6:11:11 PM (19 months ago)
Author:
evignon
Message:

modif for polar runs: control of the maximum latitude at which the polar filter is active (new key in .def files)
+ dependency of ratqs upon resolution (cell area)

Location:
LMDZ6/trunk/libf
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3d/conf_gcm.F90

    r4470 r4519  
    1515  USE comconst_mod, ONLY: dissip_deltaz, dissip_factz, dissip_zref, &
    1616                          iflag_top_bound, mode_top_bound, tau_top_bound, &
    17                           ngroup
     17                          ngroup, maxlatfilter
    1818  USE logic_mod, ONLY: fxyhypb, iflag_phys, ok_etat0, ok_gradsfile, &
    1919                       ok_guide, ok_limit, ok_strato, purmats, read_start, &
     
    310310  CALL getin('dissip_deltaz',dissip_deltaz )
    311311  CALL getin('dissip_zref',dissip_zref )
     312
     313  ! maxlatfilter
     314  maxlatfilter=-1.0
     315  CALL getin('maxlatfilter',maxlatfilter)
     316  if (maxlatfilter > 90) &
     317       call abort_gcm("conf_gcm", 'maxlatfilter should be <=90', 1)
     318
    312319
    313320  ! ngroup
  • LMDZ6/trunk/libf/dyn3d_common/comconst_mod.F90

    r2597 r4519  
    2626      INTEGER iflag_top_bound ! sponge type
    2727      INTEGER ngroup ! parameter to group points (along longitude) near poles
     28      REAL maxlatfilter ! maximum latitude (in degrees) above which filter is active
    2829      INTEGER mode_top_bound  ! sponge mode
    2930      REAL tau_top_bound ! inverse of sponge characteristic time scale (Hz)
  • LMDZ6/trunk/libf/dyn3dmem/conf_gcm.F90

    r4469 r4519  
    1919  USE comconst_mod, ONLY: dissip_deltaz, dissip_factz, dissip_zref, &
    2020                          iflag_top_bound, mode_top_bound, tau_top_bound, &
    21                           ngroup
     21                          ngroup, maxlatfilter
    2222  USE logic_mod, ONLY: fxyhypb, iflag_phys, ok_etat0, ok_gradsfile, &
    2323                       ok_guide, ok_limit, ok_strato, purmats, read_start, &
     
    340340  CALL getin('dissip_deltaz',dissip_deltaz )
    341341  CALL getin('dissip_zref',dissip_zref )
     342
     343
     344  !maxlatfilter
     345  maxlatfilter = -1.0
     346  CALL getin('maxlatfilter',maxlatfilter)
     347  if (maxlatfilter > 90) &
     348       call abort_gcm("conf_gcm", 'maxlatfilter should be <=90', 1)
     349 
    342350
    343351  ! ngroup
  • LMDZ6/trunk/libf/filtrez/filtreg_mod.F90

    r4440 r4519  
    1616  USE serre_mod, ONLY: alphax
    1717  USE logic_mod, ONLY: fxyhypb, ysinus
     18  USE comconst_mod, ONLY: maxlatfilter
     19
    1820    !    ... H. Upadhyaya, O.Sharma   ...
    1921    !
     
    125127    ! as length dx becomes of the same size as dy
    126128    !
     129    ! if maxlatfilter >0, prescribe the colat0 value from the .def files
     130   
     131    IF (maxlatfilter .LT. 0.) THEN
     132
    127133    colat0  =  MIN( 0.5, dymin/dxmin )
    128134    ! colat0  =  1.
     
    133139       alphax = 0.
    134140    ENDIF
     141
     142    ELSE
     143
     144    colat0=(90.0-maxlatfilter)/180.0*pi       
     145
     146    ENDIF
     147   
     148   
     149   
    135150    !
    136151    PRINT 50, colat0,alphax
  • LMDZ6/trunk/libf/phylmd/calcratqs.F90

    r4009 r4519  
    77           qtc_cv, sigt_cv, zqsat,             &
    88           tke,tke_dissip,lmix,wprime, &
    9            t2m,q2m,fm_therm, &
     9           t2m,q2m,fm_therm,cell_area,&
    1010           ratqs,ratqsc,ratqs_inter)
    1111
     
    3737real, dimension(klon,klev),intent(in) :: wake_deltaq,wake_s
    3838real, dimension(klon,nbsrf),intent(in) :: t2m,q2m
     39real, dimension(klon), intent(in) :: cell_area
    3940! Output
    4041real, dimension(klon,klev),intent(inout) :: ratqs,ratqsc,ratqs_inter
     
    4748real facteur,zfratqs1,zfratqs2
    4849real, dimension(klon,klev) :: ratqs_hetero,ratqs_oro,ratqs_tke
    49 
     50real resol,resolmax,fact
    5051
    5152!-------------------------------------------------------------------------
     
    142143           *( tanh( (ratqsp0-pplay(:,k))/ratqsdp) + 1.)
    143144         enddo
     145
     146
     147      else if (iflag_ratqs==5) then
     148! Dependency of ratqs on model resolution
     149! Audran, Meryl, Lea, Gwendal and Etienne
     150! April 2023
     151        resolmax=sqrt(maxval(cell_area))
     152         do k=1,klev
     153            do i=1,klon
     154              resol=sqrt(cell_area(i))
     155              fact=sqrt(resol/resolmax)
     156              ratqss(i,k)=ratqsbas*fact+0.5*(ratqshaut-ratqsbas)*fact &
     157              *( tanh( (ratqsp0-pplay(i,k))/ratqsdp) + 1.)
     158           enddo
     159         enddo
     160
    144161
    145162       else if (iflag_ratqs .GT. 9) then
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r4516 r4519  
    36243624         ptconv,ptconvth,clwcon0th, rnebcon0th,     &
    36253625         paprs,pplay,t_seri,q_seri, qtc_cv, sigt_cv, zqsat, &
    3626          pbl_tke(:,:,is_ave),tke_dissip_ave,l_mix_ave,wprime_ave,t2m,q2m,fm_therm, &
     3626         pbl_tke(:,:,is_ave),tke_dissip_ave,l_mix_ave,wprime_ave,t2m,q2m,fm_therm,cell_area, &
    36273627         ratqs,ratqsc,ratqs_inter)
    36283628
Note: See TracChangeset for help on using the changeset viewer.