Changeset 14789 for NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/TOP/TRP/trcatf.F90
- Timestamp:
- 2021-05-05T13:18:04+02:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev _r12970_AGRIF_CMEMSext/AGRIF5 ^/vendors/AGRIF/dev@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 ^/vendors/PPR@HEAD ext/PPR 8 9 9 10 # SETTE 10 ^/utils/CI/sette@1 3559sette11 ^/utils/CI/sette@14244 sette
-
- Property svn:externals
-
NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/TOP/TRP/trcatf.F90
r13295 r14789 25 25 !! 'key_top' TOP models 26 26 !!---------------------------------------------------------------------- 27 !! trc_atf : time stepping on passive tracers 28 !!---------------------------------------------------------------------- 29 USE oce_trc ! ocean dynamics and tracers variables 30 USE trc ! ocean passive tracers variables 27 !! trc_atf : time stepping on passive tracers 28 !!---------------------------------------------------------------------- 29 USE par_trc ! need jptra, number of passive tracers 30 USE oce_trc ! ocean dynamics and tracers variables 31 USE trc ! ocean passive tracers variables 31 32 USE trd_oce 32 33 USE trdtra 33 # if defined key_qco 34 USE traatf qco34 # if defined key_qco || defined key_linssh 35 USE traatf_qco ! tracer : Asselin filter (qco) 35 36 # else 36 USE traatf 37 USE traatf ! tracer : Asselin filter (vvl) 37 38 # endif 38 39 USE bdy_oce , ONLY: ln_bdy 39 USE trcbdy 40 USE trcbdy ! BDY open boundaries 40 41 # if defined key_agrif 41 42 USE agrif_top_interp 42 43 # endif 43 44 ! 44 USE lbclnk 45 USE prtctl 45 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 46 USE prtctl ! Print control for debbuging 46 47 47 48 IMPLICIT NONE … … 102 103 #endif 103 104 ! Update after tracer on domain lateral boundaries 104 CALL lbc_lnk( 'trcatf', ptr(:,:,:,:,Kaa), 'T', 1. )105 CALL lbc_lnk( 'trcatf', ptr(:,:,:,:,Kaa), 'T', 1._wp ) 105 106 106 107 IF( ln_bdy ) CALL trc_bdy( kt, Kbb, Kmm, Kaa ) … … 156 157 ELSE 157 158 IF( .NOT. l_offline ) THEN ! Leap-Frog + Asselin filter time stepping 158 # if defined key_qco 159 # if defined key_qco || defined key_linssh 159 160 IF( ln_linssh ) THEN ; CALL tra_atf_fix_lf( kt, Kbb, Kmm, Kaa, nittrc000, 'TRC', ptr, jptra ) ! linear ssh 160 161 ELSE ; CALL tra_atf_qco_lf( kt, Kbb, Kmm, Kaa, nittrc000, rn_Dt, 'TRC', ptr, sbc_trc, sbc_trc_b, jptra ) ! non-linear ssh 161 162 # else 162 IF( ln_linssh ) THEN ; CALL tra_atf_fix( kt, Kbb, Kmm, Kaa, nittrc000, 'TRC', ptr, jptra ) ! linear ssh163 ELSE ; CALL tra_atf_vvl( kt, Kbb, Kmm, Kaa, nittrc000, rn_Dt, 'TRC', ptr, sbc_trc, sbc_trc_b, jptra ) ! non-linear ssh163 IF( ln_linssh ) THEN ; CALL tra_atf_fix( kt, Kbb, Kmm, Kaa, nittrc000, 'TRC', ptr, jptra ) ! linear ssh 164 ELSE ; CALL tra_atf_vvl( kt, Kbb, Kmm, Kaa, nittrc000, rn_Dt, 'TRC', ptr, sbc_trc, sbc_trc_b, jptra ) ! non-linear ssh 164 165 # endif 165 166 ENDIF … … 168 169 ENDIF 169 170 ! 170 CALL lbc_lnk _multi( 'trcatf', ptr(:,:,:,:,Kmm), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp )171 CALL lbc_lnk( 'trcatf', ptr(:,:,:,:,Kmm), 'T', 1._wp ) 171 172 ENDIF 172 173 ! … … 192 193 END SUBROUTINE trc_atf 193 194 194 # if ! defined key_qco195 # if defined key_qco || defined key_linssh 195 196 SUBROUTINE trc_atf_off( kt, Kbb, Kmm, Kaa, ptr ) 196 197 !!---------------------------------------------------------------------- … … 224 225 INTEGER :: ji, jj, jk, jn ! dummy loop indices 225 226 REAL(wp) :: ztc_a , ztc_n , ztc_b , ztc_f , ztc_d ! local scalar 226 REAL(wp) :: ze3t_b, ze3t_n, ze3t_a, ze3t_f , ze3t_d! - -227 REAL(wp) :: ze3t_b, ze3t_n, ze3t_a, ze3t_f ! - - 227 228 !!---------------------------------------------------------------------- 228 229 ! … … 240 241 DO jn = 1, jptra 241 242 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 242 ze3t_b = e3t(ji,jj,jk,Kbb)243 ze3t_n = e3t(ji,jj,jk,Kmm)244 ze3t_a = e3t(ji,jj,jk,Kaa)243 ze3t_b = 1._wp + r3t(ji,jj,Kbb) * tmask(ji,jj,jk) 244 ze3t_n = 1._wp + r3t(ji,jj,Kmm) * tmask(ji,jj,jk) 245 ze3t_a = 1._wp + r3t(ji,jj,Kaa) * tmask(ji,jj,jk) 245 246 ! ! tracer content at Before, now and after 246 ztc_b = ptr(ji,jj,jk,jn,Kbb) 247 ztc_n = ptr(ji,jj,jk,jn,Kmm) 247 ztc_b = ptr(ji,jj,jk,jn,Kbb) * ze3t_b 248 ztc_n = ptr(ji,jj,jk,jn,Kmm) * ze3t_n 248 249 ztc_a = ptr(ji,jj,jk,jn,Kaa) * ze3t_a 249 250 ! 250 ze3t_d = ze3t_a - 2. * ze3t_n + ze3t_b251 251 ztc_d = ztc_a - 2. * ztc_n + ztc_b 252 252 ! 253 ze3t_f = ze3t_n + rn_atfp * ze3t_d253 ze3t_f = 1._wp + r3t_f(ji,jj)*tmask(ji,jj,jk) 254 254 ztc_f = ztc_n + rn_atfp * ztc_d 255 255 ! 256 256 IF( .NOT. ln_linssh .AND. jk == mikt(ji,jj) ) THEN ! first level 257 ze3t_f = ze3t_f - rfact2 * ( emp_b(ji,jj) - emp(ji,jj) )258 257 ztc_f = ztc_f - rfact1 * ( sbc_trc(ji,jj,jn) - sbc_trc_b(ji,jj,jn) ) 259 258 ENDIF … … 299 298 INTEGER :: ji, jj, jk, jn ! dummy loop indices 300 299 REAL(wp) :: ztc_a , ztc_n , ztc_b , ztc_f , ztc_d ! local scalar 301 REAL(wp) :: ze3t_b, ze3t_n, ze3t_a, ze3t_f 300 REAL(wp) :: ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d ! - - 302 301 !!---------------------------------------------------------------------- 303 302 ! … … 315 314 DO jn = 1, jptra 316 315 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 317 ze3t_b = 1._wp + r3t(ji,jj,Kbb) * tmask(ji,jj,jk)318 ze3t_n = 1._wp + r3t(ji,jj,Kmm) * tmask(ji,jj,jk)319 ze3t_a = 1._wp + r3t(ji,jj,Kaa) * tmask(ji,jj,jk)316 ze3t_b = e3t(ji,jj,jk,Kbb) 317 ze3t_n = e3t(ji,jj,jk,Kmm) 318 ze3t_a = e3t(ji,jj,jk,Kaa) 320 319 ! ! tracer content at Before, now and after 321 ztc_b = ptr(ji,jj,jk,jn,Kbb) * ze3t_b322 ztc_n = ptr(ji,jj,jk,jn,Kmm) * ze3t_n320 ztc_b = ptr(ji,jj,jk,jn,Kbb) * ze3t_b 321 ztc_n = ptr(ji,jj,jk,jn,Kmm) * ze3t_n 323 322 ztc_a = ptr(ji,jj,jk,jn,Kaa) * ze3t_a 324 323 ! 324 ze3t_d = ze3t_a - 2. * ze3t_n + ze3t_b 325 325 ztc_d = ztc_a - 2. * ztc_n + ztc_b 326 326 ! 327 ze3t_f = 1._wp + r3t_f(ji,jj)*tmask(ji,jj,jk)327 ze3t_f = ze3t_n + rn_atfp * ze3t_d 328 328 ztc_f = ztc_n + rn_atfp * ztc_d 329 329 ! 330 330 IF( .NOT. ln_linssh .AND. jk == mikt(ji,jj) ) THEN ! first level 331 ze3t_f = ze3t_f - rfact2 * ( emp_b(ji,jj) - emp(ji,jj) ) 331 332 ztc_f = ztc_f - rfact1 * ( sbc_trc(ji,jj,jn) - sbc_trc_b(ji,jj,jn) ) 332 333 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.