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 5951 for branches/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/TOP_SRC/trcsub.F90 – NEMO

Ignore:
Timestamp:
2015-11-30T12:48:01+01:00 (8 years ago)
Author:
timgraham
Message:

Merged trunk r5936 into branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/TOP_SRC/trcsub.F90

    r5950 r5951  
    2525   USE zdf_oce 
    2626   USE domvvl 
    27    USE divcur          ! hor. divergence and curl      (div & cur routines) 
     27   USE divhor          ! horizontal divergence            (div_hor routine) 
    2828   USE sbcrnf, ONLY: h_rnf, nk_rnf   ! River runoff  
    2929   USE bdy_oce 
     
    4444   REAL(wp)  :: r1_ndttrcp1   !    1 / (nn_dttrc+1)  
    4545 
    46    !!* Substitution 
    47 #  include "top_substitute.h90" 
     46   !                                                       !* iso-neutral slopes (if l_ldfslp=T) 
     47   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  uslp_temp, vslp_temp, wslpi_temp, wslpj_temp   !: hold current values  
     48   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  uslp_tm  , vslp_tm  , wslpi_tm  , wslpj_tm     !: time mean  
     49 
     50   !! * Substitutions 
     51#  include "domzgr_substitute.h90" 
    4852   !!---------------------------------------------------------------------- 
    4953   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     
    9397          avs_tm  (:,:,:)        = avs_tm  (:,:,:)        + avs  (:,:,:)        * fse3w(:,:,:)   
    9498# endif 
    95 #if defined key_ldfslp 
    96           wslpi_tm(:,:,:)        = wslpi_tm(:,:,:)        + wslpi(:,:,:) 
    97           wslpj_tm(:,:,:)        = wslpj_tm(:,:,:)        + wslpj(:,:,:) 
    98           uslp_tm (:,:,:)        = uslp_tm (:,:,:)        + uslp (:,:,:) 
    99           vslp_tm (:,:,:)        = vslp_tm (:,:,:)        + vslp (:,:,:) 
    100 #endif 
     99         IF( l_ldfslp ) THEN 
     100            uslp_tm (:,:,:)      = uslp_tm (:,:,:)        + uslp (:,:,:) 
     101            vslp_tm (:,:,:)      = vslp_tm (:,:,:)        + vslp (:,:,:) 
     102            wslpi_tm(:,:,:)      = wslpi_tm(:,:,:)        + wslpi(:,:,:) 
     103            wslpj_tm(:,:,:)      = wslpj_tm(:,:,:)        + wslpj(:,:,:) 
     104         ENDIF 
    101105# if defined key_trabbl 
    102106          IF( nn_bbl_ldf == 1 ) THEN 
     
    131135         avs_temp   (:,:,:)      = avs   (:,:,:) 
    132136# endif 
    133 #if defined key_ldfslp 
    134          wslpi_temp (:,:,:)      = wslpi (:,:,:) 
    135          wslpj_temp (:,:,:)      = wslpj (:,:,:) 
    136          uslp_temp  (:,:,:)      = uslp  (:,:,:) 
    137          vslp_temp  (:,:,:)      = vslp  (:,:,:) 
    138 #endif 
     137         IF( l_ldfslp ) THEN 
     138            uslp_temp  (:,:,:)   = uslp  (:,:,:)   ;   wslpi_temp (:,:,:)   = wslpi (:,:,:) 
     139            vslp_temp  (:,:,:)   = vslp  (:,:,:)   ;   wslpj_temp (:,:,:)   = wslpj (:,:,:) 
     140         ENDIF 
    139141# if defined key_trabbl 
    140142          IF( nn_bbl_ldf == 1 ) THEN 
     
    160162         wndm_temp  (:,:)        = wndm  (:,:) 
    161163         !                                    !  Variables reset in trc_sub_ssh 
    162          rotn_temp  (:,:,:)      = rotn  (:,:,:) 
    163164         hdivn_temp (:,:,:)      = hdivn (:,:,:) 
    164          rotb_temp  (:,:,:)      = rotb  (:,:,:) 
    165          hdivb_temp (:,:,:)      = hdivb (:,:,:) 
    166165         ! 
    167166         ! 2. Create averages and reassign variables 
     
    175174         avs_tm   (:,:,:)        = avs_tm  (:,:,:)        + avs  (:,:,:)        * fse3w(:,:,:)   
    176175# endif 
    177 #if defined key_ldfslp 
    178          wslpi_tm (:,:,:)        = wslpi_tm(:,:,:)        + wslpi(:,:,:)  
    179          wslpj_tm (:,:,:)        = wslpj_tm(:,:,:)        + wslpj(:,:,:)  
    180          uslp_tm  (:,:,:)        = uslp_tm (:,:,:)        + uslp (:,:,:)  
    181          vslp_tm  (:,:,:)        = vslp_tm (:,:,:)        + vslp (:,:,:) 
    182 #endif 
     176         IF( l_ldfslp ) THEN 
     177            uslp_tm  (:,:,:)     = uslp_tm (:,:,:)        + uslp (:,:,:)  
     178            vslp_tm  (:,:,:)     = vslp_tm (:,:,:)        + vslp (:,:,:) 
     179            wslpi_tm (:,:,:)     = wslpi_tm(:,:,:)        + wslpi(:,:,:)  
     180            wslpj_tm (:,:,:)     = wslpj_tm(:,:,:)        + wslpj(:,:,:)  
     181         ENDIF 
    183182# if defined key_trabbl 
    184183          IF( nn_bbl_ldf == 1 ) THEN 
     
    255254                  tsn  (ji,jj,jk,jp_sal) = tsn_tm  (ji,jj,jk,jp_sal) * z1_ne3t 
    256255                  rhop (ji,jj,jk)        = rhop_tm (ji,jj,jk)        * z1_ne3t 
     256!!gm : BUG? ==>> for avt & avs I don't understand the division by e3w 
    257257                  avt  (ji,jj,jk)        = avt_tm  (ji,jj,jk)        * z1_ne3w 
    258258# if defined key_zdfddm 
    259259                  avs  (ji,jj,jk)        = avs_tm  (ji,jj,jk)        * z1_ne3w 
    260260# endif 
    261 #if defined key_ldfslp 
    262                   wslpi(ji,jj,jk)        = wslpi_tm(ji,jj,jk)  
    263                   wslpj(ji,jj,jk)        = wslpj_tm(ji,jj,jk) 
    264                   uslp (ji,jj,jk)        = uslp_tm (ji,jj,jk) 
    265                   vslp (ji,jj,jk)        = vslp_tm (ji,jj,jk) 
    266 #endif 
    267                ENDDO 
    268             ENDDO 
    269          ENDDO 
     261               END DO 
     262            END DO 
     263         END DO 
     264         IF( l_ldfslp ) THEN 
     265            wslpi(:,:,:)        = wslpi_tm(:,:,:)  
     266            wslpj(:,:,:)        = wslpj_tm(:,:,:) 
     267            uslp (:,:,:)        = uslp_tm (:,:,:) 
     268            vslp (:,:,:)        = vslp_tm (:,:,:) 
     269         ENDIF 
    270270         ! 
    271271         CALL trc_sub_ssh( kt )         ! after ssh & vertical velocity 
     
    276276      ! 
    277277   END SUBROUTINE trc_sub_stp 
     278 
    278279 
    279280   SUBROUTINE trc_sub_ini 
     
    304305      tsn_tm  (:,:,:,jp_sal) = tsn  (:,:,:,jp_sal) * fse3t(:,:,:)   
    305306      rhop_tm (:,:,:)        = rhop (:,:,:)        * fse3t(:,:,:)   
     307!!gm : BUG? ==>> for avt & avs I don't understand the division by e3w 
    306308      avt_tm  (:,:,:)        = avt  (:,:,:)        * fse3w(:,:,:)   
    307309# if defined key_zdfddm 
    308310      avs_tm  (:,:,:)        = avs  (:,:,:)        * fse3w(:,:,:)   
    309311# endif 
    310 #if defined key_ldfslp 
    311       wslpi_tm(:,:,:)        = wslpi(:,:,:) 
    312       wslpj_tm(:,:,:)        = wslpj(:,:,:) 
    313       uslp_tm (:,:,:)        = uslp (:,:,:) 
    314       vslp_tm (:,:,:)        = vslp (:,:,:) 
    315 #endif 
     312      IF( l_ldfslp ) THEN 
     313         wslpi_tm(:,:,:)     = wslpi(:,:,:) 
     314         wslpj_tm(:,:,:)     = wslpj(:,:,:) 
     315         uslp_tm (:,:,:)     = uslp (:,:,:) 
     316         vslp_tm (:,:,:)     = vslp (:,:,:) 
     317      ENDIF 
    316318      sshn_tm  (:,:) = sshn  (:,:)  
    317319      rnf_tm   (:,:) = rnf   (:,:)  
     
    365367      avs   (:,:,:)   =  avs_temp   (:,:,:) 
    366368# endif 
    367 #if defined key_ldfslp 
    368       wslpi (:,:,:)   =  wslpi_temp (:,:,:) 
    369       wslpj (:,:,:)   =  wslpj_temp (:,:,:) 
    370       uslp  (:,:,:)   =  uslp_temp  (:,:,:) 
    371       vslp  (:,:,:)   =  vslp_temp  (:,:,:) 
    372 #endif 
     369      IF( l_ldfslp ) THEN 
     370         wslpi (:,:,:)=  wslpi_temp (:,:,:) 
     371         wslpj (:,:,:)=  wslpj_temp (:,:,:) 
     372         uslp  (:,:,:)=  uslp_temp  (:,:,:) 
     373         vslp  (:,:,:)=  vslp_temp  (:,:,:) 
     374      ENDIF 
    373375      sshn  (:,:)     =  sshn_temp  (:,:) 
    374376      sshb  (:,:)     =  sshb_temp  (:,:) 
     
    396398      ! 
    397399      hdivn (:,:,:)   =  hdivn_temp (:,:,:) 
    398       rotn  (:,:,:)   =  rotn_temp  (:,:,:) 
    399       hdivb (:,:,:)   =  hdivb_temp (:,:,:) 
    400       rotb  (:,:,:)   =  rotb_temp  (:,:,:) 
    401400      !                                       
    402  
    403401      ! Start new averages 
    404402         un_tm   (:,:,:)        = un   (:,:,:)        * fse3u(:,:,:)  
     
    411409         avs_tm  (:,:,:)        = avs  (:,:,:)        * fse3w(:,:,:)   
    412410# endif 
    413 #if defined key_ldfslp 
     411      IF( l_ldfslp ) THEN 
     412         uslp_tm (:,:,:)        = uslp (:,:,:) 
     413         vslp_tm (:,:,:)        = vslp (:,:,:) 
    414414         wslpi_tm(:,:,:)        = wslpi(:,:,:)  
    415415         wslpj_tm(:,:,:)        = wslpj(:,:,:) 
    416          uslp_tm (:,:,:)        = uslp (:,:,:) 
    417          vslp_tm (:,:,:)        = vslp (:,:,:) 
    418 #endif 
     416      ENDIF 
    419417      ! 
    420418      sshb_hold  (:,:) = sshn  (:,:) 
     
    487485      ENDIF 
    488486      ! 
    489       CALL div_cur( kt )                              ! Horizontal divergence & Relative vorticity 
     487      CALL div_hor( kt )                              ! Horizontal divergence & Relative vorticity 
    490488      ! 
    491489      z2dt = 2._wp * rdt                              ! set time step size (Euler/Leapfrog) 
     
    504502      z1_rau0 = 0.5 / rau0 
    505503      ssha(:,:) = (  sshb(:,:) - z2dt * ( z1_rau0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * tmask(:,:,1) 
    506 #if ! defined key_dynspg_ts 
     504 
    507505      ! These lines are not necessary with time splitting since 
    508506      ! boundary condition on sea level is set during ts loop 
     
    514512      CALL lbc_lnk( ssha, 'T', 1. )  
    515513#endif 
    516 #endif 
    517  
    518514 
    519515      !                                           !------------------------------! 
     
    551547         &      sshn_temp(jpi,jpj)          ,  sshb_temp(jpi,jpj) ,      & 
    552548         &      ssha_temp(jpi,jpj)          ,                           & 
    553 #if defined key_ldfslp 
    554          &      wslpi_temp(jpi,jpj,jpk)     ,  wslpj_temp(jpi,jpj,jpk),  & 
    555          &      uslp_temp(jpi,jpj,jpk)      ,  vslp_temp(jpi,jpj,jpk),   & 
    556 #endif 
    557549#if defined key_trabbl 
    558550         &      ahu_bbl_temp(jpi,jpj)       ,  ahv_bbl_temp(jpi,jpj),    & 
     
    569561# endif 
    570562         &      hdivn_temp(jpi,jpj,jpk)     ,  hdivb_temp(jpi,jpj,jpk),  & 
    571          &      rotn_temp(jpi,jpj,jpk)      ,  rotb_temp(jpi,jpj,jpk),   & 
    572563         &      un_tm(jpi,jpj,jpk)          ,  vn_tm(jpi,jpj,jpk)  ,     & 
    573564         &      avt_tm(jpi,jpj,jpk)                                ,     & 
     
    577568         &      emp_b_hold(jpi,jpj)         ,                            & 
    578569         &      hmld_tm(jpi,jpj)            ,  qsr_tm(jpi,jpj) ,         & 
    579 #if defined key_ldfslp 
    580          &      wslpi_tm(jpi,jpj,jpk)       ,  wslpj_tm(jpi,jpj,jpk),    & 
    581          &      uslp_tm(jpi,jpj,jpk)        ,  vslp_tm(jpi,jpj,jpk),     & 
    582 #endif 
    583570#if defined key_trabbl 
    584571         &      ahu_bbl_tm(jpi,jpj)         ,  ahv_bbl_tm(jpi,jpj),      & 
    585572         &      utr_bbl_tm(jpi,jpj)         ,  vtr_bbl_tm(jpi,jpj),      & 
    586573#endif 
    587          &      rnf_tm(jpi,jpj)             ,  h_rnf_tm(jpi,jpj) ,       & 
    588          &                                    STAT=trc_sub_alloc )   
     574         &      rnf_tm(jpi,jpj)             ,  h_rnf_tm(jpi,jpj) , STAT=trc_sub_alloc )   
     575      ! 
    589576      IF( trc_sub_alloc /= 0 )   CALL ctl_warn('trc_sub_alloc: failed to allocate arrays') 
    590  
     577      ! 
     578      IF( l_ldfslp ) THEN 
     579         ALLOCATE( uslp_temp(jpi,jpj,jpk)   ,  wslpi_temp(jpi,jpj,jpk),      & 
     580            &      vslp_temp(jpi,jpj,jpk)   ,  wslpj_temp(jpi,jpj,jpk),      & 
     581            &      uslp_tm  (jpi,jpj,jpk)   ,  wslpi_tm  (jpi,jpj,jpk),      & 
     582            &      vslp_tm  (jpi,jpj,jpk)   ,  wslpj_tm  (jpi,jpj,jpk),  STAT=trc_sub_alloc ) 
     583      ENDIF 
     584      ! 
     585      IF( trc_sub_alloc /= 0 )   CALL ctl_warn('trc_sub_alloc: failed to allocate ldf_slp arrays') 
    591586      ! 
    592587   END FUNCTION trc_sub_alloc 
Note: See TracChangeset for help on using the changeset viewer.