- Timestamp:
- 2018-06-30T12:51:02+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/TRP/trcnxt.F90
r9598 r9863 24 24 !! 'key_top' TOP models 25 25 !!---------------------------------------------------------------------- 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 35 37 # if defined key_agrif 36 38 USE agrif_top_interp 37 39 # endif 38 40 ! 39 USE lbclnk 40 USE prtctl_trc 41 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 42 USE prtctl_trc ! Print control for debbuging 41 43 42 44 IMPLICIT NONE … … 81 83 ! 82 84 INTEGER :: jk, jn ! dummy loop indices 83 REAL(wp) :: zfact ! temporaryscalar85 REAL(wp) :: zfact ! local scalar 84 86 CHARACTER (len=22) :: charout 85 87 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztrdt ! 4D workspace … … 99 101 CALL lbc_lnk( tra(:,:,:,:), 'T', 1. ) 100 102 101 IF( ln_bdy ) CALL trc_bdy( kt )103 IF( ln_bdy ) CALL trc_bdy( kt ) 102 104 103 105 IF( l_trdtrc ) THEN ! trends: store now fields before the Asselin filter application 104 106 ALLOCATE( ztrdt(jpi,jpj,jpk,jptra) ) 105 ztrdt(:,:,:,:) 107 ztrdt(:,:,:,:) = trn(:,:,:,:) 106 108 ENDIF 107 109 ! ! 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) 109 111 DO jn = 1, jptra 110 112 DO jk = 1, jpkm1 … … 208 210 ztc_f = ztc_n + atfp * ztc_d 209 211 ! 210 IF( .NOT. ln_linssh .AND. jk == mikt(ji,jj) ) THEN ! firstlevel212 IF( .NOT. ln_linssh .AND. jk == mikt(ji,jj) ) THEN ! top ocean level 211 213 ze3t_f = ze3t_f - rfact2 * ( emp_b(ji,jj) - emp(ji,jj) ) 212 214 ztc_f = ztc_f - rfact1 * ( sbc_trc(ji,jj,jn) - sbc_trc_b(ji,jj,jn) ) 213 215 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 217 218 trn(ji,jj,jk,jn) = tra(ji,jj,jk,jn) ! ptn <-- pta 218 !219 219 END DO 220 220 END DO
Note: See TracChangeset
for help on using the changeset viewer.