Ignore:
Timestamp:
Dec 19, 2017, 7:49:05 PM (7 years ago)
Author:
dcugnet
Message:
  • Fix: Sig_bot was used before being initialized in "regr_pr_time_av".
  • Add an optional output argument to the "dyn_tropopause" function: the table of the last tropospheric layer in each column.
  • A filter for irrealistic tropopause pressure (lower than 80hPa or greater than 400hPa) is included in "dyn_tropopause". This is safer if this function is not used together with "regr_pr_time_av" (which contains already this filter), which is the case for the LMDZ version with coupled REPROBUS and INCA chemistry.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/tropopause_m.F90

    r2992 r3141  
    99!-------------------------------------------------------------------------------
    1010!
    11 FUNCTION dyn_tropopause(t, ts, paprs, pplay, rot, thet0, pvor0)
     11FUNCTION dyn_tropopause(t, ts, paprs, pplay, rot, itrop, thet0, pvor0)
    1212!
    1313!-------------------------------------------------------------------------------
     
    2626  REAL, INTENT(IN)  ::  pplay(:,:) !--- Cells-centers pressure
    2727  REAL, INTENT(IN)  ::    rot(:,:) !--- Cells-centers relative vorticity
    28   REAL, INTENT(IN), OPTIONAL :: thet0, pvor0
     28  INTEGER, INTENT(OUT), OPTIONAL :: itrop(klon) !--- Last tropospheric layer idx
     29  REAL,    INTENT(IN),  OPTIONAL :: thet0, pvor0
    2930!-------------------------------------------------------------------------------
    3031! Local variables:
    3132  include "YOMCST.h"
     33  REAL, PARAMETER :: DynPTrMin =8.E+3 !--- Thresholds for minimum and maximum
     34  REAL, PARAMETER :: DynPTrMax =4.E+4 !    dynamical tropopause pressure (Pa).
    3235  CHARACTER(LEN=80)  :: sub
    3336  INTEGER :: i, k, kb, kt, kp, ib, ie, nw
     
    100103    dyn_tropopause(i) = MAX( pplay(i,kp+1)*(pplay(i,kp)/pplay(i,kp+1))**al,    &
    101104                            dyn_tropopause(i) )
     105    !--- UNREALISTIC VALUES DETECTION
     106    IF(dyn_tropopause(i)<DynPTrMin.OR.dyn_tropopause(i)>DynPTrMax) THEN
     107      dyn_tropopause(i)=MIN(MAX(dyn_tropopause(i),DynPTrMax),DynPTrMin)
     108      DO kt=1,klev-1; IF(pplay(i,kt+1)>dyn_tropopause(i)) EXIT; END DO; kp=kt
     109    END IF
     110    !--- LAST TROPOSPHERIC LAYER INDEX NEEDED
     111    IF(PRESENT(itrop)) itrop(i)=MAX(kt,kp)
    102112  END DO
    103113
Note: See TracChangeset for help on using the changeset viewer.