Changeset 265 in lmdz_wrf for trunk/WRFV3/lmdz/cv3_routines.F90


Ignore:
Timestamp:
Feb 24, 2015, 3:26:54 PM (10 years ago)
Author:
lfita
Message:

Adding control error values on convection, since with this it has ran!!!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/WRFV3/lmdz/cv3_routines.F90

    r1 r265  
    16011601      logical lwork(nloc)
    16021602
     1603! L. Fita, LMD. February 2015.
     1604      INTEGER                                            :: kl,kl2
     1605      CHARACTER(LEN=50)                                  :: errmsg, fname
     1606
     1607      errmsg = 'ERROR -- error -- ERROR -- error'
     1608      fname = 'cv3_mixing'
     1609
     1610
    16031611!c=====================================================================
    16041612!c --- INITIALIZE VARIOUS ARRAYS USED IN THE COMPUTATIONS
     
    16941702         sij(il,i,j)=amin1(1.0,sij(il,i,j))
    16951703         endif ! new
     1704! L. Fita, LMD. Feburary 2015, Checkings...
     1705          IF (ment(il,i,j) > 10.) THEN
     1706            PRINT *,TRIM(errmsg)
     1707            PRINT *,'  ' // TRIM(fname) // ' ** after first computation '
     1708            PRINT *,'   ' // TRIM(fname) // ': wrong ment= ', ment(il,i,j),          &
     1709              ' value at ',il,', ',i,', ',j,' ! (< 10.) !!'
     1710            PRINT *,'   m(i) sij(i,j) anum denom h(j) hp(i) t(j) rti rr(j) __________'
     1711            PRINT *,m(il,i),sij(il,i,j),anum,denom,h(il,j),hp(il,i),t(il,j),rti,     &
     1712              rr(il,j)
     1713          END IF
    16961714 700   continue
    16971715 710  continue
     
    17261744!cMAF      sij(il,i,i)=1.0
    17271745      sij(il,i,i)=0.0
     1746! L. Fita, LMD. Feburary 2015, Checkings...
     1747      IF (ment(il,i,i) > 10.) THEN
     1748        PRINT *,TRIM(errmsg)
     1749        PRINT *,'  ' // TRIM(fname) // ' ** after detrained flux '
     1750        PRINT *,'   ' // TRIM(fname) // ': wrong ment= ', ment(il,i,i), ' value at ',&
     1751          il,', ',i,', ',i,' ! (< 10.) !!'
     1752        PRINT *,'   m(i) _________________'
     1753        PRINT *,m(il,i)
     1754      END IF
    17281755      end if
    17291756 740  continue
     
    18291856        asij(il)=asij(il)+wgh*(delp+delm)
    18301857        ment(il,i,j)=ment(il,i,j)*(delp+delm)*wgh
     1858! L. Fita, LMD. Feburary 2015, Checkings...
     1859        IF (ment(il,i,j) > 10.) THEN
     1860          PRINT *,TRIM(errmsg)
     1861          PRINT *,'  ' // TRIM(fname) // ' ** after first normalized '
     1862          PRINT *,'   ' // TRIM(fname) // ': wrong ment= ', ment(il,i,j),            &
     1863            ' value at ',il,', ',i,', ',j,' ! (< 10.) !!'
     1864          PRINT *,'   delp delm wgh sjmin sjmax smid sij(i,j-1) sij(i,j) ' //        &
     1865            'sij(i,j+1) smax scrit _________________'
     1866          PRINT *,delp,delm,wgh,sjmin,sjmax,smid,sij(il,i,j-1),sij(il,i,j),          &
     1867            sij(il,i,j+1),smax(il),scrit(il)
     1868        END IF
    18311869       endif
    18321870      endif
     
    18341872
    18351873175   continue
     1874
     1875
     1876      DO il=1,ncum
     1877! L. Fita, LMD. February 2015. Plotting vertical profile on asij(il) == 1.0e-16
     1878        IF (asij(il) < 1.0e-16) THEN
     1879           PRINT *,TRIM(errmsg)
     1880           PRINT *,'  ' // TRIM(fname) // ' ** asij= ',asij(il),' at il: ',il,       &
     1881             ' too small!!'
     1882           PRINT *,'    vertical profile i sig ph t rr rs u v _______'
     1883           DO kl=1,nl
     1884             PRINT *,i, sig(il,kl), ph(il,kl), t(il,kl), rr(il,kl), rs(il,kl),       &
     1885               u(il,kl), v(il,kl)
     1886           END DO
     1887           STOP
     1888        END IF
     1889      END DO
    18361890
    18371891      do il=1,ncum
     
    18451899      enddo
    18461900
     1901
    18471902      do 180 j=minorig,nl
    18481903       do il=1,ncum
     
    18501905       &   .and. j.ge.(icb(il)-1) .and. j.le.inb(il) ) then
    18511906         ment(il,i,j)=ment(il,i,j)*asij(il)
     1907! L. Fita, LMD. Feburary 2015, Checkings...
     1908         IF (ment(il,i,j) > 10.) THEN
     1909           PRINT *,TRIM(errmsg)
     1910           PRINT *,'  ' // TRIM(fname) // ' ** after 2nd normalized '
     1911           PRINT *,'   ' // TRIM(fname) // ': wrong ment= ', ment(il,i,j),           &
     1912             ' value at ',il,', ',i,', ',j,' ! (< 10.) !!'
     1913           PRINT *,'   asij(il) _________________'
     1914           PRINT *,asij(il)
     1915         END IF
    18521916        endif
    18531917       enddo
     
    18611925         ment(il,i,j)=ment(il,i,j)*sig(il,j)
    18621926         bsum(il,i)=bsum(il,i)+ment(il,i,j)
     1927! L. Fita, LMD. Feburary 2015, Checkings...
     1928         IF (ment(il,i,j) > 10.) THEN
     1929           PRINT *,TRIM(errmsg)
     1930           PRINT *,'  ' // TRIM(fname) // ' ** after 3rd normalized '
     1931           PRINT *,'   ' // TRIM(fname) // ': wrong ment= ', ment(il,i,j),           &
     1932             ' value at ',il,', ',i,', ',j,' ! (< 10.) !!'
     1933           PRINT *,'   sig(j) _________________'
     1934           PRINT *,sig(il,j)
     1935         END IF
    18631936        endif
    18641937       enddo
     
    18771950       &   .and. j.ge.(icb(il)-1) .and. j.le.inb(il) ) then
    18781951         ment(il,i,j)=ment(il,i,j)*asum(il,i)*bsum(il,i)
     1952! L. Fita, LMD. Feburary 2015, Checkings...
     1953         IF (ment(il,i,j) > 10.) THEN
     1954           PRINT *,TRIM(errmsg)
     1955           PRINT *,'  ' // TRIM(fname) // ' ** after 4th normalized '
     1956           PRINT *,'   ' // TRIM(fname) // ': wrong ment= ', ment(il,i,j),           &
     1957             ' value at ',il,', ',i,', ',j,' ! (< 10.) !!'
     1958           PRINT *,'   asum(i) bsum(i) _________________'
     1959           PRINT *,asum(il,i),bsum(il,i)
     1960         END IF
    18791961        endif
    18801962       enddo
     
    19011983!cMAF        sij(il,i,i)=1.0
    19021984        sij(il,i,i)=0.0
     1985! L. Fita, LMD. Feburary 2015, Checkings...
     1986        IF (ment(il,i,i) > 10.) THEN
     1987          PRINT *,TRIM(errmsg)
     1988          PRINT *,'  ' // TRIM(fname) // ' ** after 5th normalized '
     1989          PRINT *,'   ' // TRIM(fname) // ': wrong ment= ', ment(il,i,i),            &
     1990            ' value at ',il,', ',i,', ',i,' ! (< 10.) !!'
     1991          PRINT *,'   m(i) _________________'
     1992          PRINT *,m(il,i)
     1993        END IF
    19031994       endif
    19041995      enddo ! il
     
    19292020          if(zm(il,im).ne.0.) then
    19302021          ment(il,im,jm)=ment(il,im,jm)*m(il,im)/zm(il,im)
     2022! L. Fita, LMD. Feburary 2015, Checkings...
     2023          IF (ment(il,im,jm) > 10.) THEN
     2024            PRINT *,TRIM(errmsg)
     2025            PRINT *,'  ' // TRIM(fname) // ' ** after 6th normalized '
     2026            PRINT *,'   ' // TRIM(fname) // ': wrong ment= ', ment(il,im,jm),        &
     2027              ' value at ',il,', ',im,', ',jm,' ! (< 10.) !!'
     2028            PRINT *,'   m(im) zm(im) _________________'
     2029            PRINT *,m(il,im), zm(il,im)
     2030          END IF
    19312031          endif
    19322032         end do
     
    21682268!cc---end jyg---
    21692269!c
    2170 !c--------retour à la formulation originale d'Emanuel.
     2270!c--------retour \E0 la formulation originale d'Emanuel.
    21712271      b6=bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac
    21722272      c6=water(il,i+1)+bfac*wdtrain(il)                                              &
     
    21762276!cjyg    Dans sa formulation originale, Emanuel calcule l'evaporation par:
    21772277!cc             evap(il,i)=sigt*afac*revap
    2178 !c     ce qui n'est pas correct. Dans cv_routines, la formulation a été modifiee.
     2278!c     ce qui n'est pas correct. Dans cv_routines, la formulation a \E9t\E9 modifiee.
    21792279!c     Ici,l'evaporation evap est simplement calculee par l'equation de
    21802280!c     conservation.
     
    24662566      real siga(nloc,nd), sax(nloc,nd), mac(nloc,nd)      ! cld
    24672567
     2568! L. Fita, LMD. February 2015.
     2569      CHARACTER(LEN=50)                                  :: errmsg, fname
     2570
     2571      errmsg = 'ERROR -- error -- ERROR -- error'
     2572      fname = 'cv3_yield'
     2573
    24682574!c      print*,'cv3_yield declarations 3'
    24692575!c-------------------------------------------------------------
     
    26102716      endif
    26112717      endif  ! iflag
    2612       enddo
    2613 
     2718
     2719! L. Fita, LMD. Feburary 2015, Checkings...
     2720        IF (ft(il,1) > 100.) THEN
     2721          PRINT *,TRIM(errmsg)
     2722          PRINT *,'  ' // TRIM(fname) // ' ** after Correction pour conserver l eau '
     2723          PRINT *,'   ' // TRIM(fname) // ': wrong ft= ', ft(il,1),' value at ',il,  &
     2724            ' 1! (< 100.) !!'
     2725          PRINT *,'   sigd mp(2) t_wake(1) t_wake(2) b(1) work  water(2) wt(1) ' //  &
     2726            'cpn(1) am(il) t(1) t(2) gz(1) gz(2) _________________'
     2727          PRINT *,sigd(il), mp(il,2), t_wake(il,1), t_wake(il,2), b(il,1),           &
     2728            work(il),  water(il,2), wt(il,1), cpn(il,1), am(il), t(il,1), t(il,2),   &
     2729            gz(il,1), gz(il,2)
     2730        END IF
     2731      enddo
    26142732
    26152733       do j=2,nl
     
    26322750       enddo
    26332751       ENDIF
     2752
     2753! L. Fita, LMD. Feburary 2015, Checkings...
     2754        IF (ft(il,1) > 100.) THEN
     2755          PRINT *,TRIM(errmsg)
     2756          PRINT *,'  ' // TRIM(fname) // ' ** after sature '
     2757          PRINT *,'   ' // TRIM(fname) // ': wrong ft= ', ft(il,1),' value at ',il,  &
     2758            ' 1! (< 100.) !!'
     2759          PRINT *,'    work ment(',j,',1) hent(',j,',1) h(1) t(1) rr(1) Qent(',j,    &
     2760            ',1)_________________'
     2761          PRINT *,work(il), ment(il,j,1), hent(il,j,1), h(il,1), t(il,1), rr(il,1),  &
     2762            Qent(il,j,1)
     2763        END IF
     2764
    26342765        enddo
    26352766         ! fin sature
     
    27542885          endif
    27552886        endif
     2887! L. Fita, LMD. Feburary 2015, Checkings...
     2888        IF (amp1(il) > 10.) THEN
     2889          PRINT *,TRIM(errmsg)
     2890          PRINT *,'  ' // TRIM(fname) // ' ** amp1 1 '
     2891          PRINT *,'   ' // TRIM(fname) // ': wrong amp1= ', amp1(il),' value at ',il,&
     2892            '! (< 10.) !!'
     2893          PRINT *,'   k m(k) cbmf wghti(k) _________________'
     2894          PRINT *,k,m(il,k),cbmf(il),wghti(il,k)
     2895        END IF
    27562896 441   continue
    27572897 440  continue
     
    27632903          amp1(il)=amp1(il)+ment(il,k,j)
    27642904         endif
     2905! L. Fita, LMD. Feburary 2015, Checkings...
     2906        IF (amp1(il) > 10.) THEN
     2907          PRINT *,TRIM(errmsg)
     2908          PRINT *,'  ' // TRIM(fname) // ' ** amp1 2 '
     2909          PRINT *,'   ' // TRIM(fname) // ': wrong amp1= ', amp1(il),' value at ',il,&
     2910            '! (< 10.) !!'
     2911          PRINT *,'   k j ment(k,j) _________________'
     2912          PRINT *,k,j,ment(il,k,j)
     2913        END IF
    27652914452     continue
    27662915451    continue
     
    28022951       ftd(il,i)=ft(il,i)
    28032952        ! fin precip
     2953
     2954! L. Fita, LMD. Feburary 2015, Checkings...
     2955        IF (ft(il,i) > 100.) THEN
     2956          PRINT *,TRIM(errmsg)
     2957          PRINT *,'  ' // TRIM(fname) // ' ** after precip 1 '
     2958          PRINT *,'   ' // TRIM(fname) // ': wrong ft= ', ft(il,i),' value at ',il,i,&
     2959            '! (< 100.) !!'
     2960          PRINT *,'  sigd lvcp(i) evap(i) evap(i+1) mp(i) mp(i+1) t_wake(i-1) ' //   &
     2961            't_wake(i) t_wake(i+1) b(i-1) b(i) dpinv water(i+1)  _________________'
     2962          PRINT *,sigd(il),lvcp(il,i),evap(il,i),evap(il,i+1),mp(il,i),mp(il,i+1),   &
     2963            t_wake(il,i-1),t_wake(il,i),t_wake(il,i+1),b(il,i-1),b(il,i),            &
     2964            dpinv, water(il,i+1)
     2965        END IF
     2966
    28042967!c
    28052968           ! sature
     
    28352998      endif ! cvflag_grav
    28362999
     3000        IF (ft(il,i) > 100.) THEN
     3001          PRINT *,TRIM(errmsg)
     3002          PRINT *,'  ' // TRIM(fname) // ' ** after precip 2 sature '
     3003          PRINT *,'   ' // TRIM(fname) // ': wrong ft= ', ft(il,i),' value at ',il,i,&
     3004            '! (< 100.) !!'
     3005          PRINT *,'   amp1 t(i) t(i+1) gz(i) gz(i+1) ad t(i-1) t(i) gz(i-1) gz(i) '//&
     3006            'ment(i,i) hp(i) h(i) rr(i) qent(i,i) mp(i) mp(i+1) t_wake(i-1) ' //     &
     3007            't_wake(i) b(i-1) b(i) _________________'
     3008          PRINT *,amp1(il),t(il,i),t(il,i+1),gz(il,i),gz(il,i+1),ad(il),t(il,i-1),   &
     3009            t(il,i),gz(il,i-1),gz(il,i),ment(il,i,i),hp(il,i),h(il,i),rr(il,i),      &
     3010            qent(il,i,i),mp(il,i),mp(il,i+1),t_wake(il,i-1),t_wake(il,i),b(il,i-1),  &
     3011            b(il,i)
     3012        END IF
    28373013
    28383014        if (cvflag_grav) then
     
    29263102       endif  !cvflag_grav
    29273103       endif  ! i
     3104
     3105        IF (ft(il,i) > 100.) THEN
     3106          PRINT *,TRIM(errmsg)
     3107          PRINT *,'  ' // TRIM(fname) // ' ** after precip 3 '
     3108          PRINT *,'   ' // TRIM(fname) // ': wrong ft= ', ft(il,i),' value at ',il,i,&
     3109            '! (< 100.) !!'
     3110          PRINT *,'    k dpinv ment(k,i) hent(k,i) h(i) t(i) rr(i) awat Qent(k,i)    &
     3111            cpinv_________________'
     3112          PRINT *,k,dpinv,ment(il,k,i),hent(il,k,i),h(il,i),t(il,i),rr(il,i),        &
     3113            awat(il),Qent(il,k,i),cpinv
     3114        END IF
     3115
    29283116       enddo
    29293117      ENDIF
     
    29943182       endif  !cvflag_grav
    29953183       endif  ! i
     3184
     3185        IF (ft(il,i) > 100.) THEN
     3186          PRINT *,TRIM(errmsg)
     3187          PRINT *,'  ' // TRIM(fname) // ' ** after precip 3 '
     3188          PRINT *,'   ' // TRIM(fname) // ': wrong ft= ', ft(il,i),' value at ',il,i,&
     3189            '! (< 100.) !!'
     3190          PRINT *,'    k dpinv ment(k,i) hent(k,i) h(i) t(i) rr(i) awat Qent(k,i)    &
     3191            cpinv_________________'
     3192          PRINT *,k,dpinv,ment(il,k,i),hent(il,k,i),h(il,i),t(il,i),rr(il,i),        &
     3193            awat(il),Qent(il,k,i),cpinv
     3194        END IF
     3195
    29963196       enddo
    29973197      ENDIF
     
    31613361       &       /(ph(il,inb(il)-1)-ph(il,inb(il)))
    31623362       endif
     3363
     3364        IF (ft(il,inb(il)) > 100.) THEN
     3365          PRINT *,TRIM(errmsg)
     3366          PRINT *,'  ' // TRIM(fname) // ' ** after Correction bug le 18-03-09 '
     3367          PRINT *,'   ' // TRIM(fname) // ': wrong ft= ', ft(il,inb(il)),' value at '&
     3368            ,il,inb(il),'! (< 100.) !!'
     3369          PRINT *,'   inb ft(inb(il)-1) ax cpn(inb) ph(inb) ph(inb+1) cpn(inb-1) ' //&
     3370            'ph(inb(il)-1)  ph(inb(il)) _________________'
     3371          PRINT *,il,inb(il),ft(il,inb(il)-1),ax,cpn(il,inb(il)),ph(il,inb(il)),     &
     3372            ph(il,inb(il)+1), cpn(il,inb(il)-1), ph(il,inb(il)-1), ph(il,inb(il))
     3373        END IF
    31633374      ENDIF    !iflag
     3375
    31643376503   continue
    31653377
     
    32423454         fr(il,i)=fqd(il,i)+bsum(il)/csum(il)
    32433455        endif
     3456
     3457        IF (ft(il,i) > 100.) THEN
     3458          PRINT *,TRIM(errmsg)
     3459          PRINT *,'  ' // TRIM(fname) // ' ** after homogenize tendencies below cloud base'
     3460          PRINT *,'   ' // TRIM(fname) // ': wrong ft= ', ft(il,i),' value at '      &
     3461            ,il,i,'! (< 100.) !!'
     3462          PRINT *,'  ftd(i) asum t(i) th(i) dsum _________________'
     3463          PRINT *,ftd(il,i),asum(il),t(il,i),th(il,i),dsum(il)
     3464        END IF
     3465
    32443466       enddo
    32453467      enddo
     
    32803502        precip(il) = precip(il)/alpha_qpos(il)
    32813503       ENDIF
     3504! L. Fita, LMD. Feburary 2015, Checkings...
     3505       DO i=1, nl
     3506        IF (ft(il,i) > 100.) THEN
     3507          PRINT *,TRIM(errmsg)
     3508          PRINT *,'  ' // TRIM(fname) // ' ** after computing alpha_qpos'
     3509          PRINT *,'   ' // TRIM(fname) // ': wrong ft= ', ft(il,i),' value at '      &
     3510            ,il,i,'! (< 100.) !!'
     3511          PRINT *,'  i ft(i) alpha_qpos ft(i)/aplha_qpos _________________'
     3512          PRINT *,i,ft(il,i),alpha_qpos(il),ft(il,i)/alpha_qpos(il)
     3513        END IF
     3514       END DO
    32823515      ENDDO
    32833516      DO i = 1,nl
     
    32943527         Vprecip(il,i) = Vprecip(il,i)/alpha_qpos(il)
    32953528        ENDIF
     3529        IF (ft(il,i) > 100.) THEN
     3530          PRINT *,TRIM(errmsg)
     3531          PRINT *,'  ' // TRIM(fname) // ' ** after ensure moisture positivity'
     3532          PRINT *,'   ' // TRIM(fname) // ': wrong ft= ', ft(il,i),' value at '      &
     3533            ,il,i,'! (< 100.) !!'
     3534          PRINT *,'   ft(i) alpha_qpos fr(i) s_wake rr_wake(i) s_wake rr(i) _________________'
     3535          PRINT *,ft(il,i),alpha_qpos(il),fr(il,i),s_wake(il),rr_wake(il,i),         &
     3536            s_wake(il),rr(il,i)
     3537        END IF
     3538
    32963539       ENDDO
    32973540      ENDDO
     
    36033846!c
    36043847!  fraction deau condensee dans les melanges convertie en precip : epm
    3605 ! et eau condensée précipitée dans masse d'air saturé : l_m*dM_m/dzdz.dzdz
     3848! et eau condens\E9e pr\E9cipit\E9e dans masse d'air satur\E9 : l_m*dM_m/dzdz.dzdz
    36063849        do j=1,na
    36073850         do k=1,na
Note: See TracChangeset for help on using the changeset viewer.