New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 7954 for branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/TOP_SRC/trcsub.F90 – NEMO

Ignore:
Timestamp:
2017-04-24T09:19:00+02:00 (7 years ago)
Author:
gm
Message:

#1880 (HPC-09): OPA & TOP replace key_trabbl by ln_trabbl + in CONFIG, remove reference to key_zdfXXX and key_trabbl

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/TOP_SRC/trcsub.F90

    r7953 r7954  
    22   !!====================================================================== 
    33   !!                       ***  MODULE trcsubstp  *** 
    4    !!TOP :   Averages physics variables for TOP substepping.  
     4   !!   TOP :   Averages physics variables for TOP substepping.  
    55   !!====================================================================== 
    66   !! History :  1.0  !  2011-10  (K. Edwards)  Original 
     
    88#if defined key_top 
    99   !!---------------------------------------------------------------------- 
    10    !!   trc_sub    : passive tracer system sub-stepping  
     10   !!   trc_sub       : passive tracer system sub-stepping  
    1111   !!---------------------------------------------------------------------- 
    12    USE oce_trc          ! ocean dynamics and active tracers variables 
     12   USE oce_trc        ! ocean dynamics and active tracers variables 
    1313   USE trc 
    14    USE prtctl_trc       ! Print control for debbuging 
    15    USE iom 
    16    USE in_out_manager 
    17    USE lbclnk 
    18    USE trabbl 
     14   USE trabbl         ! bottom boundary layer 
    1915   USE zdf_oce 
    2016   USE domvvl 
    21    USE divhor          ! horizontal divergence            (div_hor routine) 
    22    USE sbcrnf    , ONLY: h_rnf, nk_rnf    ! River runoff 
    23    USE bdy_oce   , ONLY: ln_bdy, bdytmask ! BDY 
     17   USE divhor         ! horizontal divergence 
     18   USE sbcrnf   , ONLY: h_rnf, nk_rnf    ! River runoff 
     19   USE bdy_oce  , ONLY: ln_bdy, bdytmask ! BDY 
     20   ! 
     21   USE prtctl_trc     ! Print control for debbuging 
     22   USE in_out_manager !  
     23   USE iom 
     24   USE lbclnk 
    2425#if defined key_agrif 
    2526   USE agrif_opa_update 
     
    2930   IMPLICIT NONE 
    3031 
    31    PUBLIC   trc_sub_stp      ! called by trc_stp 
    32    PUBLIC   trc_sub_ini      ! called by trc_ini to initialize substepping arrays. 
    33    PUBLIC   trc_sub_reset    ! called by trc_stp to reset physics variables 
    34    PUBLIC   trc_sub_ssh      ! called by trc_stp to reset physics variables 
    35  
    36    REAL(wp)  :: r1_ndttrc     !    1 /  nn_dttrc  
    37    REAL(wp)  :: r1_ndttrcp1   !    1 / (nn_dttrc+1)  
    38  
    39    !                                                       !* iso-neutral slopes (if l_ldfslp=T) 
    40    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  uslp_temp, vslp_temp, wslpi_temp, wslpj_temp   !: hold current values  
    41    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  uslp_tm  , vslp_tm  , wslpi_tm  , wslpj_tm     !: time mean  
     32   PUBLIC   trc_sub_stp     ! called by trc_stp 
     33   PUBLIC   trc_sub_ini     ! called by trc_ini to initialize substepping arrays. 
     34   PUBLIC   trc_sub_reset   ! called by trc_stp to reset physics variables 
     35   PUBLIC   trc_sub_ssh     ! called by trc_stp to reset physics variables 
     36 
     37   REAL(wp) :: r1_ndttrc     ! = 1 /  nn_dttrc  
     38   REAL(wp) :: r1_ndttrcp1   ! = 1 / (nn_dttrc+1)  
     39 
     40 
     41   !! averaged and temporary saved variables  (needed when a larger passive tracer time-step is used) 
     42   !! ---------------------------------------------------------------- 
     43   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::    un_tm ,   un_temp   !: i-horizontal velocity average     [m/s] 
     44   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::    vn_tm ,   vn_temp   !: j-horizontal velocity average     [m/s] 
     45   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::              wn_temp   !: hold current values of avt, un, vn, wn 
     46   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   tsn_tm ,  tsn_temp   !: t/s average     [m/s] 
     47   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   avs_tm ,  avs_temp   !: vertical diffusivity coeff. at  w-point   [m2/s] 
     48   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  rhop_tm , rhop_temp   !:  
     49   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshn_tm , sshn_temp   !: average ssh for the now step [m] 
     50 
     51   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::    rnf_tm ,    rnf_temp   !: river runoff 
     52   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  h_rnf_tm ,  h_rnf_temp   !: depth in metres to the bottom of the relevant grid box 
     53   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   hmld_tm ,   hmld_temp   !: mixed layer depth average [m] 
     54   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   fr_i_tm ,   fr_i_temp   !: average ice fraction     [m/s] 
     55   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::    emp_tm ,    emp_temp   !: freshwater budget: volume flux [Kg/m2/s] 
     56   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     :: fmmflx_tm , fmmflx_temp   !: freshwater budget: freezing/melting [Kg/m2/s] 
     57   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     :: emp_b_hold,  emp_b_temp   !: hold emp from the beginning of each sub-stepping[m]   
     58   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::    qsr_tm ,    qsr_temp   !: solar radiation average [m] 
     59   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   wndm_tm ,   wndm_temp   !: 10m wind average [m] 
     60   ! 
     61   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshb_hold   !:hold sshb from the beginning of each sub-stepping[m]   
     62   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   sshb_temp, ssha_temp 
     63   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  hdivn_temp, rotn_temp 
     64   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  hdivb_temp, rotb_temp 
     65   ! 
     66   !                                                    !!- bottom boundary layer param (ln_trabbl=T) 
     67   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  ahu_bbl_tm, ahu_bbl_temp  ! BBL diffusive i-coef. 
     68   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  ahv_bbl_tm, ahv_bbl_temp  ! BBL diffusive j-coef. 
     69   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  utr_bbl_tm, utr_bbl_temp  ! BBL u-advection 
     70   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  vtr_bbl_tm, vtr_bbl_temp  ! BBL v-advection 
     71 
     72   !                                                      !!- iso-neutral slopes (if l_ldfslp=T) 
     73   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   uslp_temp, vslp_temp, wslpi_temp, wslpj_temp   !: hold current values  
     74   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   uslp_tm  , vslp_tm  , wslpi_tm  , wslpj_tm     !: time mean  
     75 
    4276 
    4377   !!---------------------------------------------------------------------- 
    44    !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     78   !! NEMO/TOP 4.0 , NEMO Consortium (2017) 
    4579   !! $Id$  
    4680   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     
    5791      !!              on TOP steps, calculate averages. 
    5892      !!------------------------------------------------------------------- 
    59       INTEGER, INTENT( in ) ::  kt        ! ocean time-step index 
    60       INTEGER               ::  ji,jj,jk  ! dummy loop indices 
    61       REAL(wp)              ::  z1_ne3t, z1_ne3u, z1_ne3v, z1_ne3w 
     93      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
     94      ! 
     95      INTEGER ::   ji, jj, jk   ! dummy loop indices 
     96      REAL(wp)::   z1_ne3t, z1_ne3u, z1_ne3v, z1_ne3w   ! local scalars 
    6297      !!------------------------------------------------------------------- 
    6398      ! 
     
    74109           r1_ndttrc        = 1._wp / REAL( nn_dttrc    , wp )  
    75110           r1_ndttrcp1      = 1._wp / REAL( nn_dttrc + 1, wp ) 
    76            ! 
    77111      ENDIF   
    78112 
    79        IF( MOD( kt , nn_dttrc ) /= 0 ) THEN 
    80           ! 
    81           un_tm   (:,:,:)        = un_tm   (:,:,:)        + un   (:,:,:)        * e3u_n(:,:,:)  
    82           vn_tm   (:,:,:)        = vn_tm   (:,:,:)        + vn   (:,:,:)        * e3v_n(:,:,:)  
    83           tsn_tm  (:,:,:,jp_tem) = tsn_tm  (:,:,:,jp_tem) + tsn  (:,:,:,jp_tem) * e3t_n(:,:,:)   
    84           tsn_tm  (:,:,:,jp_sal) = tsn_tm  (:,:,:,jp_sal) + tsn  (:,:,:,jp_sal) * e3t_n(:,:,:)   
    85           rhop_tm (:,:,:)        = rhop_tm (:,:,:)        + rhop (:,:,:)        * e3t_n(:,:,:)   
    86           avs_tm  (:,:,:)        = avs_tm  (:,:,:)        + avs  (:,:,:)        * e3w_n(:,:,:)   
     113      IF( MOD( kt , nn_dttrc ) /= 0 ) THEN 
     114         ! 
     115         un_tm   (:,:,:)        = un_tm   (:,:,:)        + un   (:,:,:)        * e3u_n(:,:,:)  
     116         vn_tm   (:,:,:)        = vn_tm   (:,:,:)        + vn   (:,:,:)        * e3v_n(:,:,:)  
     117         tsn_tm  (:,:,:,jp_tem) = tsn_tm  (:,:,:,jp_tem) + tsn  (:,:,:,jp_tem) * e3t_n(:,:,:)   
     118         tsn_tm  (:,:,:,jp_sal) = tsn_tm  (:,:,:,jp_sal) + tsn  (:,:,:,jp_sal) * e3t_n(:,:,:)   
     119         rhop_tm (:,:,:)        = rhop_tm (:,:,:)        + rhop (:,:,:)        * e3t_n(:,:,:)   
     120         avs_tm  (:,:,:)        = avs_tm  (:,:,:)        + avs  (:,:,:)        * e3w_n(:,:,:)   
    87121         IF( l_ldfslp ) THEN 
    88122            uslp_tm (:,:,:)      = uslp_tm (:,:,:)        + uslp (:,:,:) 
     
    91125            wslpj_tm(:,:,:)      = wslpj_tm(:,:,:)        + wslpj(:,:,:) 
    92126         ENDIF 
    93 # if defined key_trabbl 
    94           IF( nn_bbl_ldf == 1 ) THEN 
    95              ahu_bbl_tm(:,:)     = ahu_bbl_tm(:,:)        + ahu_bbl(:,:)  
    96              ahv_bbl_tm(:,:)     = ahv_bbl_tm(:,:)        + ahv_bbl(:,:)  
    97           ENDIF 
    98           IF( nn_bbl_adv == 1 ) THEN 
    99              utr_bbl_tm(:,:)     = utr_bbl_tm(:,:)        + utr_bbl(:,:)  
    100              vtr_bbl_tm(:,:)     = vtr_bbl_tm(:,:)        + vtr_bbl(:,:)  
    101           ENDIF 
    102 # endif 
    103           ! 
    104           sshn_tm  (:,:)         = sshn_tm  (:,:)         + sshn  (:,:)  
    105           rnf_tm   (:,:)         = rnf_tm   (:,:)         + rnf   (:,:)  
    106           h_rnf_tm (:,:)         = h_rnf_tm (:,:)         + h_rnf (:,:)  
    107           hmld_tm  (:,:)         = hmld_tm  (:,:)         + hmld  (:,:) 
    108           fr_i_tm  (:,:)         = fr_i_tm  (:,:)         + fr_i  (:,:) 
    109           emp_tm   (:,:)         = emp_tm   (:,:)         + emp   (:,:)  
    110           fmmflx_tm(:,:)         = fmmflx_tm(:,:)         + fmmflx(:,:) 
    111           qsr_tm   (:,:)         = qsr_tm   (:,:)         + qsr   (:,:) 
    112           wndm_tm  (:,:)         = wndm_tm  (:,:)         + wndm  (:,:) 
    113  
     127         IF( ln_trabbl ) THEN 
     128            IF( nn_bbl_ldf == 1 ) THEN 
     129               ahu_bbl_tm(:,:)     = ahu_bbl_tm(:,:)        + ahu_bbl(:,:)  
     130               ahv_bbl_tm(:,:)     = ahv_bbl_tm(:,:)        + ahv_bbl(:,:)  
     131            ENDIF 
     132            IF( nn_bbl_adv == 1 ) THEN 
     133               utr_bbl_tm(:,:)     = utr_bbl_tm(:,:)        + utr_bbl(:,:)  
     134               vtr_bbl_tm(:,:)     = vtr_bbl_tm(:,:)        + vtr_bbl(:,:)  
     135            ENDIF 
     136         ENDIF  
     137         ! 
     138         sshn_tm  (:,:)         = sshn_tm  (:,:)         + sshn  (:,:)  
     139         rnf_tm   (:,:)         = rnf_tm   (:,:)         + rnf   (:,:)  
     140         h_rnf_tm (:,:)         = h_rnf_tm (:,:)         + h_rnf (:,:)  
     141         hmld_tm  (:,:)         = hmld_tm  (:,:)         + hmld  (:,:) 
     142         fr_i_tm  (:,:)         = fr_i_tm  (:,:)         + fr_i  (:,:) 
     143         emp_tm   (:,:)         = emp_tm   (:,:)         + emp   (:,:)  
     144         fmmflx_tm(:,:)         = fmmflx_tm(:,:)         + fmmflx(:,:) 
     145         qsr_tm   (:,:)         = qsr_tm   (:,:)         + qsr   (:,:) 
     146         wndm_tm  (:,:)         = wndm_tm  (:,:)         + wndm  (:,:) 
     147         ! 
    114148      ELSE                           !  It is time to substep  
    115          !   1. set temporary arrays to hold physics variables 
     149         !   1. set temporary arrays to hold physics/dynamical variables 
    116150         un_temp    (:,:,:)      = un    (:,:,:) 
    117151         vn_temp    (:,:,:)      = vn    (:,:,:) 
     
    124158            vslp_temp  (:,:,:)   = vslp  (:,:,:)   ;   wslpj_temp (:,:,:)   = wslpj (:,:,:) 
    125159         ENDIF 
    126 # if defined key_trabbl 
    127           IF( nn_bbl_ldf == 1 ) THEN 
    128              ahu_bbl_temp(:,:)   = ahu_bbl(:,:)   
    129              ahv_bbl_temp(:,:)   = ahv_bbl(:,:)  
    130           ENDIF 
    131           IF( nn_bbl_adv == 1 ) THEN 
    132              utr_bbl_temp(:,:)   = utr_bbl(:,:)  
    133              vtr_bbl_temp(:,:)   = vtr_bbl(:,:)  
    134           ENDIF 
    135 # endif 
     160         IF( ln_trabbl ) THEN 
     161            IF( nn_bbl_ldf == 1 ) THEN 
     162               ahu_bbl_temp(:,:)   = ahu_bbl(:,:)   
     163               ahv_bbl_temp(:,:)   = ahv_bbl(:,:)  
     164            ENDIF 
     165            IF( nn_bbl_adv == 1 ) THEN 
     166               utr_bbl_temp(:,:)   = utr_bbl(:,:)  
     167               vtr_bbl_temp(:,:)   = vtr_bbl(:,:)  
     168            ENDIF 
     169         ENDIF  
    136170         sshn_temp  (:,:)        = sshn  (:,:) 
    137171         sshb_temp  (:,:)        = sshb  (:,:) 
     
    162196            wslpj_tm (:,:,:)     = wslpj_tm(:,:,:)        + wslpj(:,:,:)  
    163197         ENDIF 
    164 # if defined key_trabbl 
    165           IF( nn_bbl_ldf == 1 ) THEN 
    166              ahu_bbl_tm(:,:)     = ahu_bbl_tm(:,:)        + ahu_bbl(:,:)  
    167              ahv_bbl_tm(:,:)     = ahv_bbl_tm(:,:)        + ahv_bbl(:,:)  
    168           ENDIF 
    169           IF( nn_bbl_adv == 1 ) THEN 
    170              utr_bbl_tm(:,:)     = utr_bbl_tm(:,:)        + utr_bbl(:,:)  
    171              vtr_bbl_tm(:,:)     = vtr_bbl_tm(:,:)        + vtr_bbl(:,:)  
    172           ENDIF 
    173 # endif 
     198         IF( ln_trabbl ) THEN 
     199            IF( nn_bbl_ldf == 1 ) THEN 
     200               ahu_bbl_tm(:,:)     = ahu_bbl_tm(:,:)        + ahu_bbl(:,:)  
     201               ahv_bbl_tm(:,:)     = ahv_bbl_tm(:,:)        + ahv_bbl(:,:)  
     202            ENDIF 
     203            IF( nn_bbl_adv == 1 ) THEN 
     204               utr_bbl_tm(:,:)     = utr_bbl_tm(:,:)        + utr_bbl(:,:)  
     205               vtr_bbl_tm(:,:)     = vtr_bbl_tm(:,:)        + vtr_bbl(:,:)  
     206            ENDIF 
     207         ENDIF  
    174208         sshn_tm  (:,:)          = sshn_tm    (:,:)       + sshn  (:,:)  
    175209         rnf_tm   (:,:)          = rnf_tm     (:,:)       + rnf   (:,:)  
     
    195229            fmmflx(:,:)          = fmmflx_tm  (:,:) * r1_ndttrc  
    196230            fr_i  (:,:)          = fr_i_tm    (:,:) * r1_ndttrc 
    197 # if defined key_trabbl 
    198             IF( nn_bbl_ldf == 1 ) THEN 
    199                ahu_bbl(:,:)      = ahu_bbl_tm (:,:) * r1_ndttrc   
    200                ahv_bbl(:,:)      = ahv_bbl_tm (:,:) * r1_ndttrc  
    201             ENDIF 
    202             IF( nn_bbl_adv == 1 ) THEN 
    203                utr_bbl(:,:)      = utr_bbl_tm (:,:) * r1_ndttrc   
    204                vtr_bbl(:,:)      = vtr_bbl_tm (:,:) * r1_ndttrc  
    205             ENDIF 
    206 # endif 
     231            IF( ln_trabbl ) THEN 
     232               IF( nn_bbl_ldf == 1 ) THEN 
     233                  ahu_bbl(:,:)      = ahu_bbl_tm (:,:) * r1_ndttrc   
     234                  ahv_bbl(:,:)      = ahv_bbl_tm (:,:) * r1_ndttrc  
     235               ENDIF 
     236               IF( nn_bbl_adv == 1 ) THEN 
     237                  utr_bbl(:,:)      = utr_bbl_tm (:,:) * r1_ndttrc   
     238                  vtr_bbl(:,:)      = vtr_bbl_tm (:,:) * r1_ndttrc  
     239               ENDIF 
     240            ENDIF 
    207241         ELSE 
    208242            wndm  (:,:)          = wndm_tm    (:,:) * r1_ndttrcp1  
     
    211245            fmmflx(:,:)          = fmmflx_tm  (:,:) * r1_ndttrcp1  
    212246            fr_i  (:,:)          = fr_i_tm    (:,:) * r1_ndttrcp1  
    213 # if defined key_trabbl 
    214             IF( nn_bbl_ldf == 1 ) THEN 
    215                ahu_bbl(:,:)      = ahu_bbl_tm (:,:) * r1_ndttrcp1   
    216                ahv_bbl(:,:)      = ahv_bbl_tm (:,:) * r1_ndttrcp1  
    217             ENDIF 
    218             IF( nn_bbl_adv == 1 ) THEN 
    219                utr_bbl(:,:)      = utr_bbl_tm (:,:) * r1_ndttrcp1   
    220                vtr_bbl(:,:)      = vtr_bbl_tm (:,:) * r1_ndttrcp1  
    221             ENDIF 
    222 # endif 
     247            IF( ln_trabbl ) THEN 
     248               IF( nn_bbl_ldf == 1 ) THEN 
     249                  ahu_bbl(:,:)      = ahu_bbl_tm (:,:) * r1_ndttrcp1   
     250                  ahv_bbl(:,:)      = ahv_bbl_tm (:,:) * r1_ndttrcp1  
     251               ENDIF 
     252               IF( nn_bbl_adv == 1 ) THEN 
     253                  utr_bbl(:,:)      = utr_bbl_tm (:,:) * r1_ndttrcp1   
     254                  vtr_bbl(:,:)      = vtr_bbl_tm (:,:) * r1_ndttrcp1  
     255               ENDIF 
     256            ENDIF 
    223257         ENDIF 
    224258         ! 
     
    298332 
    299333      ! Physics variables that are set after initialization: 
    300       fr_i_tm(:,:) = 0._wp 
    301       emp_tm (:,:) = 0._wp 
     334      fr_i_tm  (:,:) = 0._wp 
     335      emp_tm   (:,:) = 0._wp 
    302336      fmmflx_tm(:,:)  = 0._wp 
    303       qsr_tm (:,:) = 0._wp 
    304       wndm_tm(:,:) = 0._wp 
    305 # if defined key_trabbl 
    306       IF( nn_bbl_ldf == 1 ) THEN 
    307          ahu_bbl_tm(:,:) = 0._wp 
    308          ahv_bbl_tm(:,:) = 0._wp 
    309       ENDIF 
    310       IF( nn_bbl_adv == 1 ) THEN 
    311          utr_bbl_tm(:,:) = 0._wp 
    312          vtr_bbl_tm(:,:) = 0._wp 
    313       ENDIF 
    314 # endif 
     337      qsr_tm   (:,:) = 0._wp 
     338      wndm_tm  (:,:) = 0._wp 
     339      IF( ln_trabbl ) THEN 
     340         IF( nn_bbl_ldf == 1 ) THEN 
     341            ahu_bbl_tm(:,:) = 0._wp 
     342            ahv_bbl_tm(:,:) = 0._wp 
     343         ENDIF 
     344         IF( nn_bbl_adv == 1 ) THEN 
     345            utr_bbl_tm(:,:) = 0._wp 
     346            vtr_bbl_tm(:,:) = 0._wp 
     347         ENDIF 
     348      ENDIF 
    315349      ! 
    316350      IF( nn_timing == 1 )  CALL timing_stop('trc_sub_ini') 
     
    359393      qsr   (:,:)     =  qsr_temp   (:,:) 
    360394      wndm  (:,:)     =  wndm_temp  (:,:) 
    361 # if defined key_trabbl 
    362       IF( nn_bbl_ldf == 1 ) THEN 
    363          ahu_bbl(:,:) = ahu_bbl_temp(:,:)  
    364          ahv_bbl(:,:) = ahv_bbl_temp(:,:)  
    365       ENDIF 
    366       IF( nn_bbl_adv == 1 ) THEN 
    367          utr_bbl(:,:) = utr_bbl_temp(:,:)  
    368          vtr_bbl(:,:) = vtr_bbl_temp(:,:)  
    369       ENDIF 
    370 # endif 
     395      IF( ln_trabbl ) THEN 
     396         IF( nn_bbl_ldf == 1 ) THEN 
     397            ahu_bbl(:,:) = ahu_bbl_temp(:,:)  
     398            ahv_bbl(:,:) = ahv_bbl_temp(:,:)  
     399         ENDIF 
     400         IF( nn_bbl_adv == 1 ) THEN 
     401            utr_bbl(:,:) = utr_bbl_temp(:,:)  
     402            vtr_bbl(:,:) = vtr_bbl_temp(:,:)  
     403         ENDIF 
     404      ENDIF 
    371405      ! 
    372406      hdivn (:,:,:)   =  hdivn_temp (:,:,:) 
     
    397431      qsr_tm     (:,:) = qsr   (:,:) 
    398432      wndm_tm    (:,:) = wndm  (:,:) 
    399 # if defined key_trabbl 
    400       IF( nn_bbl_ldf == 1 ) THEN 
    401          ahu_bbl_tm(:,:) = ahu_bbl(:,:)  
    402          ahv_bbl_tm(:,:) = ahv_bbl(:,:)  
    403       ENDIF 
    404       IF( nn_bbl_adv == 1 ) THEN 
    405          utr_bbl_tm(:,:) = utr_bbl(:,:)  
    406          vtr_bbl_tm(:,:) = vtr_bbl(:,:)  
    407       ENDIF 
    408 # endif 
     433      IF( ln_trabbl ) THEN 
     434         IF( nn_bbl_ldf == 1 ) THEN 
     435            ahu_bbl_tm(:,:) = ahu_bbl(:,:)  
     436            ahv_bbl_tm(:,:) = ahv_bbl(:,:)  
     437         ENDIF 
     438         IF( nn_bbl_adv == 1 ) THEN 
     439            utr_bbl_tm(:,:) = utr_bbl(:,:)  
     440            vtr_bbl_tm(:,:) = vtr_bbl(:,:)  
     441         ENDIF 
     442      ENDIF 
    409443      ! 
    410444      ! 
     
    509543      !!------------------------------------------------------------------- 
    510544      USE lib_mpp, ONLY: ctl_warn 
    511       INTEGER ::  ierr 
    512       !!------------------------------------------------------------------- 
    513       ! 
    514       ALLOCATE( un_temp(jpi,jpj,jpk)        ,  vn_temp(jpi,jpj,jpk)  ,   & 
    515          &      wn_temp(jpi,jpj,jpk)        ,                            & 
    516          &      rhop_temp(jpi,jpj,jpk)      ,  rhop_tm(jpi,jpj,jpk) ,   & 
    517          &      sshn_temp(jpi,jpj)          ,  sshb_temp(jpi,jpj) ,      & 
    518          &      ssha_temp(jpi,jpj)          ,                           & 
    519 #if defined key_trabbl 
    520          &      ahu_bbl_temp(jpi,jpj)       ,  ahv_bbl_temp(jpi,jpj),    & 
    521          &      utr_bbl_temp(jpi,jpj)       ,  vtr_bbl_temp(jpi,jpj),    & 
    522 #endif 
    523          &      rnf_temp(jpi,jpj)           ,  h_rnf_temp(jpi,jpj) ,     & 
    524          &      tsn_temp(jpi,jpj,jpk,2)     ,  emp_b_temp(jpi,jpj),      & 
    525          &      emp_temp(jpi,jpj)           ,  fmmflx_temp(jpi,jpj),     & 
    526          &      hmld_temp(jpi,jpj)          ,  qsr_temp(jpi,jpj) ,       & 
    527          &      fr_i_temp(jpi,jpj)          ,  fr_i_tm(jpi,jpj) ,        & 
    528          &      wndm_temp(jpi,jpj)          ,  wndm_tm(jpi,jpj) ,        & 
    529          &      avs_tm(jpi,jpj,jpk)         ,  avs_temp(jpi,jpj,jpk) ,   & 
    530          &      hdivn_temp(jpi,jpj,jpk)     ,  hdivb_temp(jpi,jpj,jpk),  & 
    531          &      un_tm(jpi,jpj,jpk)          ,  vn_tm(jpi,jpj,jpk)  ,     & 
    532          &      sshn_tm(jpi,jpj)            ,  sshb_hold(jpi,jpj) ,      & 
    533          &      tsn_tm(jpi,jpj,jpk,2)       ,                            & 
    534          &      emp_tm(jpi,jpj)             ,  fmmflx_tm(jpi,jpj)  ,     & 
    535          &      emp_b_hold(jpi,jpj)         ,                            & 
    536          &      hmld_tm(jpi,jpj)            ,  qsr_tm(jpi,jpj) ,         & 
    537 #if defined key_trabbl 
    538          &      ahu_bbl_tm(jpi,jpj)         ,  ahv_bbl_tm(jpi,jpj),      & 
    539          &      utr_bbl_tm(jpi,jpj)         ,  vtr_bbl_tm(jpi,jpj),      & 
    540 #endif 
    541          &      rnf_tm(jpi,jpj)             ,  h_rnf_tm(jpi,jpj) , STAT=trc_sub_alloc )   
     545      INTEGER ::  ierr(3) 
     546      !!------------------------------------------------------------------- 
     547      ! 
     548      ierr(:) = 0 
     549      ! 
     550      ALLOCATE( un_temp(jpi,jpj,jpk)      ,  vn_temp(jpi,jpj,jpk)   ,     & 
     551         &      wn_temp(jpi,jpj,jpk)      ,                               & 
     552         &      rhop_temp(jpi,jpj,jpk)    ,  rhop_tm(jpi,jpj,jpk)   ,     & 
     553         &      sshn_temp(jpi,jpj)        ,  sshb_temp(jpi,jpj)     ,     & 
     554         &      ssha_temp(jpi,jpj)        ,                               & 
     555         &      rnf_temp(jpi,jpj)         ,  h_rnf_temp(jpi,jpj)    ,     & 
     556         &      tsn_temp(jpi,jpj,jpk,2)   ,  emp_b_temp(jpi,jpj)    ,     & 
     557         &      emp_temp(jpi,jpj)         ,  fmmflx_temp(jpi,jpj)   ,     & 
     558         &      hmld_temp(jpi,jpj)        ,  qsr_temp(jpi,jpj)      ,     & 
     559         &      fr_i_temp(jpi,jpj)        ,  fr_i_tm(jpi,jpj)       ,     & 
     560         &      wndm_temp(jpi,jpj)        ,  wndm_tm(jpi,jpj)       ,     & 
     561         &      avs_tm(jpi,jpj,jpk)       ,  avs_temp(jpi,jpj,jpk)  ,     & 
     562         &      hdivn_temp(jpi,jpj,jpk)   ,  hdivb_temp(jpi,jpj,jpk),     & 
     563         &      un_tm(jpi,jpj,jpk)        ,  vn_tm(jpi,jpj,jpk)     ,     & 
     564         &      sshn_tm(jpi,jpj)          ,  sshb_hold(jpi,jpj)     ,     & 
     565         &      tsn_tm(jpi,jpj,jpk,2)     ,                               & 
     566         &      emp_tm(jpi,jpj)           ,  fmmflx_tm(jpi,jpj)     ,     & 
     567         &      emp_b_hold(jpi,jpj)       ,                               & 
     568         &      hmld_tm(jpi,jpj)          ,  qsr_tm(jpi,jpj)        ,     & 
     569         &      rnf_tm(jpi,jpj)           ,  h_rnf_tm(jpi,jpj)      , STAT=ierr(1) )   
     570      ! 
     571      IF( l_ldfslp ) THEN 
     572         ALLOCATE( uslp_temp(jpi,jpj,jpk) ,  wslpi_temp(jpi,jpj,jpk),     & 
     573            &      vslp_temp(jpi,jpj,jpk) ,  wslpj_temp(jpi,jpj,jpk),     & 
     574            &      uslp_tm  (jpi,jpj,jpk) ,  wslpi_tm  (jpi,jpj,jpk),     & 
     575            &      vslp_tm  (jpi,jpj,jpk) ,  wslpj_tm  (jpi,jpj,jpk), STAT=ierr(2) ) 
     576      ENDIF 
     577      IF( ln_trabbl ) THEN 
     578         ALLOCATE( ahu_bbl_temp(jpi,jpj)  , utr_bbl_temp(jpi,jpj)   ,     & 
     579            &      ahv_bbl_temp(jpi,jpj)  , vtr_bbl_temp(jpi,jpj)   ,     & 
     580            &      ahu_bbl_tm  (jpi,jpj)  , utr_bbl_tm  (jpi,jpj)   ,     & 
     581            &      ahv_bbl_tm  (jpi,jpj)  , vtr_bbl_tm  (jpi,jpj)   , STAT=ierr(3) )  
     582      ENDIF 
     583      ! 
     584      trc_sub_alloc = MAXVAL( ierr ) 
    542585      ! 
    543586      IF( trc_sub_alloc /= 0 )   CALL ctl_warn('trc_sub_alloc: failed to allocate arrays') 
    544       ! 
    545       IF( l_ldfslp ) THEN 
    546          ALLOCATE( uslp_temp(jpi,jpj,jpk)   ,  wslpi_temp(jpi,jpj,jpk),      & 
    547             &      vslp_temp(jpi,jpj,jpk)   ,  wslpj_temp(jpi,jpj,jpk),      & 
    548             &      uslp_tm  (jpi,jpj,jpk)   ,  wslpi_tm  (jpi,jpj,jpk),      & 
    549             &      vslp_tm  (jpi,jpj,jpk)   ,  wslpj_tm  (jpi,jpj,jpk),  STAT=trc_sub_alloc ) 
    550       ENDIF 
    551       ! 
    552       IF( trc_sub_alloc /= 0 )   CALL ctl_warn('trc_sub_alloc: failed to allocate ldf_slp arrays') 
    553587      ! 
    554588   END FUNCTION trc_sub_alloc 
Note: See TracChangeset for help on using the changeset viewer.