Changeset 2105 for LMDZ5/trunk/libf


Ignore:
Timestamp:
Aug 7, 2014, 9:14:27 AM (10 years ago)
Author:
fhourdin
Message:

Modification des options pour inclure un aspect grande échelle
dans le calcul de Alp et pour tenir compte des précpitatios
sratiformes pour alimenter les poches froides.
Contrôlés respectivement par les flags alp_ofet=X, avec X<0.
(la valeur par défaut est 0) et iflag_wake=3.

Pour le calcul de Alp :
! Ajout d'une composante 3 * A * w w'2 a w'3 avec w=www : w max sous pbase
! ou A est la fraction couverte par les ascendances w'
! on utilise le fait que A * w'3 = ALP
! et donc A * w'2 ~ ALP / sqrt(ALE) (on ajoute 0.1 pour les
! singularites)

Modified options to account for large scale velocity in ALP
and for feeding of wakes by large scale rainfall.
Controled respectively by alp_offset=X, with X<0. (default being 0) and iflag_wake=3.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/physiq.F90

    r2100 r2105  
    388388  REAL dt_a(klon,klev)
    389389  REAL dq_a(klon,klev)
     390  REAL, dimension(klon) :: www
    390391  REAL, SAVE :: alp_offset
    391392  !$OMP THREADPRIVATE(alp_offset)
     
    20102011        ! proportionnel ??a w si <0
    20112012        ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2013! Estimation d'une vitesse verticale effective pour ALP
     2014        www(1:klon)=0.
     2015        do k=2,klev-1
     2016           do i=1,klon
     2017              www(i)=max(www(i),-omega(i,k)*RD*t_seri(i,k)/(RG*paprs(i,k)) &
     2018&                    *zw2(i,k)*zw2(i,k))
     2019!             if (paprs(i,k)>pbase(i)) then
     2020! calcul approche de la vitesse verticale en m/s
     2021!                www(i)=max(www(i),-omega(i,k)*RD*temp(i,k)/(RG*paprs(i,k))
     2022!             endif
     2023!   Le 0.1 est en gros H / ps = 1e5 / 1e4
     2024           enddo
     2025        enddo
     2026        do i=1,klon
     2027           if (www(i)>0. .and. ale_bl(i)>0. ) www(i)=www(i)/ale_bl(i)
     2028        enddo
     2029
     2030
    20122031        do i = 1,klon
    20132032           ALE(i) = max(ale_wake(i),Ale_bl(i))
     
    20202039              ALP(i) = alp_wake(i) + Alp_bl(i) + alp_offset ! modif sb
    20212040           else
    2022               ALP(i)=alp_wake(i)+Alp_bl(i)+alp_offset*min(omega(i,6),0.)
    2023               if (alp(i)<0.) then
    2024                  print*,'ALP ',alp(i),alp_wake(i) &
    2025                       ,Alp_bl(i),alp_offset*min(omega(i,6),0.)
    2026               endif
     2041
     2042!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2043!                                _                  _
     2044! Ajout d'une composante 3 * A * w w'2 a  w'3  avec w=www : w max sous pbase
     2045!       ou A est la fraction couverte par les ascendances w'
     2046!       on utilise le fait que A * w'3 = ALP
     2047!       et donc A * w'2 ~ ALP / sqrt(ALE)  (on ajoute 0.1 pour les
     2048!       singularites)
     2049             ALP(i)=alp_wake(i)*(1.+3.*www(i)/( sqrt(ale_wake(i))+0.1) ) &
     2050  &                +alp_bl(i)  *(1.+3.*www(i)/( sqrt(ale_bl(i))  +0.1) )
     2051!             ALP(i)=alp_wake(i)+Alp_bl(i)+alp_offset*min(omega(i,6),0.)
     2052!             if (alp(i)<0.) then
     2053!                print*,'ALP ',alp(i),alp_wake(i) &
     2054!                     ,Alp_bl(i),alp_offset*min(omega(i,6),0.)
     2055!             endif
    20272056           endif
    20282057        enddo
    2029         ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    2030 
     2058!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    20312059
    20322060     endif
     
    22582286     ENDDO
    22592287
    2260      if (iflag_wake==2) then
     2288     IF (iflag_wake==2) THEN
    22612289        ok_wk_lsp(:)=max(sign(1.,wake_s(:)-wake_s_min_lsp),0.)
    22622290        DO k = 1,klev
     
    22662294                ok_wk_lsp(:)*(d_q_eva(:,k)+d_q_lsc(:,k))/dtime
    22672295        ENDDO
    2268      endif
     2296     ELSEIF (iflag_wake==3) THEN
     2297        ok_wk_lsp(:)=max(sign(1.,wake_s(:)-wake_s_min_lsp),0.)
     2298        DO k = 1,klev
     2299           DO i=1,klon
     2300              IF (rneb(i,k)==0.) THEN
     2301! On ne tient compte des tendances qu'en dehors des nuages (c'est �|  dire
     2302! a priri dans une region ou l'eau se reevapore).
     2303                dt_dwn(i,k)= dt_dwn(i,k)+ &
     2304                ok_wk_lsp(i)*d_t_lsc(i,k)/dtime
     2305                dq_dwn(i,k)= dq_dwn(i,k)+ &
     2306                ok_wk_lsp(i)*d_q_lsc(i,k)/dtime
     2307              ENDIF
     2308           ENDDO
     2309        ENDDO
     2310     ENDIF
     2311
    22692312     !
    22702313     !calcul caracteristiques de la poche froide
Note: See TracChangeset for help on using the changeset viewer.