Ignore:
Timestamp:
Jul 23, 2014, 12:56:37 PM (10 years ago)
Author:
lfita
Message:

Adding fukll checking of variables involved in Flux calculations

File:
1 edited

Legend:

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

    r33 r34  
    8080      integer pas
    8181! L. Fita, LMD July 2014
    82       CHARACTER(LEN=50)                                  :: errmsg, fname
     82      CHARACTER(LEN=50)                                  :: errmsg, fname, varname
    8383      LOGICAL                                            :: found
     84      REAL                                               :: largest
    8485
    8586      fname = 'diagphy'
    8687      errmsg = 'ERROR -- error -- ERROR -- error'
     88      largest = 10000.
    8789
    8890      save pas
     
    154156
    155157! L. Fita, LMD July 2014. Checking for consistency
    156       IF (fs_bound .NE. fs_bound .OR. ABS(fs_bound) > 100000.) THEN
     158      IF (fs_bound .NE. fs_bound .OR. ABS(fs_bound) > laragest) THEN
    157159        PRINT *,TRIM(errmsg)
    158160        PRINT *,'  ' + TRIM(fname) + ': Wrong fs_bound= ',fs_bound,' !!!'
    159161        PRINT *,'    fs_bound: Heat flux at atm. boundaries'
    160162        PRINT *,'    fs_bound = stops-stopl - (ssols+ssoll)+ssens+sfront'
    161         PRINT *,'    stops-stopl= ',stops-stopl
     163        PRINT *,'    airetot= ',airetot
     164        IF (airetot .NE. airetot .OR. ABS(airetot) > largest) THEN
     165          varname = 'airephy'
     166          CALL check_var(fname, varn, airephy, klon, largest, .FALSE.)
     167        END IF
     168        PRINT *,'    stops= ',stops
     169        IF (stops .NE. stops .OR. ABS(stops) > largest) THEN
     170          varname = 'tops'
     171          CALL check_var(fname, varn, tops, klon, largest, .FALSE.)
     172        END IF
     173        PRINT *,'    stopl= ',stopl
     174        IF (stopl .NE. stopl .OR. ABS(stopl) > largest) THEN
     175          varname = 'topl'
     176          CALL check_var(fname, varn, topl, klon, largest, .FALSE.)
     177        END IF
    162178        PRINT *,'    ssols= ',ssols
     179        IF (ssols .NE. ssols .OR. ABS(ssols) > largest) THEN
     180          varname = 'sols'
     181          CALL check_var(fname, varn, sols, klon, largest, .FALSE.)
     182        END IF
    163183        PRINT *,'    ssoll= ',ssoll
     184        IF (ssoll .NE. ssoll .OR. ABS(ssoll) > largest) THEN
     185          varname = 'soll'
     186          CALL check_var(fname, varn, soll, klon, largest, .FALSE.)
     187        END IF
    164188        PRINT *,'    ssens= ',ssens
     189        IF (ssens .NE. ssens .OR. ABS(ssens) > largest) THEN
     190          varname = 'sens'
     191          CALL check_var(fname, varn, sens, klon, largest, .FALSE.)
     192        END IF
    165193        PRINT *,'    sfront= ',sfront
     194        IF (sfront .NE. sfront .OR. ABS(sfront) > largest) THEN
     195          varname = 'evap'
     196          CALL check_var(fname, varn, evap, klon, largest, .FALSE.)
     197          varname = 'rain_fall'
     198          CALL check_var(fname, varn, rain_fall, klon, largest, .FALSE.)
     199          varname = 'snow_fall'
     200          CALL check_var(fname, varn, snow_fall, klon, largest, .FALSE.)
     201          varname = 'ts'
     202          CALL check_var(fname, varn, ts, klon, largest, .FALSE.)
     203        END IF
    166204        STOP
    167205      END IF
     
    173211        PRINT *,'    fq_bound = evap_tot - rain_fall_tot -snow_fall_tot'
    174212        PRINT *,'    evap_tot= ',evap_tot
     213        PRINT *,'    airetot= ',airetot
     214        IF (airetot .NE. airetot .OR. ABS(airetot) > largest) THEN
     215          varname = 'airephy'
     216          CALL check_var(fname, varn, airephy, klon, largest, .FALSE.)
     217        END IF
     218        IF (evap_tot .NE. evap_tot .OR. ABS(evap_tot) > largest) THEN
     219          varname = 'evap'
     220          CALL check_var(fname, varn, evap, klon, largest, .FALSE.)
    175221        PRINT *,'    rain_fall_tot= ',rain_fall_tot
     222        IF (rain_fall_tot .NE. rain_fall_tot .OR. ABS(rain_fall_tot) > largest) THEN
     223          varname = 'rain_fall'
     224          CALL check_var(fname, varn, rain_fall, klon, largest, .FALSE.)
    176225        PRINT *,'    snow_fall_tot= ',snow_fall_tot
     226        IF (snow_fall_tot .NE. snow_fall_tot .OR. ABS(snow_fall_tot) > largest) THEN
     227          varname = 'snow_fall'
     228          CALL check_var(fname, varn, snow_fall, klon, largest, .FALSE.)
    177229        STOP
    178230      END IF
Note: See TracChangeset for help on using the changeset viewer.