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 9863 for NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/TRP/trcnxt.F90 – NEMO

Ignore:
Timestamp:
2018-06-30T12:51:02+02:00 (6 years ago)
Author:
gm
Message:

#1911 (ENHANCE-04): simplified implementation of the Euler stepping at nit000

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/TRP/trcnxt.F90

    r9598 r9863  
    2424   !!   'key_top'                                                TOP models 
    2525   !!---------------------------------------------------------------------- 
    26    !!   trc_nxt     : time stepping on passive tracers 
    27    !!---------------------------------------------------------------------- 
    28    USE oce_trc         ! ocean dynamics and tracers variables 
    29    USE trc             ! ocean passive tracers variables 
    30    USE trd_oce 
    31    USE trdtra 
    32    USE tranxt 
    33    USE bdy_oce   , ONLY: ln_bdy 
    34    USE trcbdy          ! BDY open boundaries 
     26 
     27   !!---------------------------------------------------------------------- 
     28   !!   trc_nxt       : time stepping on passive tracers 
     29   !!---------------------------------------------------------------------- 
     30   USE oce_trc        ! ocean dynamics and tracers variables 
     31   USE trc            ! ocean passive tracers variables 
     32   USE trd_oce        !  
     33   USE trdtra         ! 
     34   USE tranxt         ! 
     35   USE bdy_oce , ONLY : ln_bdy 
     36   USE trcbdy         ! BDY open boundaries 
    3537# if defined key_agrif 
    3638   USE agrif_top_interp 
    3739# endif 
    3840   ! 
    39    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    40    USE prtctl_trc      ! Print control for debbuging 
     41   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     42   USE prtctl_trc     ! Print control for debbuging 
    4143 
    4244   IMPLICIT NONE 
     
    8183      ! 
    8284      INTEGER  ::   jk, jn   ! dummy loop indices 
    83       REAL(wp) ::   zfact            ! temporary scalar 
     85      REAL(wp) ::   zfact    ! local scalar 
    8486      CHARACTER (len=22) :: charout 
    8587      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   ztrdt    ! 4D workspace 
     
    99101      CALL lbc_lnk( tra(:,:,:,:), 'T', 1. )    
    100102 
    101       IF( ln_bdy )  CALL trc_bdy( kt ) 
     103      IF( ln_bdy )   CALL trc_bdy( kt ) 
    102104 
    103105      IF( l_trdtrc )  THEN             ! trends: store now fields before the Asselin filter application 
    104106         ALLOCATE( ztrdt(jpi,jpj,jpk,jptra) ) 
    105          ztrdt(:,:,:,:)  = trn(:,:,:,:) 
     107         ztrdt(:,:,:,:) = trn(:,:,:,:) 
    106108      ENDIF 
    107109      !                                ! Leap-Frog + Asselin filter time stepping 
    108       IF( (neuler == 0 .AND. kt == nittrc000) .OR. ln_top_euler ) THEN    ! Euler time-stepping (only swap) 
     110      IF( l_1st_euler .OR. ln_top_euler ) THEN    ! Euler time-stepping (only swap) 
    109111         DO jn = 1, jptra 
    110112            DO jk = 1, jpkm1 
     
    208210                  ztc_f  = ztc_n  + atfp * ztc_d 
    209211                  ! 
    210                   IF( .NOT. ln_linssh .AND. jk == mikt(ji,jj) ) THEN           ! first level  
     212                  IF( .NOT. ln_linssh .AND. jk == mikt(ji,jj) ) THEN           ! top ocean level  
    211213                     ze3t_f = ze3t_f - rfact2 * ( emp_b(ji,jj)      - emp(ji,jj)   )  
    212214                     ztc_f  = ztc_f  - rfact1 * ( sbc_trc(ji,jj,jn) - sbc_trc_b(ji,jj,jn) ) 
    213215                  ENDIF 
    214  
    215                   ze3t_f = 1.e0 / ze3t_f 
    216                   trb(ji,jj,jk,jn) = ztc_f * ze3t_f       ! ptb <-- ptn filtered 
     216                  ! 
     217                  trb(ji,jj,jk,jn) = ztc_f / ze3t_f       ! ptb <-- ptn filtered 
    217218                  trn(ji,jj,jk,jn) = tra(ji,jj,jk,jn)     ! ptn <-- pta 
    218                   ! 
    219219               END DO 
    220220            END DO 
Note: See TracChangeset for help on using the changeset viewer.