Ignore:
Timestamp:
Mar 12, 2010, 11:54:11 AM (14 years ago)
Author:
Laurent Fairhead
Message:

Improvements concerning wake parametrisation (from JYG, NR, IT, with more to come).
Alp_offset is read in form physiq.def file


Améliorations à la paramétrisation des poches froides (de JYG, NR, IT, d'autres
sont à venir)
Alp_offset est rajouté à la liste des paramètres lus dans physiq.def

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/physiq.F

    r1311 r1322  
    625625      REAL q_undi(klon,klev)               ! humidite moyenne dans la zone non perturbee
    626626c
    627       REAL wake_pe(klon)              ! Wake potential energy - WAPE
     627cjyg
     628ccc      REAL wake_pe(klon)              ! Wake potential energy - WAPE
    628629
    629630      REAL wake_gfl(klon)             ! Gust Front Length
     
    641642      REAL dt_a(klon,klev)
    642643      REAL dq_a(klon,klev)
     644      REAL, SAVE :: alp_offset
     645c$OMP THREADPRIVATE(alp_offset)
     646
    643647c
    644648cRR:fin declarations poches froides
     
    11881192     .     iflag_thermals_ed,iflag_thermals_optflux,
    11891193c     nv flags pour la convection et les poches froides
    1190      .     iflag_coupl,iflag_clos,iflag_wake, read_climoz)
     1194     .     iflag_coupl,iflag_clos,iflag_wake, read_climoz,
     1195     &     alp_offset)
    11911196      call phys_state_var_init(read_climoz)
    11921197      print*, '================================================='
     
    20212026c
    20222027ccalcul de ale_wake et alp_wake
    2023        do i = 1,klon
    2024           if (iflag_wake.eq.1) then
    2025           ale_wake(i) = 0.5*wake_cstar(i)**2
    2026           alp_wake(i) = wake_fip(i)
    2027           else
    2028           ale_wake(i) = 0.
    2029           alp_wake(i) = 0.
    2030           endif
    2031        enddo
     2028       if (iflag_wake.eq.1) then
     2029         if (itap .le. it_wape_prescr) then
     2030          do i = 1,klon
     2031           ale_wake(i) = wape_prescr
     2032           alp_wake(i) = fip_prescr
     2033          enddo
     2034         else
     2035          do i = 1,klon
     2036cjyg  ALE=WAPE au lieu de ALE = 1/2 Cstar**2
     2037ccc           ale_wake(i) = 0.5*wake_cstar(i)**2
     2038           ale_wake(i) = wake_pe(i)
     2039           alp_wake(i) = wake_fip(i)
     2040          enddo
     2041         endif
     2042       else
     2043         do i = 1,klon
     2044           ale_wake(i) = 0.
     2045           alp_wake(i) = 0.
     2046         enddo
     2047       endif
    20322048ccombinaison avec ale et alp de couche limite: constantes si pas de couplage, valeurs calculees
    20332049cdans le thermique sinon
    20342050       if (iflag_coupl.eq.0) then
    2035           if (debut) print*,'ALE et ALP imposes'
     2051          if (debut.and.prt_level.gt.9)
     2052     $                     WRITE(lunout,*)'ALE et ALP imposes'
    20362053          do i = 1,klon
    20372054con ne couple que ale
     
    20462063          do i = 1,klon
    20472064              ALE(i) = max(ale_wake(i),Ale_bl(i))
    2048               ALP(i) = alp_wake(i) + Alp_bl(i)
     2065c avant        ALP(i) = alp_wake(i) + Alp_bl(i)
     2066              ALP(i) = alp_wake(i) + Alp_bl(i) + alp_offset ! modif sb
    20492067c         write(20,*)'ALE',ALE(i),Ale_bl(i),ale_wake(i)
    20502068c         write(21,*)'ALP',ALP(i),Alp_bl(i),alp_wake(i)
     
    22892307
    22902308      endif
     2309c
     2310c===================================================================
     2311cJYG
     2312      IF (ip_ebil_phy.ge.2) THEN
     2313        ztit='after wake'
     2314        CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime
     2315     e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
     2316     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     2317        call diagphy(airephy,ztit,ip_ebil_phy
     2318     e      , zero_v, zero_v, zero_v, zero_v, zero_v
     2319     e      , zero_v, zero_v, zero_v, ztsol
     2320     e      , d_h_vcol, d_qt, d_ec
     2321     s      , fs_bound, fq_bound )
     2322      END IF
     2323
    22912324c      print*,'apres callwake iflag_cldcon=', iflag_cldcon
    22922325c
     
    24022435     e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    24032436     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     2437        call diagphy(airephy,ztit,ip_ebil_phy
     2438     e      , zero_v, zero_v, zero_v, zero_v, zero_v
     2439     e      , zero_v, zero_v, zero_v, ztsol
     2440     e      , d_h_vcol, d_qt, d_ec
     2441     s      , fs_bound, fq_bound )
    24042442      END IF
    24052443
     
    24502488         enddo
    24512489         tau_overturning_th(:)=zmax_th(:)/max(0.5*wmax_th(:),0.1)
    2452          print*,'TAU TH OK ',tau_overturning_th(1),detr_therm(1,3)
     2490         if(prt_level.ge.9)
     2491     &     write(lunout,*)'TAU TH OK ',
     2492     &     tau_overturning_th(1),detr_therm(1,3)
    24532493
    24542494c On impose que l'air autour de la fraction couverte par le thermique
     
    25612601
    25622602!   les ratqs sont une combinaison de ratqss et ratqsc
    2563 !       write(lunout,*)'PHYLMD NOUVEAU TAU_RATQS ',tau_ratqs
     2603       if(prt_level.ge.9)
     2604     $       write(lunout,*)'PHYLMD NOUVEAU TAU_RATQS ',tau_ratqs
    25642605
    25652606         if (tau_ratqs>1.e-10) then
     
    27852826     e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    27862827     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     2828        call diagphy(airephy,ztit,ip_ebil_phy
     2829     e      , zero_v, zero_v, zero_v, zero_v, zero_v
     2830     e      , zero_v, zero_v, zero_v, ztsol
     2831     e      , d_h_vcol, d_qt, d_ec
     2832     s      , fs_bound, fq_bound )
    27872833      END IF
    27882834c
     
    29923038      itaprad = itaprad + 1
    29933039
    2994       if (iflag_radia.eq.0) then
     3040      if (iflag_radia.eq.0 .and. prt_level.ge.9) then
    29953041      print *,'--------------------------------------------------'
    29963042      print *,'>>>> ATTENTION rayonnement desactive pour ce cas'
     
    31953241     e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    31963242     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     3243         call diagphy(airephy,ztit,ip_ebil_phy
     3244     e      , zero_v, zero_v, zero_v, zero_v, zero_v
     3245     e      , zero_v, zero_v, zero_v, ztsol
     3246     e      , d_h_vcol, d_qt, d_ec
     3247     s      , fs_bound, fq_bound )
    31973248      END IF
    31983249c
     
    32623313      IF (offline) THEN
    32633314
    3264          print*,'Attention on met a 0 les thermiques pour phystoke'
    3265          call phystokenc (
     3315       IF (prt_level.ge.9)
     3316     $    print*,'Attention on met a 0 les thermiques pour phystoke'
     3317         call phystokenc (
    32663318     I                   nlon,klev,pdtphys,rlon,rlat,
    32673319     I                   t,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
Note: See TracChangeset for help on using the changeset viewer.