Changeset 50 in lmdz_wrf


Ignore:
Timestamp:
Jul 23, 2014, 4:33:35 PM (10 years ago)
Author:
lfita
Message:

Adding similar checks in 'diagtpq'

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/LMDZ_WRFmeas/WRFV3/lmdz/diagphy_mod.F90

    r46 r50  
    441441!$OMP THREADPRIVATE(h_vcol_pre, h_dair_pre, h_qw_pre, h_ql_pre)
    442442!$OMP THREADPRIVATE(h_qs_pre, qw_pre, ql_pre, qs_pre , ec_pre)
     443
     444! L. Fita, LMD July 2014
     445      CHARACTER(LEN=50)                                  :: errmsg, fname, varname
     446      LOGICAL                                            :: found
     447      REAL                                               :: largest
     448
     449      fname = 'diagetpq'
     450      errmsg = 'ERROR -- error -- ERROR -- error'
     451      largest = 10.e3
    443452!c======================================================================
    444453!C
     
    583592      ec_pre (idiag)    = ec_tot
    584593!C
     594      IF (d_h_vcol .NE. d_h_vcol .OR. ABS(d_h_vcol) > largest) THEN
     595        PRINT *,TRIM(errmsg)
     596        PRINT *,'  ' // TRIM(fname) // ': Wrong d_h_vcol= ',d_h_vcol,' !!!'
     597        PRINT *,'    d_h_vcol: Heat flux (W/m2) define as the Enthalpy change' //    &
     598          ' (J/m2) during one time step (dtime) for the whole atmosphere (air,' //   &
     599          ' watter vapour, liquid and solid)'
     600        PRINT *,'    d_h_vcol = (h_vcol_tot - h_vcol_pre(idiag2) )'
     601        PRINT *,'    h_vcol_tot= ',h_vcol_tot
     602        IF (h_vcol_tot .NE. h_vcol_tot .OR. ABS(h_vcol_tot) > largest) THEN
     603          PRINT *,'      h_vcol_tot = h_dair_tot+h_qw_tot+h_ql_tot+h_qs_tot'
     604          PRINT *,'    airetot= ',airetot
     605          IF (airetot .NE. airetot .OR. ABS(airetot) > largest) THEN
     606            varname = 'airephy'
     607            CALL check_var(fname, varname, airephy, klon, largest, .FALSE.)
     608          END IF
     609          PRINT *,'    h_dair_tot= ',h_dair_tot
     610          IF (h_dair_tot .NE. h_dair_tot .OR. ABS(h_dair_tot) > largest) THEN
     611            varname = 'zh_dair_col'
     612            CALL check_var(fname, varname, zh_dair_col, klon, largest, .FALSE.)
     613          END IF
     614          PRINT *,'    h_qw_tot= ',h_qw_tot
     615          IF (h_qw_tot .NE. h_qw_tot .OR. ABS(h_qw_tot) > largest) THEN
     616            varname = 'zh_qw_col'
     617            CALL check_var(fname, varname, zh_qw_col, klon, largest, .FALSE.)
     618          END IF
     619          PRINT *,'    h_ql_tot= ',h_ql_tot
     620          IF (h_ql_tot .NE. h_ql_tot .OR. ABS(h_ql_tot) > largest) THEN
     621            varname = 'zh_ql_col'
     622            CALL check_var(fname, varname, zh_ql_col, klon, largest, .FALSE.)
     623          END IF
     624          PRINT *,'    h_qs_tot= ',h_qs_tot
     625          IF (h_qs_tot .NE. h_qs_tot .OR. ABS(h_qs_tot) > largest) THEN
     626            varname = 'zh_qs_col'
     627            CALL check_var(fname, varname, zh_qs_col, klon, largest, .FALSE.)
     628          END IF
     629        END IF
     630        STOP
     631      END IF
     632
    585633      RETURN
    586634      END SUBROUTINE diagetpq
Note: See TracChangeset for help on using the changeset viewer.