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 9019 for branches/2017/dev_merge_2017/NEMOGCM/NEMO/TOP_SRC/trcsub.F90 – NEMO

Ignore:
Timestamp:
2017-12-13T15:58:53+01:00 (6 years ago)
Author:
timgraham
Message:

Merge of dev_CNRS_2017 into branch

File:
1 edited

Legend:

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

    r7646 r9019  
    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           avt_tm  (:,:,:)        = avt_tm  (:,:,:)        + avt  (:,:,:)        * e3w_n(:,:,:)   
    87 # if defined key_zdfddm 
    88           avs_tm  (:,:,:)        = avs_tm  (:,:,:)        + avs  (:,:,:)        * e3w_n(:,:,:)   
    89 # endif 
     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(:,:,:)   
    90121         IF( l_ldfslp ) THEN 
    91122            uslp_tm (:,:,:)      = uslp_tm (:,:,:)        + uslp (:,:,:) 
     
    94125            wslpj_tm(:,:,:)      = wslpj_tm(:,:,:)        + wslpj(:,:,:) 
    95126         ENDIF 
    96 # if defined key_trabbl 
    97           IF( nn_bbl_ldf == 1 ) THEN 
    98              ahu_bbl_tm(:,:)     = ahu_bbl_tm(:,:)        + ahu_bbl(:,:)  
    99              ahv_bbl_tm(:,:)     = ahv_bbl_tm(:,:)        + ahv_bbl(:,:)  
    100           ENDIF 
    101           IF( nn_bbl_adv == 1 ) THEN 
    102              utr_bbl_tm(:,:)     = utr_bbl_tm(:,:)        + utr_bbl(:,:)  
    103              vtr_bbl_tm(:,:)     = vtr_bbl_tm(:,:)        + vtr_bbl(:,:)  
    104           ENDIF 
    105 # endif 
    106           ! 
    107           sshn_tm  (:,:)         = sshn_tm  (:,:)         + sshn  (:,:)  
    108           rnf_tm   (:,:)         = rnf_tm   (:,:)         + rnf   (:,:)  
    109           h_rnf_tm (:,:)         = h_rnf_tm (:,:)         + h_rnf (:,:)  
    110           hmld_tm  (:,:)         = hmld_tm  (:,:)         + hmld  (:,:) 
    111           fr_i_tm  (:,:)         = fr_i_tm  (:,:)         + fr_i  (:,:) 
    112           emp_tm   (:,:)         = emp_tm   (:,:)         + emp   (:,:)  
    113           fmmflx_tm(:,:)         = fmmflx_tm(:,:)         + fmmflx(:,:) 
    114           qsr_tm   (:,:)         = qsr_tm   (:,:)         + qsr   (:,:) 
    115           wndm_tm  (:,:)         = wndm_tm  (:,:)         + wndm  (:,:) 
    116  
     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         ! 
    117148      ELSE                           !  It is time to substep  
    118          !   1. set temporary arrays to hold physics variables 
     149         !   1. set temporary arrays to hold physics/dynamical variables 
    119150         un_temp    (:,:,:)      = un    (:,:,:) 
    120151         vn_temp    (:,:,:)      = vn    (:,:,:) 
     
    122153         tsn_temp   (:,:,:,:)    = tsn   (:,:,:,:) 
    123154         rhop_temp  (:,:,:)      = rhop  (:,:,:)     
    124          avt_temp   (:,:,:)      = avt   (:,:,:) 
    125 # if defined key_zdfddm 
    126155         avs_temp   (:,:,:)      = avs   (:,:,:) 
    127 # endif 
    128156         IF( l_ldfslp ) THEN 
    129157            uslp_temp  (:,:,:)   = uslp  (:,:,:)   ;   wslpi_temp (:,:,:)   = wslpi (:,:,:) 
    130158            vslp_temp  (:,:,:)   = vslp  (:,:,:)   ;   wslpj_temp (:,:,:)   = wslpj (:,:,:) 
    131159         ENDIF 
    132 # if defined key_trabbl 
    133           IF( nn_bbl_ldf == 1 ) THEN 
    134              ahu_bbl_temp(:,:)   = ahu_bbl(:,:)   
    135              ahv_bbl_temp(:,:)   = ahv_bbl(:,:)  
    136           ENDIF 
    137           IF( nn_bbl_adv == 1 ) THEN 
    138              utr_bbl_temp(:,:)   = utr_bbl(:,:)  
    139              vtr_bbl_temp(:,:)   = vtr_bbl(:,:)  
    140           ENDIF 
    141 # 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  
    142170         sshn_temp  (:,:)        = sshn  (:,:) 
    143171         sshb_temp  (:,:)        = sshb  (:,:) 
     
    161189         tsn_tm   (:,:,:,jp_sal) = tsn_tm  (:,:,:,jp_sal) + tsn  (:,:,:,jp_sal) * e3t_n(:,:,:)   
    162190         rhop_tm (:,:,:)         = rhop_tm (:,:,:)        + rhop (:,:,:)        * e3t_n(:,:,:)   
    163          avt_tm   (:,:,:)        = avt_tm  (:,:,:)        + avt  (:,:,:)        * e3w_n(:,:,:)   
    164 # if defined key_zdfddm 
    165191         avs_tm   (:,:,:)        = avs_tm  (:,:,:)        + avs  (:,:,:)        * e3w_n(:,:,:)   
    166 # endif 
    167192         IF( l_ldfslp ) THEN 
    168193            uslp_tm  (:,:,:)     = uslp_tm (:,:,:)        + uslp (:,:,:)  
     
    171196            wslpj_tm (:,:,:)     = wslpj_tm(:,:,:)        + wslpj(:,:,:)  
    172197         ENDIF 
    173 # if defined key_trabbl 
    174           IF( nn_bbl_ldf == 1 ) THEN 
    175              ahu_bbl_tm(:,:)     = ahu_bbl_tm(:,:)        + ahu_bbl(:,:)  
    176              ahv_bbl_tm(:,:)     = ahv_bbl_tm(:,:)        + ahv_bbl(:,:)  
    177           ENDIF 
    178           IF( nn_bbl_adv == 1 ) THEN 
    179              utr_bbl_tm(:,:)     = utr_bbl_tm(:,:)        + utr_bbl(:,:)  
    180              vtr_bbl_tm(:,:)     = vtr_bbl_tm(:,:)        + vtr_bbl(:,:)  
    181           ENDIF 
    182 # 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  
    183208         sshn_tm  (:,:)          = sshn_tm    (:,:)       + sshn  (:,:)  
    184209         rnf_tm   (:,:)          = rnf_tm     (:,:)       + rnf   (:,:)  
     
    204229            fmmflx(:,:)          = fmmflx_tm  (:,:) * r1_ndttrc  
    205230            fr_i  (:,:)          = fr_i_tm    (:,:) * r1_ndttrc 
    206 # if defined key_trabbl 
    207             IF( nn_bbl_ldf == 1 ) THEN 
    208                ahu_bbl(:,:)      = ahu_bbl_tm (:,:) * r1_ndttrc   
    209                ahv_bbl(:,:)      = ahv_bbl_tm (:,:) * r1_ndttrc  
    210             ENDIF 
    211             IF( nn_bbl_adv == 1 ) THEN 
    212                utr_bbl(:,:)      = utr_bbl_tm (:,:) * r1_ndttrc   
    213                vtr_bbl(:,:)      = vtr_bbl_tm (:,:) * r1_ndttrc  
    214             ENDIF 
    215 # 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 
    216241         ELSE 
    217242            wndm  (:,:)          = wndm_tm    (:,:) * r1_ndttrcp1  
     
    220245            fmmflx(:,:)          = fmmflx_tm  (:,:) * r1_ndttrcp1  
    221246            fr_i  (:,:)          = fr_i_tm    (:,:) * r1_ndttrcp1  
    222 # if defined key_trabbl 
    223             IF( nn_bbl_ldf == 1 ) THEN 
    224                ahu_bbl(:,:)      = ahu_bbl_tm (:,:) * r1_ndttrcp1   
    225                ahv_bbl(:,:)      = ahv_bbl_tm (:,:) * r1_ndttrcp1  
    226             ENDIF 
    227             IF( nn_bbl_adv == 1 ) THEN 
    228                utr_bbl(:,:)      = utr_bbl_tm (:,:) * r1_ndttrcp1   
    229                vtr_bbl(:,:)      = vtr_bbl_tm (:,:) * r1_ndttrcp1  
    230             ENDIF 
    231 # 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 
    232257         ENDIF 
    233258         ! 
     
    245270                  tsn  (ji,jj,jk,jp_sal) = tsn_tm  (ji,jj,jk,jp_sal) * z1_ne3t 
    246271                  rhop (ji,jj,jk)        = rhop_tm (ji,jj,jk)        * z1_ne3t 
    247 !!gm : BUG? ==>> for avt & avs I don't understand the division by e3w 
    248                   avt  (ji,jj,jk)        = avt_tm  (ji,jj,jk)        * z1_ne3w 
    249 # if defined key_zdfddm 
     272!!gm : BUG ==>> for avs I don't understand the division by e3w 
    250273                  avs  (ji,jj,jk)        = avs_tm  (ji,jj,jk)        * z1_ne3w 
    251 # endif 
    252274               END DO 
    253275            END DO 
     
    264286      ENDIF 
    265287      ! 
    266       IF( nn_timing == 1 )  CALL timing_start('trc_sub_stp') 
     288      IF( nn_timing == 1 )  CALL timing_stop('trc_sub_stp') 
    267289      ! 
    268290   END SUBROUTINE trc_sub_stp 
     
    297319      rhop_tm (:,:,:)        = rhop (:,:,:)        * e3t_n(:,:,:)   
    298320!!gm : BUG? ==>> for avt & avs I don't understand the division by e3w 
    299       avt_tm  (:,:,:)        = avt  (:,:,:)        * e3w_n(:,:,:)   
    300 # if defined key_zdfddm 
    301321      avs_tm  (:,:,:)        = avs  (:,:,:)        * e3w_n(:,:,:)   
    302 # endif 
    303322      IF( l_ldfslp ) THEN 
    304323         wslpi_tm(:,:,:)     = wslpi(:,:,:) 
     
    313332 
    314333      ! Physics variables that are set after initialization: 
    315       fr_i_tm(:,:) = 0._wp 
    316       emp_tm (:,:) = 0._wp 
     334      fr_i_tm  (:,:) = 0._wp 
     335      emp_tm   (:,:) = 0._wp 
    317336      fmmflx_tm(:,:)  = 0._wp 
    318       qsr_tm (:,:) = 0._wp 
    319       wndm_tm(:,:) = 0._wp 
    320 # if defined key_trabbl 
    321       IF( nn_bbl_ldf == 1 ) THEN 
    322          ahu_bbl_tm(:,:) = 0._wp 
    323          ahv_bbl_tm(:,:) = 0._wp 
    324       ENDIF 
    325       IF( nn_bbl_adv == 1 ) THEN 
    326          utr_bbl_tm(:,:) = 0._wp 
    327          vtr_bbl_tm(:,:) = 0._wp 
    328       ENDIF 
    329 # 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 
    330349      ! 
    331350      IF( nn_timing == 1 )  CALL timing_stop('trc_sub_ini') 
     
    354373      tsn   (:,:,:,:) =  tsn_temp   (:,:,:,:) 
    355374      rhop  (:,:,:)   =  rhop_temp  (:,:,:) 
    356       avt   (:,:,:)   =  avt_temp   (:,:,:) 
    357 # if defined key_zdfddm 
    358375      avs   (:,:,:)   =  avs_temp   (:,:,:) 
    359 # endif 
    360376      IF( l_ldfslp ) THEN 
    361377         wslpi (:,:,:)=  wslpi_temp (:,:,:) 
     
    377393      qsr   (:,:)     =  qsr_temp   (:,:) 
    378394      wndm  (:,:)     =  wndm_temp  (:,:) 
    379 # if defined key_trabbl 
    380       IF( nn_bbl_ldf == 1 ) THEN 
    381          ahu_bbl(:,:) = ahu_bbl_temp(:,:)  
    382          ahv_bbl(:,:) = ahv_bbl_temp(:,:)  
    383       ENDIF 
    384       IF( nn_bbl_adv == 1 ) THEN 
    385          utr_bbl(:,:) = utr_bbl_temp(:,:)  
    386          vtr_bbl(:,:) = vtr_bbl_temp(:,:)  
    387       ENDIF 
    388 # 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 
    389405      ! 
    390406      hdivn (:,:,:)   =  hdivn_temp (:,:,:) 
     
    396412         tsn_tm  (:,:,:,jp_sal) = tsn  (:,:,:,jp_sal) * e3t_n(:,:,:)   
    397413         rhop_tm (:,:,:)        = rhop (:,:,:)        * e3t_n(:,:,:)   
    398          avt_tm  (:,:,:)        = avt  (:,:,:)        * e3w_n(:,:,:)   
    399 # if defined key_zdfddm 
    400414         avs_tm  (:,:,:)        = avs  (:,:,:)        * e3w_n(:,:,:)   
    401 # endif 
    402415      IF( l_ldfslp ) THEN 
    403416         uslp_tm (:,:,:)        = uslp (:,:,:) 
     
    418431      qsr_tm     (:,:) = qsr   (:,:) 
    419432      wndm_tm    (:,:) = wndm  (:,:) 
    420 # if defined key_trabbl 
    421       IF( nn_bbl_ldf == 1 ) THEN 
    422          ahu_bbl_tm(:,:) = ahu_bbl(:,:)  
    423          ahv_bbl_tm(:,:) = ahv_bbl(:,:)  
    424       ENDIF 
    425       IF( nn_bbl_adv == 1 ) THEN 
    426          utr_bbl_tm(:,:) = utr_bbl(:,:)  
    427          vtr_bbl_tm(:,:) = vtr_bbl(:,:)  
    428       ENDIF 
    429 # 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 
    430443      ! 
    431444      ! 
     
    530543      !!------------------------------------------------------------------- 
    531544      USE lib_mpp, ONLY: ctl_warn 
    532       INTEGER ::  ierr 
    533       !!------------------------------------------------------------------- 
    534       ! 
    535       ALLOCATE( un_temp(jpi,jpj,jpk)        ,  vn_temp(jpi,jpj,jpk)  ,   & 
    536          &      wn_temp(jpi,jpj,jpk)        ,  avt_temp(jpi,jpj,jpk) ,   & 
    537          &      rhop_temp(jpi,jpj,jpk)      ,  rhop_tm(jpi,jpj,jpk) ,   & 
    538          &      sshn_temp(jpi,jpj)          ,  sshb_temp(jpi,jpj) ,      & 
    539          &      ssha_temp(jpi,jpj)          ,                           & 
    540 #if defined key_trabbl 
    541          &      ahu_bbl_temp(jpi,jpj)       ,  ahv_bbl_temp(jpi,jpj),    & 
    542          &      utr_bbl_temp(jpi,jpj)       ,  vtr_bbl_temp(jpi,jpj),    & 
    543 #endif 
    544          &      rnf_temp(jpi,jpj)           ,  h_rnf_temp(jpi,jpj) ,     & 
    545          &      tsn_temp(jpi,jpj,jpk,2)     ,  emp_b_temp(jpi,jpj),      & 
    546          &      emp_temp(jpi,jpj)           ,  fmmflx_temp(jpi,jpj),     & 
    547          &      hmld_temp(jpi,jpj)          ,  qsr_temp(jpi,jpj) ,       & 
    548          &      fr_i_temp(jpi,jpj)          ,  fr_i_tm(jpi,jpj) ,        & 
    549          &      wndm_temp(jpi,jpj)          ,  wndm_tm(jpi,jpj) ,        & 
    550 # if defined key_zdfddm 
    551          &      avs_tm(jpi,jpj,jpk)         ,  avs_temp(jpi,jpj,jpk) ,   & 
    552 # endif 
    553          &      hdivn_temp(jpi,jpj,jpk)     ,  hdivb_temp(jpi,jpj,jpk),  & 
    554          &      un_tm(jpi,jpj,jpk)          ,  vn_tm(jpi,jpj,jpk)  ,     & 
    555          &      avt_tm(jpi,jpj,jpk)                                ,     & 
    556          &      sshn_tm(jpi,jpj)            ,  sshb_hold(jpi,jpj) ,      & 
    557          &      tsn_tm(jpi,jpj,jpk,2)       ,                            & 
    558          &      emp_tm(jpi,jpj)             ,  fmmflx_tm(jpi,jpj)  ,     & 
    559          &      emp_b_hold(jpi,jpj)         ,                            & 
    560          &      hmld_tm(jpi,jpj)            ,  qsr_tm(jpi,jpj) ,         & 
    561 #if defined key_trabbl 
    562          &      ahu_bbl_tm(jpi,jpj)         ,  ahv_bbl_tm(jpi,jpj),      & 
    563          &      utr_bbl_tm(jpi,jpj)         ,  vtr_bbl_tm(jpi,jpj),      & 
    564 #endif 
    565          &      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 ) 
    566585      ! 
    567586      IF( trc_sub_alloc /= 0 )   CALL ctl_warn('trc_sub_alloc: failed to allocate arrays') 
    568       ! 
    569       IF( l_ldfslp ) THEN 
    570          ALLOCATE( uslp_temp(jpi,jpj,jpk)   ,  wslpi_temp(jpi,jpj,jpk),      & 
    571             &      vslp_temp(jpi,jpj,jpk)   ,  wslpj_temp(jpi,jpj,jpk),      & 
    572             &      uslp_tm  (jpi,jpj,jpk)   ,  wslpi_tm  (jpi,jpj,jpk),      & 
    573             &      vslp_tm  (jpi,jpj,jpk)   ,  wslpj_tm  (jpi,jpj,jpk),  STAT=trc_sub_alloc ) 
    574       ENDIF 
    575       ! 
    576       IF( trc_sub_alloc /= 0 )   CALL ctl_warn('trc_sub_alloc: failed to allocate ldf_slp arrays') 
    577587      ! 
    578588   END FUNCTION trc_sub_alloc 
Note: See TracChangeset for help on using the changeset viewer.