Ignore:
Timestamp:
Apr 24, 2016, 12:38:19 PM (8 years ago)
Author:
oboucher
Message:

Various changes to diagnose properly 2D tendency in q, ql, qs from dynamics
as previous diagnostics were incorrect.
Cleaned up all such diagnostics in physiq_mod.F90 as well

File:
1 edited

Legend:

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

    r2496 r2499  
    10431043    forall (k=1: nbp_lev) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg
    10441044
    1045 
    1046 
    10471045    modname = 'physiq'
    10481046    !IM
     
    15991597    !--store initial water burden
    16001598    qql1(:)=0.0
    1601     DO i = 1, klon
    1602       DO k = 1, klev
    1603         qql1(i)=qql1(i)+(q_seri(i,k)+ql_seri(i,k))*zmasse(i,k)
    1604       ENDDO
     1599    DO k = 1, klev
     1600      qql1(:)=qql1(:)+(q_seri(:,k)+ql_seri(:,k)+qs_seri(:,k))*zmasse(:,k)
    16051601    ENDDO
    16061602    ENDIF
     
    16561652    !
    16571653    IF (ancien_ok) THEN
    1658        DO k = 1, klev
    1659           DO i = 1, klon
    1660              d_u_dyn(i,k) = (u_seri(i,k)-u_ancien(i,k))/dtime
    1661              d_v_dyn(i,k) = (v_seri(i,k)-v_ancien(i,k))/dtime
    1662              d_t_dyn(i,k) = (t_seri(i,k)-t_ancien(i,k))/dtime
    1663              d_q_dyn(i,k) = (q_seri(i,k)-q_ancien(i,k))/dtime
    1664              d_ql_dyn(i,k) = (ql_seri(i,k)-ql_ancien(i,k))/dtime
    1665              d_qs_dyn(i,k) = (qs_seri(i,k)-qs_ancien(i,k))/dtime
    1666           ENDDO
    1667        ENDDO
     1654    !
     1655       d_u_dyn(:,:)  = (u_seri(:,:)-u_ancien(:,:))/dtime
     1656       d_v_dyn(:,:)  = (v_seri(:,:)-v_ancien(:,:))/dtime
     1657       d_t_dyn(:,:)  = (t_seri(:,:)-t_ancien(:,:))/dtime
     1658       d_q_dyn(:,:)  = (q_seri(:,:)-q_ancien(:,:))/dtime
     1659       d_ql_dyn(:,:) = (ql_seri(:,:)-ql_ancien(:,:))/dtime
     1660       d_qs_dyn(:,:) = (qs_seri(:,:)-qs_ancien(:,:))/dtime
     1661       CALL water_int(klon,klev,q_seri,zmasse,zx_tmp_fi2d)
     1662       d_q_dyn2d(:)=(zx_tmp_fi2d(:)-prw_ancien(:))/dtime
     1663       CALL water_int(klon,klev,ql_seri,zmasse,zx_tmp_fi2d)
     1664       d_ql_dyn2d(:)=(zx_tmp_fi2d(:)-prlw_ancien(:))/dtime
     1665       CALL water_int(klon,klev,qs_seri,zmasse,zx_tmp_fi2d)
     1666       d_qs_dyn2d(:)=(zx_tmp_fi2d(:)-prsw_ancien(:))/dtime
    16681667       ! !! RomP >>>   td dyn traceur
    1669        !!     IF (nqtot.GE.3) THEN       ! jyg
    1670        !!        DO iq = 3, nqtot        ! jyg
    1671        IF (nqtot.GE.nqo+1) THEN     ! jyg
     1668       IF (nqtot.GT.nqo) THEN     ! jyg
    16721669          DO iq = nqo+1, nqtot      ! jyg
    1673              DO k = 1, klev
    1674                 DO i = 1, klon
    1675                    !! d_tr_dyn(i,k,iq-2)= &                               ! jyg
    1676                    !!    (tr_seri(i,k,iq-2)-tr_ancien(i,k,iq-2))/dtime    ! jyg
    1677                    d_tr_dyn(i,k,iq-nqo)= &                                ! jyg
    1678                         (tr_seri(i,k,iq-nqo)-tr_ancien(i,k,iq-nqo))/dtime ! jyg
    1679                    !         iiq=niadv(iq)
    1680                    ! print*,i,k," d_tr_dyn",d_tr_dyn(i,k,iq-nqo),"tra:",iq,&
    1681                    !  tname(iiq)
    1682                 ENDDO
    1683              ENDDO
     1670              d_tr_dyn(:,:,iq-nqo)=(tr_seri(:,:,iq-nqo)-tr_ancien(:,:,iq-nqo))/dtime ! jyg
    16841671          ENDDO
    16851672       ENDIF
    16861673       ! !! RomP <<<
    16871674    ELSE
    1688        DO k = 1, klev
    1689           DO i = 1, klon
    1690              d_u_dyn(i,k) = 0.0
    1691              d_v_dyn(i,k) = 0.0
    1692              d_t_dyn(i,k) = 0.0
    1693              d_q_dyn(i,k) = 0.0
    1694              d_ql_dyn(i,k) = 0.0
    1695              d_qs_dyn(i,k) = 0.0
    1696           ENDDO
    1697        ENDDO
     1675       d_u_dyn(:,:)  = 0.0
     1676       d_v_dyn(:,:)  = 0.0
     1677       d_t_dyn(:,:)  = 0.0
     1678       d_q_dyn(:,:)  = 0.0
     1679       d_ql_dyn(:,:) = 0.0
     1680       d_qs_dyn(:,:) = 0.0
     1681       d_q_dyn2d(:)  = 0.0
     1682       d_ql_dyn2d(:) = 0.0
     1683       d_qs_dyn2d(:) = 0.0
    16981684       ! !! RomP >>>   td dyn traceur
    1699        !!     IF (nqtot.GE.3) THEN                                     ! jyg
    1700        !!        DO iq = 3, nqtot                                      ! jyg
    1701        IF (nqtot.GE.nqo+1) THEN                                        ! jyg
    1702           DO iq = nqo+1, nqtot                                         ! jyg
    1703              DO k = 1, klev
    1704                 DO i = 1, klon
    1705                    !! d_tr_dyn(i,k,iq-2)= 0.0                            ! jyg
    1706                    d_tr_dyn(i,k,iq-nqo)= 0.0                             ! jyg
    1707                 ENDDO
    1708              ENDDO
     1685       IF (nqtot.GT.nqo) THEN                                       ! jyg
     1686          DO iq = nqo+1, nqtot                                      ! jyg
     1687              d_tr_dyn(:,:,iq-nqo)= 0.0                             ! jyg
    17091688          ENDDO
    17101689       ENDIF
     
    43064285    !   prlw = colonne eau liquide
    43074286    !   prlw = colonne eau solide
    4308     DO i = 1, klon
    4309        prw(i) = 0.
    4310        prlw(i) = 0.
    4311        prsw(i) = 0.
    4312        DO k = 1, klev
    4313           prw(i) = prw(i) + &
    4314                q_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
    4315           prlw(i) = prlw(i) + &
    4316                ql_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
    4317           prsw(i) = prsw(i) + &
    4318                qs_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
    4319        ENDDO
     4287    prw(:) = 0.
     4288    prlw(:) = 0.
     4289    prsw(:) = 0.
     4290    DO k = 1, klev
     4291       prw(:)  = prw(:)  + q_seri(:,k)*zmasse(:,k)
     4292       prlw(:) = prlw(:) + ql_seri(:,k)*zmasse(:,k)
     4293       prsw(:) = prsw(:) + qs_seri(:,k)*zmasse(:,k)
    43204294    ENDDO
    43214295    !
     
    43954369    IF (mass_fixer) THEN
    43964370    qql2(:)=0.0
    4397     DO i = 1, klon
    4398       DO k = 1, klev
    4399         qql2(i)=qql2(i)+(q_seri(i,k)+ql_seri(i,k))*zmasse(i,k)
    4400       ENDDO
     4371    DO k = 1, klev
     4372      qql2(:)=qql2(:)+(q_seri(:,k)+ql_seri(:,k)+qs_seri(:,k))*zmasse(:,k)
    44014373    ENDDO
    44024374    DO i = 1, klon
     
    44134385    ! Sauvegarder les valeurs de t et q a la fin de la physique:
    44144386    !
    4415     DO k = 1, klev
    4416        DO i = 1, klon
    4417           u_ancien(i,k) = u_seri(i,k)
    4418           v_ancien(i,k) = v_seri(i,k)
    4419           t_ancien(i,k) = t_seri(i,k)
    4420           q_ancien(i,k) = q_seri(i,k)
    4421           ql_ancien(i,k) = ql_seri(i,k)
    4422           qs_ancien(i,k) = qs_seri(i,k)
    4423        ENDDO
    4424     ENDDO
    4425 
     4387    u_ancien(:,:)  = u_seri(:,:)
     4388    v_ancien(:,:)  = v_seri(:,:)
     4389    t_ancien(:,:)  = t_seri(:,:)
     4390    q_ancien(:,:)  = q_seri(:,:)
     4391    ql_ancien(:,:) = ql_seri(:,:)
     4392    qs_ancien(:,:) = qs_seri(:,:)
     4393    CALL water_int(klon,klev,q_ancien,zmasse,prw_ancien)
     4394    CALL water_int(klon,klev,ql_ancien,zmasse,prlw_ancien)
     4395    CALL water_int(klon,klev,qs_ancien,zmasse,prsw_ancien)
    44264396    ! !! RomP >>>
    44274397    !CR: nb de traceurs eau: nqo
    4428     !  IF (nqtot.GE.3) THEN
    4429     IF (nqtot.GE.(nqo+1)) THEN
    4430        !     DO iq = 3, nqtot
     4398    IF (nqtot.GT.nqo) THEN
    44314399       DO iq = nqo+1, nqtot
    4432           DO k = 1, klev
    4433              DO i = 1, klon
    4434                 !              tr_ancien(i,k,iq-2) = tr_seri(i,k,iq-2)
    4435                 tr_ancien(i,k,iq-nqo) = tr_seri(i,k,iq-nqo)
    4436              ENDDO
    4437           ENDDO
     4400          tr_ancien(:,:,iq-nqo) = tr_seri(:,:,iq-nqo)
    44384401       ENDDO
    44394402    ENDIF
Note: See TracChangeset for help on using the changeset viewer.